【问题标题】:Transpile into ES 5 using babel by gulp-watch not working通过 gulp-watch 使用 babel 转换为 ES 5 不起作用
【发布时间】:2015-04-06 19:11:33
【问题描述】:

我是 gulp 的新手。我正在尝试设置手表,以便将我的 src/main.js 文件转换为 dist/main.js 文件。 Gulpfile 有如下代码

var gulp = require('gulp');
var babel = require('gulp-babel');
var watch = require('gulp-watch');
var paths = {
    babel:"src/main.js"
}

gulp.task('babel', function() {
    return gulp.src(paths.babel)
        .pipe(watch(paths.babel))
        .pipe(babel())
        .pipe(gulp.dest('dist/'))
})
gulp.task('default', ['babel']);

我的 dist/main.js 文件没有反映来自 src/main.js 的更改。任何关于我哪里出错的帮助将不胜感激。

【问题讨论】:

  • 我在节点 10.28 上使用 win 8.1

标签: javascript gulp ecmascript-6 gulp-watch babeljs


【解决方案1】:

尝试以下操作(并确保执行gulp watch,而不仅仅是gulp):

var gulp = require('gulp');
var babel = require('gulp-babel');
var watch = require('gulp-watch');
var rimraf = require('rimraf');
var paths = {
  babel: 'src/main.js',
  build: 'dist'
};

gulp.task('clean', function(cb) {
  rimraf(paths.build, cb);
});

gulp.task('build', ['clean'], function() {
  return gulp
    .src(paths.babel)
    .pipe(babel())
    .pipe(gulp.dest(paths.build));
});

gulp.task('watch', ['build'], function() {
  return watch(paths.babel, function() {
    gulp.start('build');
  });
});

gulp.task('default', ['build']);

如果这不起作用,那么您的 paths.babel 可能是错误的。尝试将其更改为src/**/*.js

【讨论】:

  • 你能解释一下'clean'任务的目的吗?
  • @sfletche 每次build 运行时,clean 任务都会销毁之前build 中的所有文件。这只是一种预防措施,以确保 dist 目录始终是“原始的”并且不包含一堆堆积的垃圾,如果您打算在 Web 上提供它,建议您这样做。
【解决方案2】:

babel 任务和 watch 任务是分开的:

var gulp = require('gulp');
var babel = require('gulp-babel');
var watch = require('gulp-watch');
var paths = {
    babel:"src/main.js"
};

gulp.task('watch', function() {
    gulp.watch(paths.babel, ['babel']);
});

gulp.task('babel', function() {
   gulp.src(paths.babel)
        .pipe(babel())
        .pipe(gulp.dest('dist/'));
});

gulp.task('default', ['watch']);

watch 将在检测到"src/main.js" 发生更改时执行babel

【讨论】:

  • 什么版本的 gulp? 3.4 有一个手表错误。尝试通配符路径babel: 'src/*.js'
  • 3.8.11。通天塔:5.0.9。尝试了无济于事。还尝试以管理员身份运行 webstorm cmd prompt 无济于事。 :(
  • 什么不起作用?你有任何错误吗?普通的 babel 任务有效吗?
  • 没有错误。 babel任务第一次工作,js文件改了就不行了。
  • 糟糕...使用gulp.watch(应该可以)而不是watch。这有什么不同吗?
猜你喜欢
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
相关资源
最近更新 更多