Как я могу "сбросить" псевдоним в дочернем компиляторе webpack? - PullRequest
0 голосов
/ 24 февраля 2020

Я работаю над инструментом, в котором я использую 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'));
    });
  },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...