Используя npm, мы можем установить модули глобально, используя -g
опцию. Как мы можем сделать это в файле package.json?
Предположим, это мои зависимости в файле package.json
"dependencies": {
"mongoose": "1.4.0",
"node.io" : "0.3.3",
"jquery" : "1.5.1",
"jsdom" : "0.2.0",
"cron" : "0.1.2"
}
Когда я бегу npm install
, я хочу node.io
установить только глобально, остальные должны быть установлены локально. Есть ли вариант для этого?
"preferGlobal": true
внутри package.json для модуля."preferGlobal":true
... я действительно не знаю, где поместить это в package.json. npmjs.org/doc/json.html Документация NPM гласит, что предпочитаетGlobal для вашего собственного пакета, и что его установка заставит его установить ваш глобальный пакет. похоже, больше похоже на руководство.Ответы:
Новое примечание: вы, вероятно, не хотите или должны делать это. Что вы, вероятно, хотите сделать, это просто поместить эти типы командных зависимостей для сборки / тестирования и т. Д. В
devDependencies
раздел вашего package.json. Каждый раз, когда вы что-то используете изscripts
package.json, ваши команды devDependencies (в node_modules / .bin) действуют так, как будто они находятся на вашем пути.Например:
Тогда в package.json:
Затем в командной строке вы можете запустить:
Но если вы действительно хотите установить глобально, вы можете добавить предустановку в разделе сценариев package.json:
Так что на самом деле моя установка npm снова выполняет установку npm, что странно, но, похоже, работает.
Примечание: у вас могут возникнуть проблемы, если вы используете наиболее распространенную установку, для
npm
которой требуется глобальная установка пакета Nodesudo
. Один из вариантов - изменитьnpm
конфигурацию, так что в этом нет необходимости:npm config set prefix ~/npm
добавьте $ HOME / npm / bin в $ PATH, добавивexport PATH=$HOME/npm/bin:$PATH
к вашему~/.bashrc
.источник
npm i -g underscore-cli
. это дает предупреждение о неправильности wd. WD означает рабочий каталог, я думаю. когда я вручную делаю это в командной строке, тогда все идет хорошо, однако я бы предпочел, чтобы пользователь мог справиться с установкой моего кода с помощью простогоnpm install
npm list module -g || npm install module -g
npm вернет правильные значения выхода."preinstall" : "scripts/preinstall.sh"
).&&
, например,npm install -g bower && npm install -g grunt-cli
Из-за недостатков, описанных ниже, я бы рекомендовал следующий принятый ответ:
Мой оригинальный, но не рекомендуемый ответ следует.
Вместо использования глобальной установки вы можете добавить пакет в your
devDependencies
(--save-dev
), а затем запустить бинарный файл из любой точки вашего проекта:В твоем случае:
Этот инженер предоставил
npm-exec
псевдоним в качестве ярлыка. Этот инженер использует сценарий под названиемenv.sh
. Но я предпочитаю использовать$(npm bin)
напрямую, чтобы избежать каких-либо дополнительных файлов или настроек.Хотя каждый вызов немного увеличивается, он должен просто работать , предотвращая:
sudo
Недостатки:
$(npm bin)
не будет работать на Windows.npm bin
папке. (Установите npm-run или npm-which, чтобы найти их.)Кажется , лучшим решением является размещение общих задач (таких , как строительство и Минимизация) в разделе «сценарии» из ваших
package.json
, как показывает выше Джейсон.источник
.bashrc
легко добавитьbin/
каталог вPATH
переменную окружения:alias nodebin='export PATH=$(npm bin)/:$PATH'
. Выполните,nodebin
а затем вы можете просто ввести свои команды, как обычно.Это немного устарело, но я столкнулся с требованием, поэтому вот решение, которое я нашел.
Эта проблема:
Наша команда разработчиков поддерживает множество продуктов для веб-приложений .NET, которые мы переносим на AngularJS / Bootstrap. VS2010 нелегко поддается пользовательским процессам сборки, и мои разработчики постоянно работают над несколькими выпусками наших продуктов. Наша VCS - это Subversion (я знаю, я знаю. Я пытаюсь перейти на Git, но мой надоедливый маркетинговый персонал так требователен), и одно решение VS будет включать несколько отдельных проектов. Мне нужно, чтобы у моего персонала был общий метод инициализации среды разработки без необходимости устанавливать одни и те же пакеты Node (gulp, bower и т. Д.) Несколько раз на одной машине.
TL; DR:
Требуется «установка npm» для установки глобальной среды разработки Node / Bower, а также всех локально необходимых пакетов для продукта .NET.
Глобальные пакеты должны быть установлены, только если они еще не установлены.
Локальные ссылки на глобальные пакеты должны создаваться автоматически.
Решение:
У нас уже есть общая среда разработки, общая для всех разработчиков и всех продуктов, поэтому я создал скрипт NodeJS для установки глобальных пакетов при необходимости и создания локальных ссылок. Сценарий находится в ".... \ SharedFiles" относительно базовой папки продукта:
Теперь, если я хочу обновить глобальный инструмент для наших разработчиков, я обновляю объект «пакеты» и регистрирую новый скрипт. Мои разработчики проверили его и либо запустили с "node npm-setup.js", либо с помощью "npm install" из любого разрабатываемого продукта для обновления глобальной среды. Все это занимает 5 минут.
Кроме того, чтобы настроить среду для нового разработчика, они должны сначала только установить NodeJS и GIT для Windows, перезагрузить компьютер, проверить папку «Общие файлы» и все разрабатываемые продукты и начать работать.
«Package.json» для продукта .NET вызывает этот сценарий перед установкой:
Ноты
Обратите внимание, что ссылка на скрипт требует косой черты даже в среде Windows.
«npm ls» выдаст «npm ERR! extraneous:» сообщения для всех локально связанных пакетов, так как они не перечислены в «package.json» «зависимости».
Редактировать 29.01.16
Обновленный
npm-setup.js
скрипт выше был изменен следующим образом:Пакет «версия» в
var packages
теперь является значением «пакета», передаваемымnpm install
в командной строке. Это было изменено, чтобы разрешить установку пакетов не из зарегистрированного репозитория.Если пакет уже установлен, но не запрошен, существующий пакет будет удален, а правильный установлен.
По неизвестным причинам npm будет периодически выдавать ошибку EBUSY (-4082) при установке или ссылке. Эта ошибка перехвачена и команда повторно выполнена. Ошибка редко случается во второй раз и, кажется, всегда устраняется.
источник
Вы можете использовать отдельный файл, например
npm_globals.txt
, вместоpackage.json
. Этот файл будет содержать каждый модуль в новой строке, как это,Затем в командной строке запустите,
Проверьте, правильно ли они установлены,
Что касается того, следует ли вам делать это или нет, я думаю, что все зависит от варианта использования. Для большинства проектов это не обязательно; и очень важно, чтобы ваш проект
package.json
инкапсулировал эти инструменты и зависимости вместе.Но в настоящее время я обнаруживаю, что я всегда устанавливаюcreate-react-app
и другие CLI глобально, когда я прыгаю на новую машину. Приятно иметь простой способ установки глобального инструмента и его зависимостей, когда управление версиями не имеет большого значения.И в наши дни, я использую
npx
, НПМ пакет бегуна , вместо установки пакетов в глобальном масштабе.источник
Все модули из package.json установлены в ./node_modules/
Я не смог найти это явно указано, но это ссылка package.json для NPM .
источник
Создайте свой собственный скрипт для установки глобальных зависимостей. Это не займет много. package.json достаточно расширяемый.
Используя вышеупомянутое, вы можете даже сделать это встроенным, ниже!
Посмотрите на preinstall ниже:
Авторы узла могут не допустить package.json - это файл проекта. Но это.
источник