У меня есть это в моем файле package.json (сокращенная версия):
{
"name": "a-module",
"version": "0.0.1",
"dependencies": {
"coffee-script": ">= 1.1.3"
},
"devDependencies": {
"stylus": ">= 0.17.0"
}
}
Я использую NPM версии 1.1.1 на Mac 10.6.8.
Когда я запускаю следующую команду из корня проекта, она устанавливает dependencies
и devDependencies
:
npm install
У меня сложилось впечатление, что эта команда установила devDependencies
:
npm install --dev
Как мне сделать так, чтобы он npm install
только устанавливал dependencies
(чтобы производственная среда получала только эти модули), в то время как что-то вроде npm install --dev
устанавливает dependencies
и devDependencies
?
dependencies
иdevDependencies
и когда каждый из них используется.Ответы:
Команда
npm install
будет установленаdevDependencies
вместе с другимиdependencies
при запуске в каталоге пакета, в среде разработки (по умолчанию).Используйте
npm install --only=prod
(или--only=production
) только для установкиdependencies
, а неdevDependencies,
независимо от значенияNODE_ENV
переменной среды.Источник: нпм документы
Примечание: Перед v3.3.0 НПМ (2015-08-13), опция называлась
--production
, то естьnpm install --production
.источник
npm install yourpackage.tgz
, также не получали devDependencies. Однако это уже так. См. Ответ Кевина Кокса ниже ( stackoverflow.com/a/15826602/825588 ).NODE_ENV=production
от чего-то другого, чем занимался, и не мог понять, почемуnpm install
не установил зависимости. Спасибо за подробный ответ.npm install --dev
установит только зависимости dev--dev
опции не рекомендуется. Используйте--only=dev
вместо этого.Я тоже столкнулся с этой проблемой! Установка npm несколько сбивает с толку, и веб-сообщения продолжают вносить флаги -d / - dev, как будто существует явный режим установки «разработки».
npm install
установит как " зависимости ", так и " devDependencies "npm install --production
будет устанавливать только " зависимости "npm install --dev
будет только устанавливать " devDependencies "источник
NODE_ENV
установлено значениеproduction
и вы запускаетеnpm install
его, он не будет устанавливать зависимости dev. Я столкнулся с этой проблемой в моем Dockerfile.npm --production=false install
(хотя и не уверен, будет ли это работать вместе с флагом --dev)Новая опция:
Если вы хотите установить только devDependencies:
источник
--only=prod
. Вы, сэр, частично правы. ; PЕсли вы читаете этот пост в 2016 году, добейтесь того, чего хотите, используя
Аргумент приведет к установке только devDependencies или только не devDependencies независимо от NODE_ENV.
от: https://docs.npmjs.com/cli/install
источник
--production
и--only={prod[uction]|dev[elopment]}
.Если вы уже установили все свои зависимости и хотите избежать повторной загрузки производственных пакетов из NPM, вы можете просто набрать:
Это удалит ваши зависимости dev из вашей
node_modules
папки, что полезно, если вы пытаетесь автоматизировать двухэтапный процесс, такой какПромежуточный
npm prune
переход избавит вас от необходимости переустанавливать все!источник
При использовании «npm install» модули загружаются и доступны во всем приложении независимо от того, являются ли они «devDependencies» или «зависимости». Суть этой идеи: все, что ваш package.json определяет как зависимость (любого типа), устанавливается в node_modules.
Цель различий между зависимости / devDependencies / OptionalDependencies состоит в том, что потребители вашего кода могут сделать w / npm для установки этих ресурсов.
Согласно документации: https://npmjs.org/doc/json.html ...
Однако, чтобы решить этот вопрос, если вы хотите установить ТОЛЬКО «зависимости» с помощью npm, используйте следующую команду:
Это можно подтвердить, посмотрев коммит Git, в котором был добавлен этот фильтр (наряду с некоторыми другими фильтрами [перечислены ниже] для обеспечения этой функциональности).
Альтернативные фильтры, которые могут быть использованы npm:
@dmarr попробуйте использовать npm install --production
источник
npm установит dev-зависимости при установке из пакета (если он есть
package.json
в текущем каталоге). Если он находится в другом месте (реестр npm, git repo, другое место в файловой системе), он устанавливает только зависимости.источник
npm install some-module
не будет устанавливать зависимости Devsome-module
.Я обнаружил, что при попытке установить зависимости dev для пакета, который содержит аддон узла, вы не можете избежать сборки аддона при запуске npm install --dev, даже если вы просто хотите установить devDependencies. Итак, мне пришлось обойти спину npm:
Или еще лучше (и более кратко),
источник
Используйте
npm install packageName --save
это, чтобы добавить пакет в зависимости , если вы используете,npm install packageName --save-dev
то это devDependencies .npm install packageName --save-dev
следует использовать для добавления пакетов в целях разработки. Как добавление пакетов TDD (чай, мокко и т. Д.). Которые используются в разработке, а не в производстве.источник
package.json
но как только эти зависимости уже сохранены , то как принудительноnpm
установить только один конкретный тип зависимостей. Когда я прочитал ваш ответ здесь, я не узнал ничего, что помогло бы решить проблему, поставленную ОП.Стоит отметить, что вы можете использовать
NODE_ENV
переменную окружения для достижения того же результата. Особенно полезно, если вы контейнеризуете свое Node-приложение (например, Docker).Приведенный выше код установит все ваши зависимости, кроме dev (т.е.
devDependencies
).если вам нужно использовать переменные окружения в вашей
Dockerfile
дополнительной информации можно найти здесь .Переменные среды легко перезаписывать при необходимости (например, если вы хотите запустить свой набор тестов, скажем, на Travis CI). Если бы это было так, вы могли бы сделать что-то вроде этого:
Документация NPM здесь
Удачной контейнеризации =)
источник
Я предлагаю использовать
npm ci
. Если вы хотите установить только необходимые для производства пакеты (как вы написали - безdevDependencies
), то:или
Если вы предпочитаете oldschool,
npm install
тогда:или
Вот хороший ответ, почему вы должны использовать
npm ci
.источник
npm ci
не толькоnpm install
!Необходимо добавить к выбранному ответу: На данный момент
npm install
в каталоге пакета (содержащемpackage.json
) будут устанавливаться devDependencies, тогда какnpm install -g
не будут их устанавливать.источник
-g
не будет установленdevDependencies
, но он устанавливает пакеты глобально, что часто не является ожидаемым результатом.npm install --production
это правильный способ установки узловых модулей, которые необходимы для производства. Проверьте документацию для более подробной информацииисточник
Теперь возникает проблема, если у вас есть package-lock.json с npm 5+. Вы должны удалить его перед использованием
npm install --production
.источник
И, в соответствии с вопросом, чтобы установить только зависимости, следующая команда поможет
источник