问题描述
我正在尝试在项目中使用@iconify-icons包,但是它使用es6模块,而我的babel配置拒绝对其进行转换,以使browserify可以正常使用。这是我使用browserify + babel构建的方式:
const babelConfig = {
presets: [
["@babel/preset-env"],["@babel/preset-react"],],ignore: [],};
gulp.task('browserify',(done) => {
return gulp.src('./resources/reactapp/app.js')
.pipe(bro({
transform: [
babelify.configure(babelConfig),]
}))
});
但是,在这种情况下,当我尝试从@ iconify-icons导入模块时,从browserify出现以下错误:
/node_modules/@iconify-icons/mdi-light/upload.js:6
export default data;
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'
对我来说,Babel在将文件发送给browserify之前无法正确转换文件(该文件只能处理es5语法)。对于babel 6的建议解决方案是在babel config中使用global:true,但是该选项在babel 7中不存在。我猜想babel忽略了node_modules,即使我将ignore设置为一个空列表。
解决方法
万一有些可怜的人也发现自己在这里:global是作为转换属性传递的属性。
gulp.task('browserify',(done) => {
return gulp.src('./resources/reactapp/app.js')
.pipe(bro({
transform: [
[babelify.configure(babelConfig),{global:true}]
]
}))
});