如果你在Webpack中有一个入口点,这不意味着Webpack只会打包和转换在那个入口点或required中的文件吗?这将自动否定或排除该入口点文件不是required的文件,对吗?为什么您仍然需要在加载程序配置中为node_modules中的文件提供一个排除选项?那不是required在你的入口点,所以我想webpack会完全忽略那些文件,还是有什么魔法我错过了?如果您没有排除选项,加载器会自动尝试转换项目中的所有文件吗?
发布于 2017-04-30 14:35:03
规则不包括任何文件,但它们将加载程序应用于满足条件的任何导入模块。规则上的exclude选项仅决定加载程序是否应该处理已经导入的文件。
node_modules通常被排除在.js规则之外,因为通常没有理由对它们进行转换,因为大多数包在发布之前已经被转移了。必须处理正在使用的整个node_modules,将增加构建时间相当大,即使它只是一个加载程序,至少它必须解析模块并返回一个有效的模块,这已经需要一些时间了。
exclude和include选项还有其他用途。例如,您可以决定在您的项目中使用CSS模块,但是您有一些第三方库,它依赖于具有常规(全局) CSS,并且很难更改使用CSS的代码。您可以定义以下规则:
{
// For all .css files except the ones in 3rd-party-lib
test: /\.css$/,
exclude: /3rd-party-lib/,
use: [
'style-loader',
{ loader: 'css-loader', options: { modules: true } }
]
},
{
// For all .css files in 3rd-party-lib
test: /\.css$/,
include: /3rd-party-lib/,
use: ['style-loader', 'css-loader']
}这可以是任何东西,从改变一个选项到使用完全不同的一组加载器,即使文件类型可能是相同的。
https://stackoverflow.com/questions/43701840
复制相似问题