Artikel ini bercakap tentang cara menggunakan package.json untuk mengurus versi pakej bergantung dalam projek hadapan sebenar.
Apakah kesan peraturan yang berbeza terhadap pengurusan pergantungan?
Format versi: X.Y.Z[-string]
Maksudnya ialah:
Contohnya:
6.3.2-alpha
bermaksud:
Versi utama nombor 6, terdapat 6 lelaran kemas kini yang tidak serasi ke belakang.
Versi kecil nombor 3, dengan 3 lelaran fungsi kecil. 6.*.*
Versi nombor 2 yang disemak, dengan 2 pembetulan pepijat atau perubahan ciri bukan utama yang lain. 6.*.*
Nombor versi lanjutan alpha
, menunjukkan peringkat percubaan pemprosesan.
Bacaan lanjutan: Versi Semantik 2.0.0
akan ditafsirkan seperti berikut:
"vue": "~2.5.22", "vue-class-component": "^6.0.0", "vue-router": "3.0.1", "express": "latest", "mongoose": "*",
Simbol^
: mengunci versi major, dan boleh mengemas kini nombor versi minor, nombor versi disemak dan lanjutan nombor versi
Sebagai contoh, "vue-class-component": "^6.0.0"
, apabila memasang kebergantungan, anda boleh memasang mana-mana versi yang mematuhi 6.*.*
, asalkan nombor versi utama ialah 6.
Simbol ~
: Kunci nombor versi utama dan nombor versi minor, dan kemas kini nombor versi yang disemak dan nombor versi sebelumnya
Contohnya, "vue": "~2.5.22"
, apabila memasang dependensi, anda boleh memasang mana-mana versi yang mematuhi 2.5.*
.
空符号
: Kunci semua nombor versi
, seperti "vue-router": "3.0.1"
, hanya pakej bergantung dengan versi 3.0.1
boleh dipasang .
符号*
: Tentukan julat nombor versi tertentu
Contohnya, vue-router": "3.0.*"
boleh memasang mana-mana versi yang ditetapkan oleh 3.0
, seperti 3.0.1
, 3.0.2
.
latest
: Pasang versi stabil terkini
Sebagai contoh, "express": "latest"
, anda boleh memasang 4.18.1
(versi terkini 2022.06.13).
*
: Pasang versi keluaran terkini, tidak semestinya versi stabil
Sebagai contoh, "mongoose": "*"
, anda boleh memasang 6.0.0-rc2
, 3.9.7
, dsb.
Git URL
: Gunakan pakej yang diterbitkan pada Git
Format rujukan: <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]</semver></commit-ish></path></port></hostname></password></user></protocol>
"test": "git+ssh://git@github.com:npm/cli.git#v1.0.27"
sambungan Baca: dokumen npm - dependencies
Seperti tajuknya, inilah pengalaman yang diperolehi melalui pengajaran darah.
Apabila pengarang menggunakan system.js
, sekatan versi yang digunakan ialah: system.js: "^6.3.2"
.
Apabila memasang kebergantungan, versi > 6.3.2
telah dipasang secara tidak sengaja, menyebabkan ralat pengendalian projek.
Sebabnya ialah pengarang system.js
tidak menamakan nombor versi mengikut spesifikasi semver
, yang mengakibatkan projek pengarang memperkenalkan kemas kini yang tidak serasi dengan , yang menyebabkan projek itu berjalan dengan tidak betul .
Pergantungan yang digunakan dalam persekitaran pengeluaran dipasang secara seragam dalam dependencies
Bawah .
Contohnya:
"dependencies": { "chalk": "^2.4.2", "commander": "^3.0.0", "fs-extra": "^8.1.0", "inquirer": "^6.5.0", "mem-fs": "^1.1.3", "mem-fs-editor": "^6.0.0", "shelljs": "^0.8.3" }
Kod di atas ialah serpihan cli
toolkit yang dibuat oleh pengarang. package.json
digunakan untuk mengendalikan fail Jika ia diisytiharkan dalam shelljs
, ralat akan dilaporkan selepas pengguna memasang pakej alat semasa. devDependencies
Oleh kerana kebergantungan yang diisytiharkan dalam medan
tidak akan dipasang apabila devDependencies
digunakan. Mesti diisytiharkan dalam medan npm install 工具包
untuk dipasang. dependencies
生产环境不需要使用的依赖,都需要安装在devDependencies
下。
因为生产环境下,是不会安装devDependencies
字段下的依赖的。
举个例子:
"devDependencies": { "@commitlint/cli": "^8.1.0", "@commitlint/config-conventional": "^8.1.0", "commitizen": "^4.0.3", "commitlint-config-cz": "^0.12.1", "cz-customizable": "^6.2.0", "standard-version": "^7.0.0" }
上述代码,是笔者做的cli
工具包的package.json
中的片段。commitizen
是笔者用于规范Git
提交规范的依赖包,只在开发环境中使用,所以在devDependencies
中声明。
当开发一些插件和工具包时,对使用方的运行环境的依赖包版本有要求,可以使用peerDependencies
字段进行声明。
举个例子:
{ "name": "tea-latte", "version": "1.3.5", "peerDependencies": { "tea": "2.x" } }
当前工具tea-latte
,依赖tea
包。而且,要求tea
包是主版本2。
当不满足要求时,控制台会进行报错处理。
注意
npm v7版本, peerDependencies会默认安装。
npm v3 到 npm v6版本,peerDependencies
不会自动安装。
更多node相关知识,请访问:nodejs 教程!
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menggunakan package.json untuk pengurusan versi pakej bergantung. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!