Как разрезать devDependencies, но не устанавливать их, если это необходимо?
У меня есть куча devDependencies
, необходимая для запуска набора тестов и блокировки производственных зависимостей с npm shrinkwrap
. Проблема заключается в том, что при запуске npm install
устанавливаются только производственные зависимости, чтобы установить devDependencies
, я должен удалить npm-shrinkwrap.json и запустить его снова.
Теперь, если shrinkwrap содержит devDependencies
, они устанавливаются на производство, где они не требуются. Разумеется, должны быть некоторые аргументы командной строки, чтобы принудительно устанавливать только обычные зависимости?
Ответы
Ответ 1
Сентябрь 2016 года:
Как отмечали другие, были предприняты огромные усилия для улучшения функции усадки, начиная с npm v3.10.8.
Благодаря этому можно будет заблокировать devDependencies
при установке только производственных зависимостей:
npm shrinkwrap --dev
npm install --only=prod
2013 ответ:
Как указано в документах NPM:
Так как npm shrinkwrap
предназначен для блокировки ваших зависимостей для использование продукции, devDependencies
не будет включено, если вы явным образом устанавливаю флаг --dev
, когда вы запускаете обрезку npm. Если установленный devDependencies
исключен, затем npm выведет предупреждение. Если вы хотите, чтобы они были установлены с вашим модулем по умолчанию, пожалуйста, вместо этого добавьте их в зависимости.
В принципе, или вы блокируете все депики или только производственные отпечатки.
Даже не работает npm install --dev
или npm install --force
может превзойти функциональность термоусадочной пленки.
Ответ 2
Похоже, эта функция была недавно добавлена в v3.3 клиента npm за changelog
Теперь вы сможете запустить npm install --only=prod
для достижения желаемого эффекта.
Ответ 3
РЕДАКТИРОВАТЬ 2016/09/13
Я тестировал npm v3.10.8, и эта функция теперь работает так, как ожидалось. Мы сократили наши devDependencies и можем устанавливать только зависимости prod при развертывании.
Я думаю, стоит упомянуть, что эта функция должна начинаться так, как ожидалось, очень скоро. Согласно этому github issue, тонны людей сталкивались с одной и той же проблемой, и в соответствии с этим pull, он будет в следующей версии (запланирован на 2016-09-08).
При объединении запроса на растяжение все, что вам нужно сделать, это:
npm i --only=prod
Ответ 4
Это исправлено в npm
3.10.8
; npm install --production
не следует устанавливать dev deps в shrinkwrap, созданный npm shrinkwrap --dev
: https://github.com/npm/npm/releases/tag/v3.10.8
Ответ 5
Что касается npm 5 (я пробовал по 5.5.1 и 5.6.0), флаг - production (- only = prod) проблематичен.
Если в папке существует package-lock.json,
npm shrinkwrap --production
просто изменяет имя файла на npm-shrinkwrap.json.
Как мне удалось решить эту проблему, нужно запустить:
npm prune --production
а затем запустите:
npm shrinkwrap --production