采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师我有一个疑问,是不是我理解错了。请问下老师如果我们把模块打包成esm的话,我们在业务中引用这个工程,此时我们一般babel 都会配置排除node module 。这样的话我理解我们打包出来的代码,这个库是不是就没有编译。
同学你好 说的没错 你的理解是正确的 对于只有 es modules 的模块(比如 lodash-es),如果使用 babel, 可以配置一下 ignore,让它进行编译 https://stackoverflow.com/questions/31822593/import-a-module-from-node-modules-with-babel-but-failed/31822668#31822668
但是由于现代的打包工具 webpack,vite,rollup 等,对 es modules 支持都已经非常完备,所以一般都不需要考虑这种问题,只有一些 node 端使用的工具,比如 jest,使用 lodash-es 的时候,需要进行一个ignore 的配置。
老师,那请问下简单来说。我们引用nodemodules中的esm模块的话。项目中的webpack,babel-loader需要加入include这个包是吗。但是比如我们平常使用element-plus之类的并不需要我们去修改babel配置呀。我还是有点不太理解。 简单来说如果我们使用webpack,然后在项目中使用babel-loader处理src下的代码,我们src中引用了node_modules中的esm模块。编译时候我认为babel应该默认是不会针对node_modules中的内容。也就是说库代码打包后仍然是esm模块。这不就应该报错了嘛
建议还是要对lib类库做bable的语法转化,然后app业务应用中可以自己引入polyfill。如果不做bable处理,那必须得告知用户,不然就是给用户埋坑。还有一种就是自己不写es6+的高级语法,那就不用转化了,这些语法可以用eslint来强制校验。
登录后可查看更多问答,登录/注册
设计,开发,测试,发布再到 CI/CD,从0到1造轮子
2.3k 9
1.1k 16
1.1k 12
1.4k 11
2.0k 11