Przenieś moduł z devDependencies do zależności w npm package.json

154

Czy jest jakieś krótkie polecenie przenoszenia modułu z devDependenciesdo dependenciesw package.json?

Zawsze to robię:

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

Czy istnieje krótsze podejście do tego?

Emad Emami
źródło

Odpowiedzi:

191

Tak! przenieść moduł z devDependenciesdo dependencies:

npm install <module_name> --save-prod

Francois Wouts
źródło
182

Jeśli chcesz zrobić coś odwrotnego (tj. Przenieść moduł z dependenciesdo devDependencies), po prostu zrób:

npm install <module_name> --save-dev

lub skrótowo:

npm i <module_name> -D

shorthand to move from devDependenciesto dependencies(prod):

npm i <module_name> -P
Sid
źródło
5
Działa dla mnie, v5.6
Legends
1
shorthand npm i module-example -Dbędzie również działał, aby przejść od prod do dev, a także npm i module-example -Pprzejść od dev do prod zależności
Andriy
@Andriy dzięki, nie myślałem o tym. Zaktualizuje odpowiedź!
Sid
Jeśli zamiast tego używasz przędzy, musisz najpierw usunąć ją z zależności za pomocą, yarn remove <module_name>a następnie ponownie dodać ją do devDependencies za pomocąyarn add <module_name> --dev
Eugenio
16

W przędzy:

Przenieś moduł z devDependenciesdo dependencies:

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

Przenieś moduł z dependenciesdo devDependencies:

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

Jak wspomniano w komentarzach, polecenie faktycznie usuwa moduł i ponownie instaluje go w nowym miejscu.

yohaiz
źródło
1
Czy to naprawdę słuszne? Czy w przędzy nie ma sposobu, aby przenieść rzeczy z dependenciesdo devDependenciesbez usuwania i ponownego dodawania?
LondonRob,
@LondonRob to jedyny sposób, jaki znalazłem
yohaiz,
21
To się nie porusza, to po prostu usunięcie pakietu i zainstalowanie go ponownie
Thanveer Shah
@seeker_of_bacon Nic nie działa tutaj w tle. Możesz się mylić &&z &.
rudolfbyker
3

Jeśli Twój projekt nie ma jeszcze pliku blokującego ani pliku powłoki, możesz po prostu przenieść odpowiednią linię w pliku package.json .

(Nie polecam używania plików blokujących)

Sean
źródło
3

Problem z używaniem poleceń npmlub yarnpolega na tym, że istnieje szansa, że ponownie dodawana wersja jest inną wersją niż ta, która jest obecnie używana. Jeśli tego właśnie chcesz - zarówno posunięcia, jak i ulepszenia - skorzystaj z zaakceptowanej odpowiedzi.

Jeśli nie, po prostu edytuj ręcznie,package.json aby przenieść linię z devDependenciesobiektu do dependenciesobiektu (w razie potrzeby utwórz ją). Możesz też iść w innym kierunku.

Plik blokady nie zawiera żadnych informacji o tym, czy rzeczy są zależne od prod lub dev, więc nie trzeba go aktualizować. Możesz wykonać npm/ yarn installpóźniej, aby naprawić wszelkie flagi w plikach blokujących.

eedrah
źródło
Chociaż istnieje tylko jedna dependenciessekcja najwyższego poziomu package-lock.json, każdy wpis może mieć devflagę wskazującą, czy jest to zależność dev, czy zależność przechodnia. Zobacz docs.npmjs.com/files/package-lock.json#dev "Jeśli [dev jest] true, to ta zależność jest albo zależnością programistyczną TYLKO modułu najwyższego poziomu, albo zależnością przechodnią jednego. Jest to fałsz dla zależności, które są zarówno zależnością rozwojową najwyższego poziomu, jak i zależnością przechodnią zależności nierozwojowej najwyższego poziomu. "
rob3c
0

Problem z używaniem instalacji npm polega na tym, że otrzymujesz zaktualizowane wersje. Dla mnie zadziałało:

  1. Przeniesienie ich do zamierzonej części (dev lub prod)
  2. Usuwanie ich z folderu node_modules
  3. Wykonać npm install

Dzięki temu wszystkie wersje pozostały nienaruszone.

Ahmed Mahmoud
źródło