Webpack 在Laravel Mix中,是否可以提取除软件包列表之外的所有供应商?

Webpack 在Laravel Mix中,是否可以提取除软件包列表之外的所有供应商?,webpack,laravel-mix,code-splitting-async,Webpack,Laravel Mix,Code Splitting Async,通常在Laravel Mix中,我们可以使用 mix.extract() 或者使用mix.extract(['vue','lodash','axios'])提取供应商列表。是否有办法提取除少数供应商之外的所有供应商 例如,当需要导入动态块时,我加载Pusher、Echo、Chart.js等。但是,它们仍然被添加到我的vendor.js文件中 此外,在提取特定供应商的列表时,由于在Laravel Mix中的Extract.js组件中插入console.log,我最终得到了大约20个额外的区块,因为

通常在Laravel Mix中,我们可以使用
mix.extract()
或者使用
mix.extract(['vue','lodash','axios'])提取供应商列表
。是否有办法提取除少数供应商之外的所有供应商

例如,当需要导入动态块时,我加载Pusher、Echo、Chart.js等。但是,它们仍然被添加到我的
vendor.js
文件中


此外,在提取特定供应商的列表时,由于在Laravel Mix中的Extract.js组件中插入console.log,我最终得到了大约20个额外的区块,因为共享了名为
vendors~js/mychunk1~js/mychunk2~js/mychunk3
的通用代码,我发现在我当前的设置中,插件只是在网页包配置的优化字段中插入这些行

优化:{
runtimeChunk:{name:'/js/manifest'},
分割块:{
缓存组:{},
块:“全部”,
名称:'/js/vendor',
},
},
为了过滤供应商文件中的内容,我必须编辑如下拆分块:

splitchunk:{
缓存组:{
供应商:{
//将名称和块移到此处
名称:“js/vendor”,
块:“全部”,
//您可以传递一个RegExp进行测试,也可以传递一个函数
测试(模块/*,块*/){
if(module.context){
//需要节点单元模块
const isNodeModule=module.context.includes('node_modules');
//但仅限于特定的节点单元模块
常数nodesToBundle=[
“vue”,
“lodash”,
“axios”,
].some(str=>module.context.includes(str));
if(isNodeModule&&nodesToBundle){
返回true;
}
}
返回false;
},
}
},
//从这里删除了名称和块
//块:“全部”,
//名称:'/js/vendor',
},
在这些更改之后,我仍然有你正在经历的奇怪的命名,但由于这一点,我发现我可以通过添加以下内容来删除此行为:

default:false,//禁用默认组
供应商:false,//禁用供应商组
到CacheGroups字段

因此,我完整的webpackConfig函数参数是:

.webpackConfig({
输出:{
//使用其他设置
},
优化:{
runtimeChunk:{name:'/js/manifest'},
分割块:{
缓存组:{
默认值:false,
供应商:错,
供应商:{
名称:“js/vendor”,
块:“全部”,
//您可以传递一个RegExp进行测试,也可以传递一个函数
测试(模块/*,块*/){
if(module.context){
//需要节点单元模块
const isNodeModule=module.context.includes('node_modules');
//但仅限于特定的节点单元模块
常数nodesToBundle=[
“vue”,
“lodash”,
“axios”,
].some(str=>module.context.includes(str));
if(isNodeModule&&nodesToBundle){
返回true;
}
}
返回false;
},
}
},
},
}
})

还要确保删除mix文件中的extract()调用。

此处相同。另外,我的组件中的一些代码会被供应商使用,我不知道如何防止这种情况发生。无论如何,我的主要问题是关于Intl软件包,我只使用它作为一个polyfill,但它显然被服务于所有页面