Как заставить Webpack использовать "node_modules" проекта в js-скриптах, расположенных вне папки проекта? - PullRequest
0 голосов
/ 24 августа 2018

У меня есть проект Node.js и следующая структура папок:

  • Lib
    • удивительный-formatter.js
  • FrontEndApp
    • prettify.js
    • node_modules
      • устрашающий-анализатор
  • BackEndApp
    • ...

Я использую awesome-parser модуль и awesome-formatter.js библиотеку в prettify.js скрипте, как это:

require('awesome-parser')

require('../lib/awesome-formatter.js')

awesome-formatter.js, по очереди, тоже следует использовать awesome-parser:

require('awesome-parser')

Мой FrontEndApp настроен для использования Webpack, и я пытаюсь запустить его в режиме разработки с помощью команды npm run dev. Однако я получил следующую ошибку:

ОШИБКА Не удалось скомпилировать с 1 ошибкой

Эти зависимости не найдены:

* awesome-parser в /home/user/dev/lib/awesome-formatter.js

Я не хочу перемещать awesome-formatter.js внутри FrontEndApp, потому что я также использую его в проекте BackEndApp (и, возможно, в некоторых других проектах), и я не хочу создавать отдельные "node_modules" в " lib "для того, чтобы просто не дублировать установленные модули на диск.

Итак, мой вопрос: как заставить Webpack использовать "node_modules" проекта в js-скриптах, расположенных вне папки проекта?

P.S. Конечно, есть обходные пути, такие как символические ссылки или создание полнофункционального модуля (с package.json и т. Д.) Из lib/awesome-fromatter и установка его в FrontEndApp/node_modules, но есть ли прямой способ решить эту проблему?

1 Ответ

0 голосов
/ 25 августа 2018

Я нашел решение: resolve.modules может быть добавлено в файл конфигурации Webpack.

module.exports = {
  ...
  resolve: {
  ...
    modules: [
      'node_modules',
      resolve('node_modules')
    ]
  },
  ...
}

Это означает, что Webpack ищет модули в «node_modules» как относительную подпапку (и это обычное поведение), а также по абсолютному пути к «node_modules» проекта: resolve('node_modules'), так что скрипты в папках вне проект (например, lib в моей структуре) может найти и использовать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...