javascript - Browserify 和 Babel gulp 任务

标签 javascript gulp browserify babeljs

我想在我的 JavaScript 中同时使用 Browserify 和 Babel。为此,我创建了一个 gulp 任务

gulp.task('babel', function() {
    return gulp.src('_babel/*.js')
        .pipe(browserify({ insertGlobals : true }))
        .pipe(babel({ presets: ['es2015'] }))
        .pipe(gulp.dest('_dev/js'));
});

不幸的是,当我想在我的代码中使用 import 时,出现错误:

ParseError: 'import' and 'export' may only appear at the top level

我的主要js文件很简单:

import 'directives/toggleClass';

我猜是因为 Babel(而且是 use strict 加法),但我能做什么呢?

最佳答案

Babel 为 Browserify 维护一个官方转换称为 babelify如果使用 babel 和 browserify,则应尽可能使用它。

直接放弃babel的使用,将babelify作为browserify的转换插件。有许多方法可以配置 browserify,但在 package.json 中指定配置可能是最简单的。

"browserify": { 
  "transform": [["babelify", { "presets": ["es2015"] }]]
}

你的 gulp 任务将被简化

gulp.task('babel', function() {
    return gulp.src('_babel/*.js')
        .pipe(browserify({ insertGlobals : true }))
        .pipe(gulp.dest('_dev/js'));
});

Browserify 还公开了以编程方式执行此操作的方法,因此您将能够从 gulp 任务中配置 bundler (删除包配置,尽管使用包对此完全没问题),检查他们的文档和实验,我'我以前做过,但我已经很久没有使用 gulp(在这里使用 gulp 只是一个你不需要的复杂问题,但我希望你在构建管道的其他地方使用它可能更有帮助)。

关于javascript - Browserify 和 Babel gulp 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34276574/

相关文章:

javascript - 使用 Vue.JS/Axios 和来自第三方 API(基于 Django!)的数据填充 DOM

node.js - Gulp deprecated 返回 "` -- (empty)"on npm ls gulp-util

javascript - 为什么我不能要求构造函数并立即将其与 browserify 一起使用?

node.js - 运行 Gulp 任务时在插件 'gulp-browserify' 中获取 Js 语法错误

javascript - 选择其属性类似于兄弟组件属性 [选择器] 的元素

javascript - Angular ng-model 动态 getter 和 setter

node.js - gulp 插件循环遍历所有文件和文件夹

npm - Gulp 错误 : gulp. hasTask 不是函数

javascript - javascript中带有构造函数的对象

javascript - Chart.js 无法读取未定义的属性 'fontSize'