Как предотвратить установку "devDependencies" модулей NPM для Node.js (package.json)?
У меня есть следующий сокращенный вариант файла 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
?
5 ответ(ов)
Я тоже столкнулся с этой проблемой! Использование npm install
может быть немного запутанным, и многие статьи в сети упоминают флаги -d/--dev, как будто есть явный режим установки для разработки.
npm install
установит как "dependencies", так и "devDependencies".npm install --production
установит только "dependencies".npm install --dev
установит только "devDependencies".
Если у вас есть вопросы или нужна дополнительная информация, не стесняйтесь спрашивать!
Новая опция выглядит так:
npm install --only=prod
Если вам нужно установить только зависимости для разработки, используйте:
npm install --only=dev
Если вы уже установили все свои зависимости и хотите избежать повторной загрузки продакшен-пакетов из NPM, просто выполните следующую команду:
npm prune --production
Это удалит ваши дев-зависимости из папки node_modules
, что полезно, если вы пытаетесь автоматизировать двухступенчатый процесс, такой как:
- Собрать проект с помощью Webpack, используя дев-зависимости
- Собирать Docker-образ, используя только продакшен-модули
Запуск npm prune
между этими шагами сэкономит вам время, избавив от необходимости переустанавливать всё заново!
Если вы читаете этот пост в 2016 году, вы можете достичь желаемого, используя аргумент
--only={prod[uction]|dev[elopment]}
Этот аргумент позволит установить только зависимости для разработки (devDependencies) или только неразвивающиеся зависимости (non-devDependencies), независимо от значения NODE_ENV.
Для получения дополнительной информации, вы можете обратиться к документации npm: https://docs.npmjs.com/cli/install.
Когда вы используете команду "npm install", все модули, указанные в вашем package.json
(независимо от того, являются ли они devDependencies
или dependencies
), устанавливаются и доступны в вашем приложении: все, что определено как зависимость (любого типа), попадает в папку node_modules
.
Разница между dependencies
, devDependencies
и optionalDependencies
заключается в том, что потребители вашего кода могут сделать с помощью npm для установки этих ресурсов.
Согласно документации: https://npmjs.org/doc/json.html...
Если кто-то планирует загрузить и использовать ваш модуль в своей программе, то, вероятно, он не хочет или не нуждается в загрузке и сборке внешнего тестового или документационного фреймворка, который вы используете.
В этом случае лучше перечислить эти дополнительные элементы в хэше
devDependencies
.Эти элементы будут установлены всякий раз, когда установлен флаг конфигурации
--dev
. Этот флаг автоматически устанавливается при использованииnpm link
или при выполненииnpm install
из корневой директории пакета и может быть управляем, как и любой другой параметр конфигурации npm. Для получения дополнительной информации смотритеconfig(1)
.
Чтобы ответить на ваш вопрос: если вы хотите установить только dependencies
с помощью npm, используйте следующую команду:
npm install --production
Это можно подтвердить, посмотрев на коммит в Git, который добавил этот фильтр (вместе с некоторыми другими фильтрами, перечисленными ниже, для предоставления этой функциональности).
Другие фильтры, которые можно использовать в npm:
--save => обновляет записи зависимостей в файле {{{json}}}
--force => принудительно загружает удаленные записи, если они есть на диске
--force-latest => принудительно загружает последнюю версию при конфликте
--production => не устанавливать `devDependencies` проекта
--no-color => не выводить цвета
Попробуйте использовать npm install --production
.
В чем разница между тильдой (~) и каретом (^) в package.json?
В чем разница между --save и --save-dev?
Как удалить модули npm в Node.js?
Ошибка "npm WARN package.json: Нет поля repository"
nvm постоянно "забывает" Node.js в новой сессии терминала