当项目使用多个npm包,如何解决babel代码重复问题?

比如项目依赖a b c 三个npm包(都是自己写的)
这3个包都是用的es6+编写的
每个包通过各自babel编译后生成dist/index文件作为包的入口,例如:

 "main": "dist/index.js",

那么每个index.js其实都包含了babel的添加的兼容代码(core3大概60k)

导致现在我的项目因这3个包多了60*3K代码,其中有60*2k代码是多余的

大神们,请问如何避免多增加120k代码???

阅读 3.1k
3 个回答

这其实牵扯到polyfill的2种构建方式,一种向你这样先构建再运行, 就会导致同一个语法编译了好几遍, 另外一种就是runtime,把需要ployfill的代码,一起打包到线上,那么需要兼容的语法会在执行的时候去运行polyfill这, 可能需要后面一种做法,比较简单的做法是在.babelrc里面的preset种声明useBuiltIns:usage

这样说的话, 这三个npm其实只需要有一个使用babel就行, 另外2可以过滤使用babel

项目依赖a b c 三个npm包不单独引入polyfill,由项目本身引入polyfill。
还有不用把整个polyfill都引入吧,实际需要什么就手动引入什么。

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