gulp-babel和严格的模式

时间:2017-05-09 13:49:15

标签: javascript gulp babeljs bundling-and-minification gulp-babel

我使用" gulp-babel"在uglifying我的js文件之前。该模块阻止缩小,因为第三方js脚本不是"严格模式" compilant。

// Include gulp
var gulp = require('gulp');
var baseDir = "./";
var jsources = [
    "sites/**/js/*.js",
    "!sites/**/js/*.min.js"
];

// Include Plugins
var jshint = require('gulp-jshint');
var babel = require('gulp-babel');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');


// Minify JS
gulp.task('scripts', function () {
    return gulp.src(jsources, { base: baseDir })
        .pipe(babel({
            presets: [
                ['env', { modules: false }]
            ]
        }))
        .pipe(uglify().on('error', function (e) { console.log(e); }))
        .pipe(rename({ suffix: '.min' }))
        .pipe(gulp.dest(baseDir));
});

结果我得到一个错误,因为js文件不是严格模式 compilant: enter image description here

我不想修改该第三方文件以使其严格模式编译。如何禁用该文件或其他类似文件的检查?

刚才由于那种文件而缩小了缩小...

我试过

  • 安装"transform-remove-strict-mode"插件,然后执行

    .pipe(babel({
        "presets": ["env"],
        "plugins": ["transform-remove-strict-mode"]
    }))
    
  • 我也试过了

    .pipe(babel({
        presets: [
            ["es2015", { "modules": false }]
        ]
    }))
    

但输出仍然相同......

3 个答案:

答案 0 :(得分:1)

使用ignore选项可避免转换第三方代码。 transform-remove-strict-mode插件不起作用,因为已经太晚了。

答案 1 :(得分:0)

尝试使用mangle选项gulp-uglify

uglify({ mangle: false })

答案 2 :(得分:0)

也许为时已晚,但您可以尝试这样做:

gulp.task('foo_task', () => {

gulp.src('foo/src/path')

    .pipe(concat('foo_file.js')
    .pipe(babel({ presets: ['env'] }))
    .pipe(uglify())
    .pipe(gulp.dest('foo/dist/path'))

    .pipe(concat([ '/dist/path', 'foo/src/path' ]))
    .pipe(uglify())
    .pipe(gulp.dest('foo/dist/path'))

});