我正在寻找一种通过WebPack@3.12.0配置传递函数的方式来帮助WebPack在编译时动态解析别名。我有各种第三方包,例如导入
由于
这两个答案帮助了我接近这个问题,但两者都似乎已过时: - https://github.com/webpack/webpack/issues/110 - Is it possible to create custom resolver in 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
--所以我猜代码根本没有工作。
${__dirname}/versions/v2.2.0
改成了'lorem ipsum',会发生什么呢?它会像我们预期的那样破坏构建吗? - Nir O.