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