Я работаю над инструментом, в котором я использую Webpack для создания сценария веб-работника. Этот скрипт создается с использованием createChildCompiler
метода . Код, который делает это, находится в этом пакете , но я не думаю, что он делает что-то особенно необычное.
Я борюсь с тем, что у меня установлены некоторые псевдонимы в родительском. компиляция, которую я не хочу применять к дочерней компиляции. В моем конкретном случае c я использую псевдоним react
=> preact
в основном приложении, но в этих работниках мне нужно сохранить ссылки на react
без изменений. Я пробовал несколько различных вариантов, но, похоже, ничего не работает. «Самый близкий», я думаю, я получил следующий плагин, который я включил в родительский сборник. Я думал, что это применимо только к плагину псевдонимов для не дочерних компиляций, но я предполагаю, что распознаватель должен совместно использоваться компиляциями?
const plugin = {
apply(compiler) {
compiler.hooks.compilation.tap('MyPlugin', (compilation) => {
const AliasPlugin = require('enhanced-resolve/lib/AliasPlugin');
// What I think AliasPlugin ends up being for my resolve.alias config of:
// {react: 'preact/compat', 'react-dom': 'preact-compat'}
const plugin = new AliasPlugin(
'described-resolve',
[
{name: 'react', onlyModule: false, alias: 'preact/compat'},
{name: 'react-dom', onlyModule: false, alias: 'preact/compat'},
],
'resolve',
);
if (compilation.compiler.isChild()) return;
plugin.apply((compiler as any).resolverFactory.get('normal'));
});
},
}