Как отключить минификацию вавилона, когда он не работает?

Я использую 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'));
});
Другие вопросы по тегам