Подтвердить что ты не робот

Как разрезать devDependencies, но не устанавливать их, если это необходимо?

У меня есть куча devDependencies, необходимая для запуска набора тестов и блокировки производственных зависимостей с npm shrinkwrap. Проблема заключается в том, что при запуске npm install устанавливаются только производственные зависимости, чтобы установить devDependencies, я должен удалить npm-shrinkwrap.json и запустить его снова.

Теперь, если shrinkwrap содержит devDependencies, они устанавливаются на производство, где они не требуются. Разумеется, должны быть некоторые аргументы командной строки, чтобы принудительно устанавливать только обычные зависимости?

4b9b3361

Ответ 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