Pindahkan modul dari devDependencies ke dependensi di npm package.json

154

Apakah ada perintah singkat untuk memindahkan modul dari devDependencieske dependenciesdalam package.json?

Saya menemukan diri saya selalu melakukan ini:

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

Apakah ada pendekatan yang lebih pendek untuk ini?

Emad Emami
sumber

Jawaban:

191

Iya! untuk memindahkan modul dari devDependencieske dependencies:

npm install <module_name> --save-prod

Francois Wouts
sumber
181

Jika Anda ingin melakukan yang sebaliknya (yaitu memindahkan modul dari dependencieske devDependencies) lakukan saja:

npm install <module_name> --save-dev

atau steno:

npm i <module_name> -D

singkatan untuk pindah dari devDependencieske dependencies(prod):

npm i <module_name> -P
Sid
sumber
5
Bekerja untuk saya, v5.6
Legenda
1
singkatan npm i module-example -Djuga akan bekerja untuk bergerak dari prod ke dev, serta npm i module-example -Puntuk berpindah dari dev ke depend depend
Andriy
@Andriy terima kasih, tidak memikirkannya. Akan memperbarui jawabannya!
Sid
Jika Anda menggunakan benang sebagai gantinya, Anda harus menghapusnya terlebih dahulu dari dependensi dengan yarn remove <module_name>dan kemudian menambahkannya kembali ke devDependency denganyarn add <module_name> --dev
Eugenio
16

Dalam benang:

Pindahkan modul dari devDependencieske dependencies:

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

Pindahkan modul dari dependencieske devDependencies:

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

Seperti yang dikatakan dalam komentar, perintah sebenarnya menghapus modul dan menginstalnya kembali di tempat baru.

yohaiz
sumber
1
Apakah ini benar? Apakah tidak ada benang untuk memindahkan barang dari dependencieske devDependenciestanpa melepas dan menambahkan kembali?
LondonRob
@ LondonRob, itulah satu-satunya cara yang saya temukan
yohaiz
21
Ini tidak bergerak, Ini hanya menghapus paket dan menginstalnya lagi
Thanveer Shah
@seeker_of_bacon Tidak ada yang berjalan di latar belakang di sini. Anda mungkin membingungkan &&dengan &.
rudolfbyker
3

Jika proyek Anda belum memiliki file lockfile atau shrinkwrap, Anda cukup memindahkan baris yang sesuai di file Anda package.json.

(Saya tidak merekomendasikan untuk tidak menggunakan lockfiles)

sean
sumber
3

Masalah dengan menggunakan npmatau yarnperintah adalah bahwa ada kemungkinan bahwa versi yang ditambahkan kembali adalah versi yang berbeda dari yang saat ini digunakan. Jika ini yang Anda inginkan - baik langkah maupun peningkatan - maka silakan dan gunakan jawaban yang diterima.

Jika tidak, cukup sunting secara manualpackage.json untuk memindahkan garis dari devDependenciesobjek ke dependenciesobjek (membuatnya jika perlu). Anda bisa pergi ke arah lain juga.

File kunci tidak berisi informasi apa pun jika ada ketergantungan pada file atau perangkat, sehingga tidak perlu diperbarui. Anda dapat melakukan npm/ yarn installsetelahnya untuk memperbaiki bendera apa pun di file kunci.

eedrah
sumber
Sementara hanya ada satu dependenciesbagian tingkat atas di package-lock.json, setiap entri berpotensi memiliki devbendera untuk menunjukkan apakah itu adalah ketergantungan dev atau ketergantungan transitif dari satu. Lihat docs.npmjs.com/files/package-lock.json#dev "Jika [dev] benar maka dependensi ini HANYA merupakan dependensi pengembangan HANYA dari modul level atas atau dependensi transitif dari satu. Ini salah untuk dependensi yang keduanya merupakan ketergantungan pengembangan tingkat atas dan ketergantungan transitif dari ketergantungan non-pembangunan tingkat atas. "
rob3c
0

Masalah menggunakan npm install adalah Anda berakhir dengan versi yang diperbarui. Apa yang berhasil untuk saya adalah:

  1. Memindahkan mereka ke bagian yang dimaksud (dev, atau prod)
  2. Menghapusnya dari folder node_modules
  3. Menjalankan npm install

Itu membuat semua versi tetap utuh.

Ahmed Mahmoud
sumber