gulp 和带有 gulp-live-server 的 babel

gulp and babel with gulp-live-server

我正在尝试用 ES6 编写一个快速服务器,我正在使用 Babel 进行转译,但我无法让它与 gulp-live-server 一起工作,因为我更改文件后无法正常重启

目前我有:

// gulpfile.babel.js

import gulp from 'gulp';
import gls from 'gulp-live-server';
import babel from 'gulp-babel';

gulp.task('transpile', ['clean:server'], () => {
  gulp.src(['server/**/*.js'])
  .pipe(babel())
  .pipe(gulp.dest('dist'));
});

gulp.task('server', ['transpile'], () => {
  var server = gls.new('dist/app.js');
  server.start();      
  gulp.watch(['server/**/*.js'], ['transpile']);
  gulp.watch('dist/app.js', server.start.bind(server)); //error
});

但它不起作用,此代码 returns 一个 Gaze 错误:

internal/child_process.js:274
  var err = this._handle.spawn(options);
                         ^

TypeError: Bad argument
    at TypeError (native)
    at ChildProcess.spawn (internal/child_process.js:274:26)
    at exports.spawn (child_process.js:339:9)
    at Object.exports.start (/Users/oni/Documents/Projects/meanimo/node_modules/gulp-live-server/index.js:134:19)
    at Gaze.<anonymous> (/Users/oni/Documents/Projects/meanimo/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/index.js:18:14)
    at emitTwo (events.js:87:13)
    at Gaze.emit (events.js:172:7)
    at Gaze.emit (/Users/oni/Documents/Projects/meanimo/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/node_modules/gaze/lib/gaze.js:129:32)
    at /Users/oni/Documents/Projects/meanimo/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/node_modules/gaze/lib/gaze.js:415:16
    at StatWatcher._pollers.(anonymous function) (/Users/oni/Documents/Projects/meanimo/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/node_modules/gaze/lib/gaze.js:326:7)

错误与传递给 watch 的回调有关:server.start.bind(server),尽管这直接来自 gls 文档...

我没有看到我的更改反映出来,而且我似乎找不到任何关于将 gls 与转译器一起使用的文档。

请帮忙。

好的,我已经修复了它,我会分享给后代:出于某种原因,你必须将服务器重启函数包装在另一个函数上并自己执行。我认为这与 Gaze 包装子流程的方式有关。

gulp.watch('dist/app.js', () => server.start());

这样就可以了。