我使用" 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:
我不想修改该第三方文件以使其严格模式编译。如何禁用该文件或其他类似文件的检查?
刚才由于那种文件而缩小了缩小...
我试过
安装"transform-remove-strict-mode"插件,然后执行
.pipe(babel({
"presets": ["env"],
"plugins": ["transform-remove-strict-mode"]
}))
我也试过了
.pipe(babel({
presets: [
["es2015", { "modules": false }]
]
}))
但输出仍然相同......
答案 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'))
});