godbasin / wxapp-typescript-demo

小程序 typescript 最佳实践 demo
MIT License
195 stars 52 forks source link

关于编译路径的问题,好像是个BUG? #5

Closed w0330t closed 5 years ago

w0330t commented 5 years ago

默认的gulpfile下,var dist = __dirname + "/dist";路径只有一部分生效,更改之后,所有的js文件编译之后仍然在/项目名/dist目录下,我班门弄斧的把文件所有使用"dist"的参数改为了dist,然而npm文件依然没有复制过去……请问应该怎么修改?

godbasin commented 5 years ago

不大清楚你的意思,麻烦提供运行环境、代码实例。

w0330t commented 5 years ago

Windows 10操作系统下 对本项目下的gulpfile.js文件 更改dist的路径配置,var dist = __dirname + "/dist";var dist = "C:/dist"; 然后使用终端命令npm run dev,在"C:/dist"下会生成如下文件:

│  app.json
│  app.wxss
│
├─assets
│  └─images
│      └─icon
│              search.png
│
├─components
│  ├─search
│  │      search.json
│  │      search.wxml
│  │      search.wxss
│  │
│  └─watch
│          watch.json
│          watch.wxml
│          watch.wxss
│
└─pages
    ├─index
    │      index.json
    │      index.wxml
    │      index.wxss
    │
    ├─logs
    │      logs.json
    │      logs.wxml
    │      logs.wxss
    │
    └─watch
            watch.json
            watch.wxml
            watch.wxss

里面没有任何一个js文件,而js文件全部都在/项目名/dist里面

│  app.js
│  app.json
│  app.wxss
│
├─api
│      common.js
│      login.js
│
├─assets
│  └─images
│      └─icon
│              search.png
│
├─components
│  ├─search
│  │      search.js
│  │      search.json
│  │      search.wxml
│  │      search.wxss
│  │
│  └─watch
│          watch.js
│          watch.json
│          watch.wxml
│          watch.wxss
│
├─config
│      cgi-config.js
│      global-config.js
│
├─npm
│  ├─miniprogram-computed
│  │      index.js
│  │
│  └─miniprogram-watch
│          index.js
│
├─pages
│  ├─index
│  │      index.js
│  │      index.json
│  │      index.wxml
│  │      index.wxss
│  │
│  ├─logs
│  │      logs.js
│  │      logs.json
│  │      logs.wxml
│  │      logs.wxss
│  │
│  └─watch
│          watch.js
│          watch.json
│          watch.wxml
│          watch.wxss
│
└─utils
    │  util.js
    │
    └─request
            check-session.js
            index.js

gulpfile.zip 附上更改的gulpfile.js文件。

godbasin commented 5 years ago

js文件走的npm打包,你需要自行修改下npm函数相关的路径

w0330t commented 5 years ago

我更改了gulp.task("npm"gulp.task(”tsCompile“内的相关路径,编译后的/mpn文件夹就丢失了,我也不知道怎么下手了,只知道可能和您写的function npm(options)有关…… 附上更改后的代码 gulpfile.zip

godbasin commented 5 years ago

其实不大明白你要改路径是因为什么,能把背景说清楚一些么

w0330t commented 5 years ago

因为某些原因我需要把调试机和开发机分离 我本来在开发上做了一个共享,由调试机调用,结果调试机的微信IDE直接报错,打不开项目。 然后我只能在调试机上做了共享给开发机。要么就改gulp的代码把编译好的代码直接发送到那个盘符里,要么手动每次编译之后复制一份过去q_q

godbasin commented 5 years ago

写个脚本把dist丢过去不就好了?

w0330t commented 5 years ago

可以在gulp上解决的东西我为啥要另外弄一个脚本……虽然也很简单

godbasin commented 5 years ago

gulp上你也可以写个脚本将生成的东西转移..

w0330t commented 5 years ago

又发现一个BUG,估计是gulp4的api改过了

gulp.task("watch", () => {
  gulp.watch(tsPath, gulp.series("tsCompile"));
  var watcher = gulp.watch(copyPath, gulp.series("copyChange"));
  // gulp.watch(nodeModulesCopyPath, gulp.series("copyNodeModulesChange"));
  gulp.watch(watchLessPath, gulp.series("less")); //Change
  watcher.on("change", function(event) {
    if (event.type === "deleted") {
      var filepath = event.path;
      var filePathFromSrc = path.relative(path.resolve("src"), filepath);
      // Concatenating the 'build' absolute path used by gulp.dest in the scripts task
      var destFilePath = path.resolve("dist", filePathFromSrc);
      // console.log({filepath, filePathFromSrc, destFilePath})
      del.sync(destFilePath);
    }
  });
});

这段代码里面的删除代码是不会运行的

watcher.on("change", function(event) {
    if (event.type === "deleted") {

根据官方文档的说法,这个位置应该是用“unlink”而不是用“change”,同时第一个参数直接就是删除文件的path,这个path是一个string。他们还写了一个示例

watcher.on('unlink', function(path, stats) {
       console.log(`File ${path} was removed`);
});
godbasin commented 5 years ago

已修复,更改gulpfile.js中的builtPath即可。