Как отключить минификацию вавилона, когда он не работает?
Я использую 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, похоже, не помогают, даже в этом случае.
Как я могу отключить минимизацию babelify, когда не в производстве?
1 ответ
Babili устарела и была переименована вbabel-minify
так что вы должны использовать это вместо этого.
npm install babel-preset-minify --save-dev
Чтобы отключить минификацию в разработке, вы просто не используете babel-preset-minify
(или же babel-preset-babili
в этом отношении). Поскольку вы используете Gulp, вы можете использовать все, что может предложить Node.js, чтобы решить, какие пресеты вы хотите включить, что означает, что вы можете проверить process.env.NODE_ENV
и решить, хотите ли вы включить minify
предустановки.
watchifysForBundle[jsBundle]
.transform(babelify, {
presets: process.env.NODE_ENV === 'production' ? ['minify'] : [],
ignore: ['buffer']
})
Альтернативой было бы использовать Babel's env
вариант(не путать сbabel-preset-env
), которая использует конфигурацию, которая соответствует значению BABEL_ENV
или же NODE_ENV
если нет BABEL_ENV
был определен. Этот подход показан в babel-preset-minify
- Использование.
{
"env": {
"production": {
"presets": ["minify"]
}
}
}
env
опция не очень рекомендуется и существует в основном потому что .babelrc
это JSON и нет хорошего способа определения условных конфигураций. Это изменится в Вавилоне 7, который позволяет .babelrc.js
config, где у вас есть все возможности Node.js, и это означает, что вы можете сделать то же самое, что и с Gulp.
Чтобы избежать минификации, не используйте 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'));
});
Вместо этого попробуйте --- добавив option- compact:false, global:true в babelify
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'));
});