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钩子下,将这些资产合并并添加到构建中作为两个新资产的过程非常简单