使用 gulp-babel 忽略转译 nodejs 应用程序不起作用

Transpiling nodejs app with gulp-babel ignore doesn't work

我在 gulp 中创建了一个任务来转换我的 nodejs 应用程序:

gulp.task('babel', function() {

    return gulp.src('./**/*.js')
        .pipe(babel({
            ignore: [
                './gulpfile.js',
                './node_modules/**/*.js',
            ]
        }))
        .pipe(gulp.dest('./dist'));
});

问题是在转译过程中,dist 文件夹中创建了 node_modules 文件夹和 gulp 文件。知道为什么吗?

gulp文件

var gulp = require('gulp');
var babel = require('gulp-babel');
var nodemon = require('gulp-nodemon');

gulp.task('babel', function() {

    return gulp.src([
            './**/*.js',
            './server/config/manifest.' + (process.env['NODE_ENV'] || 'development') + '.json',
            '!./gulpfile.js',
            '!./node_modules/**/*.js'
        ])
        .pipe(babel())
        .pipe(gulp.dest('./dist'));
});

gulp.task('start', ['babel'], function() {

    nodemon({
        script: './dist/server.js',
        ext: 'js jsx',
        tasks: ['babel']
    });
});

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

Babel 的 ignore 只是意味着它们不会被转换,但是使用那个配置 gulp 仍然会通过管道传递它们。您可能希望 ignore 选项中的这些模式到 gulp.src.

编辑:实际上我忘记了通过将 ignore 选项传递给 gulp.src 来排除这些模式的能力取决于您的 glob 版本的最新程度(请参阅我的 bug report).另一种选择是 ! 否定模式 @raina77ow 建议。