Можно ли запустить сборку в browserify/babel для определенной цели браузера?

Глядя на такие таблицы: http://kangax.github.io/compat-table/es6/

Похоже, что Chrome действительно близок к поддержке большого количества ES6, а это означает (на мой взгляд), что я должен иметь возможность отказаться от следующего во время разработки:

var babelifyOptions = {
    presets: ['es2015', 'stage-0', 'react'],
    extensions: ['.js', '.jsx']
};

при использовании browserify:

browserify(browserifyOptions)
    .transform(babelify.configure(babelifyOptions))
    .bundle()
    .pipe(source('app.js'))
    .pipe(buffer())
    .pipe(gulp.dest('./dist/js'));

И с этим мы надеемся ускорить время сборки. При строительстве для производства, очевидно, все еще требуется транспиляция.

Однако, когда я пропускаю пресеты es2015, browserify дросселирует сборку, не понимая таких вещей, как ..., Это имеет смысл, но возможно ли запустить browserify, ориентируясь только на Chrome? (то есть разрешение токенов / операторов / функций, которые в настоящее время понимает Chrome).

1 ответ

Решение

Я не думаю browserify проблема, но ваша версия NodeJS. Я думаю, что NodeJS 6 был первым, кто по умолчанию поддерживал многие функции ES2015, но, в частности, он не поддерживает новую систему модулей ES. Есть несколько предустановок Babel, которые исправляют пропущенные вещи. Вот только список тех, которые я нашел в быстром поиске:

  • babel-preset-es2015-node6
  • babel-preset-node6
  • babel-preset-es2015-node
  • babel-preset-es6-node6

Примечание. Я не использовал ни одного из них, поэтому не могу дать вам рекомендации.

Другие вопросы по тегам