Разрешение импорта в два разных модуля в зависимости от сборки - PullRequest
0 голосов
/ 09 января 2019

У меня есть два модуля: mymodule-real и mymodule-dummy.

Я хочу, чтобы webpack разрешал эти модули следующим образом, в зависимости от переменной среды Webpack:

mymodule -> mymodule-real
or
mymodule -> mymodule-dummy

Итак, я хочу, чтобы у двух было две разные сборки "разработки": одна с реальным модулем, а другая с фиктивным модулем, имитирующим его поведение.

Мой успех до сих пор:

Я могу сделать это:

  plugins: [
    new webpack.NormalModuleReplacementPlugin(/mymodule/, function(resource) {
      resource.request = 'mymodule-' + (USE_DUMMY ? 'dummy' : 'real');
    })
  ]

Но у меня есть проблема: я пишу приложение Electron, и я хочу, чтобы они были внешними, разрешенными с /node_modules/. Этот плагин не работает, если я перечислю эти модули в разделе externals config.

Можно ли перенаправить импорт внешних модулей с помощью Webpack?

1 Ответ

0 голосов
/ 10 января 2019

У меня есть ответ от @ sokra на Github:

Да, это плагин NormalModuleReplacement, а не ExternalModuleReplacementPlugin.

Вы можете сделать это:

  externals: (context, request, callback) => {
    if(/mymodule/.test(request) {
      return callback(null, USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real'
    }
    callback();
  }

или это, если вам не нужно регулярное выражение:

externals: {
  mymodule: USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real'
}
...