Можете ли вы предотвратить установку пакетов node.js локально? (Используйте глобальные пакеты) - PullRequest
0 голосов
/ 03 августа 2020

Я работал над множеством разных node.js проектов. У каждого из них есть собственный package.json файл с собственными необходимыми пакетами. Каждый раз, когда я запускаю node <mainfile>.js, npm устанавливает все пакеты в каталог проекта. Примерно так: C:/Users/me/Projects/<project-name>/node_modules.

Это не очень большая проблема, но есть ли способ заставить npm использовать / установить в global пакеты? Как в C:/Users/me/node_modules? Одно из преимуществ, которое я мог видеть в этом, - меньше занимаемого места для хранения, хотя это не огромное преимущество.

Я бы предположил, что если это возможно, вам потребуется добавить / изменить что-то в файл package.json.

Изучая ответы на этот вопрос, я видел людей, говорящих, что вам следует избегать установки пакетов глобально. Можете ли вы также объяснить, почему это плохая практика, и почему мне следует ее избегать?

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Почему бы не устанавливать все пакеты глобально

На самом деле вам не следует устанавливать пакет глобально, вам нужно знать, какие пакеты устанавливать глобально. Пакеты для глобальной установки - это те, от которых ваш проект / приложение не зависит.

Как определить пакет, от которого зависит мой проект

Пакет, от которого зависит ваш проект, является пакетом что ваше приложение не может работать без axios или express (API express не может работать без установленного express или веб-страница, которая делает запросы API с axios, не может выполнять эти запросы без axios) но что-то вроде http-server или minify не требуется для запуска приложения, поэтому его можно установить глобально.

Почему важно иметь локально установленные пакеты

Это важно / хорошая практика потому что, если вы работаете с группой разработчиков или кто-то получает вашу работу из Github, они могут просто запустить npm install и получить все пакеты без необходимости искать все пакеты, которые они сами себе.

Как я могу удалить папка модулей узла

Технически вы можете установить каждый пакет глобально, но я бы не стал этого делать. Node и многие другие разработчики знают, что это проблема, для которой они создали решение в обозначении «убийца узлов».

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

1 голос
/ 03 августа 2020

Установить пакет глобально

NPM устанавливает глобальные пакеты в папку // local / lib / node_modules.

Примените -g в команде установки для установки пакета глобально.

npm install -g express

Чтобы ответить на ваш другой вопрос:

Очевидный короткий ответ заключается в том, что ваш проект зависит от них. Если ваш проект зависит от пакета, он должен быть задокументирован в package. json, чтобы вы могли гарантировать, что он будет установлен, когда кто-то наберет npm install. В противном случае вам нужно будет добавить дополнительные шаги в ваш файл README, чтобы сообщить всем, кто клонирует ваш проект, о том, что им также необходимо установить каждую из ваших глобальных зависимостей

Наконец, даже если кто-то установит правильную версию Просмотрите ваш проект, они могут работать над другим проектом, для которого требуется другая версия того же инструмента, что может вызвать конфликты. Некоторые из ваших собственных проектов могут даже использовать разные версии Browserify, потому что вы обновили его при запуске нового проекта и не go назад, чтобы убедиться, что более ранние проекты были обновлены для работы с новой версией. Этих конфликтов можно избежать.

Вы можете установить только одну версию в глобальном масштабе. Это вызывает проблемы, если у вас разные проекты, основанные на разных версиях пакета.

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