Я ищу способ передать функцию через конфигурацию 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 - Можно ли создать собственный преобразователь в веб-пакете?
Вот чтоУ меня так далеко:
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
- так что я думаю, что код вообще не работает.