Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 网页包确定资产条目_Javascript_Webpack_Webpack 5 - Fatal编程技术网

Javascript 网页包确定资产条目

Javascript 网页包确定资产条目,javascript,webpack,webpack-5,Javascript,Webpack,Webpack 5,使用插件获取特定的资产类型,并将它们合并到单个文件中。 我希望能够将资产整合到文件中,并根据该条目将其引入 entry.one.js - asset a - asset b entry.two.js - asset c - asset d 期望的结果是一个文件具有a/b资产,另一个文件具有c/d资产 有没有办法确定资产来自哪个分录 似乎Webpack的编译.processAssets和compliation.getAsset()并没有为您提供太多关于什么条目引入了什么资产的上下文 c

使用插件获取特定的资产类型,并将它们合并到单个文件中。 我希望能够将资产整合到文件中,并根据该条目将其引入

entry.one.js
 - asset a
 - asset b

entry.two.js
 - asset c
 - asset d
期望的结果是一个文件具有a/b资产,另一个文件具有c/d资产

有没有办法确定资产来自哪个分录

似乎Webpack的
编译.processAssets
compliation.getAsset()
并没有为您提供太多关于什么条目引入了什么资产的上下文

compilation.hooks.processAssets.tap(
{
名称:“BobRoss”,
阶段:汇编、过程、资产、阶段、分析,
额外资产:正确
},
(资产)=>{
用于(让我输入资产){
控制台日志(资产[i]);
log(compilation.getAsset(i));
}
}
)
我需要从另一个钩子位置查看资产吗?可能是从块或模块来确定这一点? 任何方向都会有帮助

谢谢

找到了。
compilation.chunkAsset.tap()
是一个有问题的钩子,在这里,您既可以收集块的资产,也可以确定该块是来自一个条目还是另一个条目:

const entries=compiler.options.entry;
//钩入汇编
compiler.hooks.compilation.tap({name:'BobRoss'},(compilation)=>{
//与资产挂钩
compilation.hooks.chunkAsset.tap('BobRoss',(chunk,filename)=>{
//仅处理作为条目文件的块
if(条目[path.basename(文件名)]{
//获取区块的资产路径。
常量路径=[…chunk.auxiliaryFiles];
//使用compilation.getAsset()将路径解析为资产对象
条目[path.basename(filename)].assets=Object.keys(path.map((n)=>compilation.getAsset(assets[n]));
}
});
});
将导致
条目
对象现在看起来像:

[{
条目1:{
导入:['path/to/entry/file/entry.one.js'],
资产:[资产,资产]
}
},{
条目2:{
导入:['path/to/entry/file/entry.one.js'],
资产:[资产,资产]
}
}]
从这里开始,在
compilation.processAssets
Webpack钩子下,将这些资产合并并添加到构建中作为两个新资产的过程非常简单