javascript - 将某些目录中的代码提取到 webpack 4 中的单独包中
问题描述
我有以下设置。我有一堆入口点(都有自己的 html 页面)。所有条目都位于/src/entry/
. 外部代码位于/node_modules
. 而且我还有一堆条目使用的内部代码。这位于/src/node_modules/
我的案例中。
现在为了获得最佳的长期缓存,我想将所有内容/node_modules
放在它自己的包中vendors
,并将所有内容src/node_modules
放在一个名为libs
.
如何使用 SplitChunksPlugin 进行设置?
我尝试了以下方法:
const optimization = {
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: "vendors",
chunks: "all"
},
lib: {
test: /[\\/]src[\\/]node_modules[\\/]/,
name: "libs",
chunks: "all"
}
}
},
runtimeChunk: "single"
};
但它把所有东西都放在了供应商捆绑包中。
解决方案
该vendor
块的test
正则表达式正在查找这两个文件夹,因为该名称node_modules
被使用了两次——一次用于 NPM 安装,一次用于您在源代码中使用的库。
如果您可以重命名/src/node_modules/
并/src/lib/
更新您的vendor
块正则表达式,您可以通过这种方式将其拆分。
如果文件夹重命名不可行,您还可以更改vendor
正则表达式测试以排除匹配的文件夹。/src
推荐阅读
- java - 如何在java中返回用户定义的对象?
- node.js - 身份验证后如何从后端重定向到前端
- java - JAXB 注释在axis2 运行时的行为如何?
- vba - 在 Outlook 中附加 Pdf 文件附件的运行时错误
- anylogic - 访问 Seize 块中的队列优先级
- python - docplex 问题:TypeError:无法使用 == 来测试表达式是否相等,请尝试使用 Python is 运算符或方法等于:
- regex - Powershell:删除2个字符串之间的所有内容
- label - 使用偏移量 -OpenLayers 将标签/文本分配给图标
- plsql - 如何将 Oralce 语言环境配置为在开发和集成之间相同
- c++ - 使用 CUDA 文件构建 R 包时出错