我正在使用babelify
和babili
进行JS缩小,通过gulp:
// Now run the watchifys function for this bundle
watchifysForBundle[jsBundle]
// Note: we don't use any babel presets - instead we just write code in what evergreen browsers support
.transform(babelify, {
presets: ['babel-preset-babili'],
ignore: ['buffer']
})
但是,我似乎无法找到如何通过选项来检查NODE_ENV并在不生产时禁用babeli
。 babelify docs似乎没有帮助,即使有这个常见的用例。
如何在不投入生产时禁用babelify缩小?
答案 0 :(得分:2)
Babili已被弃用,并已重命名为babel-minify
,因此您应该使用它。
npm install babel-preset-minify --save-dev
要禁用开发中的缩小功能,您只需使用babel-preset-minify
(或babel-preset-babili
即可)。当您使用Gulp时,您可以使用Node.js提供的所有内容来决定您要包含哪些预设,这意味着您可以检查process.env.NODE_ENV
并决定是否要包含{{1}预设。
minify
另一种方法是使用Babel's env
option(不要与babel-preset-env
混淆),如果没有{watchifysForBundle[jsBundle]
.transform(babelify, {
presets: process.env.NODE_ENV === 'production' ? ['minify'] : [],
ignore: ['buffer']
})
,则会使用与BABEL_ENV
或NODE_ENV
的值匹配的配置1}}已定义。这种方法显示在babel-preset-minify
- Usage。
BABEL_ENV
{
"env": {
"production": {
"presets": ["minify"]
}
}
}
选项并不是真正推荐的,并且主要存在,因为env
是JSON,并且没有好的方法来定义条件配置。这将在Babel 7中发生变化,它允许.babelrc
配置,你拥有Node.js的全部功能,这意味着你可以做与Gulp相同的事情。
答案 1 :(得分:0)
为避免缩小,请不要使用uglify
gulp.task('build:js', function(){
return browserify(
'test.js'
)
.transform('babelify',{
presets: ['@babel/preset-env']
})
.bundle()
.pipe(source('test.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('destpath'));
});
尝试---在babelify中添加选项-compact:false,global:true
gulp.task('build:js', function(){
return browserify(
'test.js'
)
.transform('babelify',{
presets: ['@babel/preset-env'],
compact: false,
global: true
})
.bundle()
.pipe(source('test.js'))
.pipe(buffer())
.pipe(gulp.dest('destpath'));
});