Babel.js 为什么排除node_modules被巴别塔传播?

jrcvhitl  于 2022-12-16  发布在  Babel
关注(0)|答案(1)|浏览(193)

我在一个项目中使用Webpack和Babel。我安装babel-loader是为了将Babel包含在我的构建过程中。我在网上看到的大多数babel-loader示例都在webpack配置文件中使用了以下配置:

module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: ['babel-loader']
      }
    ]
  }

我的问题是,我们为什么要排除node_modules,不让它被Babel转换?我知道文档中说排除它会加快捆绑过程。但是,如果node_modules包含我的应用运行所需的依赖项,那么Babel不也应该转换这些依赖项吗?假设我想转换我的应用以使用ES5代码,而node_modules包含使用ES6+的库,看起来node_modules也应该包含在Babel处理的文件中。

ycggw6v2

ycggw6v21#

node_modules内部的包可能已经构建、缩小并针对ES3,因此Babel不需要进一步翻译它们。
如果你导入一个包,它在ES6中,Webpack会自动在内部构建一个依赖关系图,并会检测到这样的包,然后使用Babel将其传送到你想要的目标(ES5)。
您不希望让Babel传输位于node_modules文件夹中的所有文件(可能有数千个文件),这会占用大量资源,并且需要更长的时间。

相关问题