Переместите модуль из devDependencies в зависимости в npm package.json

155

Есть ли какая-нибудь короткая команда для перемещения модуля из devDependenciesв dependenciesв package.json?

Я всегда делаю это:

npm uninstall <module_name> --save-dev 
npm install <module_name> --save

Есть ли более короткий подход к этому?

Эмад Эмами
источник

Ответы:

192

Да! переместить модуль из devDependenciesв dependencies:

npm install <module_name> --save-prod

Франсуа Вутс
источник
183

Если вы хотите сделать обратное (т.е. переместить модуль из dependenciesв devDependencies), просто выполните:

npm install <module_name> --save-dev

или стенография:

npm i <module_name> -D

сокращение от ( devDependenciesдо dependencies):

npm i <module_name> -P
Sid
источник
5
Работает для меня, v5.6
Legends
1
сокращение npm i module-example -Dтакже будет работать для перехода от prod к dev, а также npm i module-example -Pк переходу от dev к prod-зависимостям
Andriy
@ Андрей спасибо, не думал об этом. Обновлю ответ!
Сид
Если вы вместо этого используете пряжу, вам нужно сначала удалить ее из зависимостей с помощью, yarn remove <module_name>а затем повторно добавить ее в devDependencies с помощьюyarn add <module_name> --dev
Eugenio
16

В пряжу:

Переместить модуль из devDependenciesв dependencies:

yarn remove <module_name> --dev && yarn add <module_name> 

Переместить модуль из dependenciesв devDependencies:

yarn remove <module_name> && yarn add <module_name> --dev

Как сказано в комментариях, команда фактически удаляет модуль и переустанавливает его на новом месте.

yohaiz
источник
1
Это действительно правильно? Разве в пряже нет способа переместить вещи dependenciesв devDependenciesбез удаления и повторного добавления?
LondonRob
@LondonRob это единственный способ, который я нашел
yohaiz
21
Это не движется, это просто
удаляет
@seeker_of_bacon Здесь ничего не работает в фоновом режиме. Вы можете спутать &&с &.
rudolfbyker
3

Если в вашем проекте еще нет файла блокировки или файла сжатия, вы можете просто переместить соответствующую строку в вашем package.json.

(Я не рекомендую не использовать lockfiles)

Sean
источник
3

Проблема с использованием команд npmили yarnзаключается в том, что существует вероятность того, что повторно добавленная версия отличается от той, которая используется в настоящее время. Если это то, что вы хотите - и переход, и апгрейд, - тогда продолжайте и используйте принятый ответ.

Если нет, просто отредактируйте вручную,package.json чтобы переместить линию от devDependenciesобъекта к dependenciesобъекту (создавая ее при необходимости). Вы можете пойти и в другом направлении.

Файл блокировки не содержит никакой информации о том, являются ли вещи зависимостями prod или dev, поэтому не требует обновления. Вы можете сделать npm/ yarn installвпоследствии, чтобы исправить любые флаги в файлах блокировки.

eedrah
источник
Хотя существует только один dependenciesраздел верхнего уровня package-lock.json, каждая запись потенциально имеет devфлаг, указывающий, является ли это зависимостью dev или транзитивной зависимостью одного. См. Docs.npmjs.com/files/package-lock.json#dev "Если [dev is] true, то эта зависимость является либо зависимостью разработки ТОЛЬКО от модуля верхнего уровня, либо транзитивной зависимостью одного. Это ложно для зависимостей, которые являются как зависимостью развития верхнего уровня, так и транзитивной зависимостью не-разработки зависимости верхнего уровня ".
rob3c
0

Проблема использования npm install в том, что вы получаете обновленные версии. Что сработало для меня:

  1. Перемещение их в нужную часть (dev или prod)
  2. Удаление их из папки node_modules
  3. казнить npm install

Это сохранило все версии без изменений.

Ахмед Махмуд
источник