【发布时间】:2018-11-01 05:28:52
【问题描述】:
我正在寻找一种通过 Webpack@3.12.0 配置传递函数的方法,以帮助 Webpack 在编译时动态解析别名。我有各种导入的第三方包,例如package-a/file-b。但是,根据导入package-a 的第三方包,我希望将其解析为package-a 的不同版本;虽然node_modules 中会有package-a 的版本,但旧版本不会在node_modules 中,而是在不同的目录中。由于这些是第三方,我不想手动更改他们的代码。在各个包中使用的版本在路径名中,并且有任意数量的包。
因为package-a 是一个私有包,它不在 npm 上,也不通过 Github 进行版本控制。
这两个帮助我更接近这一点,但两个答案似乎都过时了: - https://github.com/webpack/webpack/issues/110 - Is it possible to create custom resolver in webpack?
这是我目前所拥有的:
config.resolve.plugins = [{
apply(resolver) {
resolver.plugin('module', function(request, callback) {
if (request.request.startsWith('package-a')) {
this.doResolve(
'file',
Object.assign({
...request,
request: request.request.replace(/^package-a/, `${__dirname}/versions/v2.2.0`) + '.js',
file: true,
resolved: true,
}),
null,
callback
);
return;
}
callback();
});
}
}];
虽然它正确构建,但问题在于它仍在评估 node_modules package-a -- 所以我猜代码根本不起作用。
【问题讨论】:
-
如果你只写 'lorem ipsum' 而不是
${__dirname}/versions/v2.2.0会发生什么?它会像预期的那样破坏构建吗? -
答案对您有帮助吗?你是怎么解决的?