有几个项目使用了 es6 + babelify(babel) + gulp 的发布工具,一开始用着还挺好,后来手贱 npm outdated 并升级了几个插件以后,就嗝屁了,编译时提示错误:
‘import’ and ‘export’ may appear only with ‘sourceType: module’
如果把 babelify 降级使用倒是可以正常,但是作为一个追新党不能忍,最后通过不懈的搜索终于发现了问题的所在,原来是 babel 升级为 6.0 后,对 es6 的支持从 core 里面分离开来,需要单独安装插件 babel-preset-es2015 和 babel-preset-react,并进行相关配置。安装方法如下:
cd path/to/project
npm i –save-dev babelify babel-preset-es2015 babel-preset-react
gulpfile.js 的 transform 中需要添加如下配置(browserify 为例):
.transform(‘babelify’, {presets: [“es2015”, “react”]})
详细代码及插件结构参见:package.json, gulpfile.js