Как избежать добавления пакета в node_modules, если он размещен локально - PullRequest
0 голосов
/ 28 марта 2019

У меня есть хранилище с приложением и модулями.Модули включают в приложение package.json, например:

"application-module": "file:../modules/application-module"

После yarn install эта зависимость добавлена ​​к node_modules.

Я хочу сделать модуль-базуприложение.Папка app воспроизводит корневой модуль.Другие модули, такие как admin-panel-module, account-module должны находиться в папке modules.Таким образом, приложение может иметь node_modules внутри, а также папку modules для модулей.Эти модули будут добавлены git subtree из другого репозитория.Таким образом, таким образом я могу самостоятельно разрабатывать

Есть ли способ избежать добавления и использования локальных каталогов?

1 Ответ

1 голос
/ 28 марта 2019

Несколько node_modules и package.json

В любом проекте node / npm вы можете иметь несколько package.json в вашем дереве каталогов, например:

app/
  package.json
  node_modules
  src...
  account_module/
    package.json
    node_modules
    src...
  admin_module/
    package.json
    node_modules
    src..

Когда вы вызываете yarn (или npm install ofc) на любом из дочерних модулей, зависимости, перечисленные в их локальном package.json, будут установлены в локальной папке node_modules .

Таким образом, в основном вы можете решитьВаша проблема в том, что у каждого ребенка есть свои package.json со своими зависимостями.

Тем не менее, вы можете поместить общие зависимости в корневую папку app.Если все ваши проекты, например, используют lodash, вы можете поместить зависимость lodash в надстройку package_json.После выполнения yarn в папке app пакет lodash будет установлен в node_modules.

приложения. После этого, если вы:

require('lodash');

В любом из детей они будут искать lodash в папке приложения node_modules, если они не найдут lodash в своих node_modules.

Если вы неЕсли у вас нет корня node_modules, вы все равно можете объявить package.json локально для любого из подмодулей, и у них будет свой собственный node_modules.

Так что, возможно, вы захотите избежать общих зависимостей ввсе, или, может быть, вы хотите хранить общие зависимости в папке app.Npm предлагает вам оба варианта.

Однако, если вы не хотите обрабатывать общие зависимости, но все же беспокоитесь о необходимости хранения большого количества дублированных пакетов на локальных машинах, вы можете захотеть оформить заказpnpm - это оболочка над npm, которая позволяет сэкономить много места на локальных машинах разработки.

...