如何使用Webpack插件完全删除依赖项及其引用
我正在尝试编写一个网页包插件,该插件可以查找并完全删除遵循特定模式的依赖项(使用如何使用Webpack插件完全删除依赖项及其引用,webpack,webpack-plugin,Webpack,Webpack Plugin,我正在尝试编写一个网页包插件,该插件可以查找并完全删除遵循特定模式的依赖项(使用require或import导入的任何内容) 免责声明,我知道有,但有两个原因我不使用: 我不仅删除了导入,我还记住了我删除的内容,并将使用这些依赖项创建一个单独的包 更重要的是,我试图克隆那个插件并记住我删除的内容,但这会导致错误。让我解释一下 如果我查看,它将通过在beforesolve钩子中返回null来删除它们。但这似乎并不意味着Webpack会真正忽略它,而不是返回一个空引用。因为我在里面工作,这导致了一个
require
或import
导入的任何内容)
免责声明,我知道有,但有两个原因我不使用:
beforesolve
钩子中返回null来删除它们。但这似乎并不意味着Webpack会真正忽略它,而不是返回一个空引用。因为我在里面工作,这导致了一个错误,Next无法找到我删除的东西的引用
这是我的代码:
class NextCriticalWebPackagePlugin{
pluginName=this.constructor.name;
请求=[];
应用(编译器){
compiler.hooks.normalModuleFactory.tap(this.pluginName,factory=>{
点击(this.pluginName,result=>this.checkIgnore(result));
});
}
选中忽略(结果){
if(result&&result.request&&result.request.startsWith('next-critical/loader')){
this.requests.push(result.request);
返回null;
}
返回结果;
}
}
module.exports=NextCriticalWebpackPlugin;
如果我运行Webpack,一切看起来都正常,但当我运行构建时,它会抛出错误,无法找到我已删除的模块:
找不到模块的下一个关键/加载程序/用户/luke/Arbeit/Stroeer/Projekte/paper/apps/web/src/critical/ads.ts'
因此,我想知道如何告诉Webpack从捆绑包中删除依赖项及其导入项。为什么不使用next的动态方法?它将导入拆分为一个单独的块,并将其所有dep移动到itI am,实现一个遵循关键渲染路径模式的下一个插件,并将关键CSS和JS提升到