webpack中使用babel的转换失败

问题:在项目中使用webpack打包的时候发现,业务由于引用了node_modules中的代码是es6的。此时无论如何配置webpack配置,都无法使引用的代码降级。

备注:业务其他代码已经降级成功,唯独引用node moudules的代码无法降级。

阅读 3.9k
3 个回答

在你的 webpack 配置中,babel-loader 的选项里将需要编译的包包含进来:

{
  test: /\.js$/,
  exclude: /node_modules\/(?!(ONE-MODULE|ANOTHER-ONE)\/).*/,
}

在rules写上 exclude: /node_modules/
{

    test: /\.js$/,
    exclude: /node_modules/
  }

感谢大家关注

在搜索了一下GitHub后发现,babel默认不转换node_moduel中的内容,要去掉这个配置,需要在babelrc中配置 ignore配置项

{
    "plugins": [
        "transform-runtime"
    ],
    "presets": ["es2015"],
    "ignore" : false
}

即可转换nodemodules中的内容。

题外话:babel官方不建议这种用法,因为node modules中暴露出来的代码,应该是立即可用的,不需要经过转换的,大家加入这条语句时可能需要小心点。

采纳的方案是较优方案,可以参考我采纳的那个方案

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题