Saya tidak sengaja menghapusnya dan telah membuat banyak perubahan package.json
sejak itu. Sebuah npm install
atau npm update
tidak menghasilkan package-lock.json
lagi. Saya mencoba membersihkan cache npm dan cache nvm saya, tetapi tidak ada yang berhasil. Saya mencobanya pada beberapa versi Node.js (6.10.3 Node.js - 3.10.10 npm adalah yang saya inginkan untuk dikerjakan), dan tidak berhasil pada semua.
Apakah ada cara untuk memaksa npm untuk menghasilkan package-lock.json
file?
node.js
npm
package-lock.json
Uang Besar
sumber
sumber
package-lock.json
dibuat secara otomatis secara default di npm mulai dari v5, di versi sebelumnya, nama file kunci sebelumnyanpm-shrinkwrap.json
dan itu dibuat secara manual menggunakannpm shrinkwrap
perintah.node 8.6.0
dan dengan itunpm 5.3.0
dan itu berhasil..gitignore
. Saya tidak sengajapackage-lock.json
masuk.gitignore
entah bagaimana dan karenapackage-lock.json
tidak muncul digit status
dalamnya membuat saya marah.Jawaban:
Secara default,
package-lock.json
diperbarui setiap kali Anda menjalankannpm install
. Namun, ini dapat dinonaktifkan secara global dengan mengaturpackage-lock=false
di~/.npmrc
.Saat
package-lock=false
pengaturan global aktif, Anda masih dapat memaksapackage-lock.json
file proyek untuk diperbarui dengan menjalankan:Perintah ini adalah satu-satunya cara jitu untuk memaksa
package-lock.json
pembaruan.sumber
package-lock.json
.package-lock.json
hanya didukung oleh npm v5 +.Di npm 6.x Anda dapat menggunakan
Menurut https://docs.npmjs.com/cli/install.html
sumber
npm i --package-lock-only --only=production
sepertinya tidak berhasil.package-lock.json
hanya untuk dependensi produksi. Tetapi jika Anda menjalankannyanpm i --only=production
harus menginstal hanya dependensi produksi. Jadi proses build Anda akan terlihat seperti ini: instal semua dependensi, buat aplikasi, hapus,node_modules
dan instal hanya dependensi produksi.Ini dijawab di komentar;
package-lock.json
adalah fitur dinpm
v5 dan lebih tinggi.npm shrinkwrap
adalah cara Anda membuat file kunci di semua versinpm
.sumber
package-lock.json
tidak sama persis dengan file shrinkwrap.npm-shrinkwrap.json
akan dipublikasikan ke registri, danpackage-lock.json
tidak akan.npm shrinkwrap
menghasilkannpm-shrinkwrap.json
, tapi bagaimana Anda menghasilkanpackage-lock.json
?--package-lock
Seperti yang dijelaskan beberapa jawaban, Anda harus menjalankan:
npm i
TAPI jika tidak menyelesaikan ...
Periksa versi
npm
executable Anda . (Bagi saya itu 3.xx yang tidak menggunakanpackage-lock.json
(sama sekali))npm -v
Ini harus setidaknya 5.xx (yang diperkenalkan file paket-lock.json.)
Untuk memperbarui npm di Lunix ikuti ini petunjuk .
Untuk lebih jelasnya file paket silahkan baca cerita menengah ini .
sumber
Jika versi npm Anda lebih rendah dari versi 5, instal versi yang lebih tinggi untuk mendapatkan pembuatan paket-lock.json otomatis .
Contoh: Tingkatkan npm Anda saat ini ke versi 6.14.0
Anda dapat melihat daftar versi npm terbaru dengan
sumber
package-lock.json dibuat ulang setiap kali Anda menjalankan
npm i
.sumber
node
dannpm
. Saya pikir itunpm
> =5.0
dannode
> =7.0
, tapi saya tidak 100% yakin tentang itu. Itu tidak berhasilnode 6.11.3
untuk saya.