Babel.js 将node_modules中的特定包传输到es5

yc0p9oo0  于 2023-09-28  发布在  Babel
关注(0)|答案(1)|浏览(178)

我有一个Angular 12(兼容IE)项目,其中node_modules中的一些依赖项不是es5。
在我的理解中,tsc不对node_modules做任何事情,只是从angular.json中存在的main选项开始计算。
在寻找如何做到这一点的选项时,我看到了很多使用babel的建议,我不确定
1.如果我把巴别塔和tsc混在一起。或者我废除tsc,只通过自定义webpack使用babel?
1.据我所知,在所有的转译中,转译的代码都会转到Output目录,但是因为我需要在node_modules中转译js,所以这些文件的输出应该只是替换它们在node_modules中的原始文件?我们如何做到这一点?

bd1hkmkf

bd1hkmkf1#

您可以在tsconfig中添加include中的特定覆盖。

"include": [
  "src/**/*",
  "node_modules/foo/index.ts",
  "node_modules/bar/quux.baz.mjs"
]

但是当你为客户端捆绑时,通常你不会将依赖项作为单独的脚本包含在内,你会让你的捆绑者弄清楚把它们放在哪里。您没有提到您目前是如何捆绑的,但是如果您有allowJS: true,您仍然不需要Babel-例如,对Webpack配置的相关更改将是

{
  test: /\.(js|ts)$/,
  exclude: /node_modules\/(?!(foo|bar)\/).*/, // this line

但是,如果您想要自动polyfill,带有Browserslist字符串的@babel/preset-env可能是最佳选择。

相关问题