如何在不生产时禁用babel缩小?

时间:2017-10-02 11:56:59

标签: babeljs minify babelify

我正在使用babelifybabili进行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并在不生产时禁用babelibabelify docs似乎没有帮助,即使有这个常见的用例。

如何在不投入生产时禁用babelify缩小?

2 个答案:

答案 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_ENVNODE_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'));
});