2

我正在通过 gulp使用babelifyand进行 JS 缩小:babili

// 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 缩小?

4

2 回答 2

2

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 的env选项(不要与 混淆babel-preset-env),它使用与定义的值匹配的配置,BABEL_ENV或者NODE_ENV如果BABEL_ENV定义了 no。这种方法在babel-preset-minify-Usage中展示。

{
  "env": {
    "production": {
      "presets": ["minify"]
    }
  }
}

env选项并不是真正推荐的,主要是因为.babelrc是 JSON 并且没有定义条件配置的好方法。这将在 Babel 7 中发生变化,它允许.babelrc.js您拥有 Node.js 的全部功能的配置,这意味着您可以做与 Gulp 相同的事情。

于 2017-10-02T15:33:06.507 回答
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 中添加 option- 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'));
});
于 2018-12-18T15:42:45.303 回答