2

我在丑化我的 js 文件之前使用了“gulp-babel”。该模块阻止缩小,因为第三方 js 脚本不是“严格模式”编译器。

// 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 文件不是严格模式编译器: 在此处输入图像描述

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

刚才由于那种文件,缩小被阻止了......

我试过了

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

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

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

但输出仍然是一样的......

4

3 回答 3

1

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

于 2017-05-09T17:10:14.180 回答
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'))

});
于 2017-12-07T17:10:52.533 回答
0

使用 mangle 选项尝试 gulp-uglify

uglify({ mangle: false })
于 2017-05-09T14:31:46.683 回答