package.json
. Artikel ini akan membawa Anda menelusuri file package.json. Saya harap ini bermanfaat bagi Anda! Memahami package.json
Di bawah direktori root setiap proyek (paket diunduh dari npm, atau proyek nodejs lainnya), umumnya terdapat file package.json, yang mendefinisikan berbagai modul yang diperlukan untuk proyek tersebut, serta informasi konfigurasi proyek ( Metadata seperti nama, versi, lisensi, cara memulai proyek, menjalankan skrip, dll.). Perintah npm install
secara otomatis mengunduh modul yang diperlukan berdasarkan file konfigurasi ini.
File package.json
adalah objek JSON, dan setiap anggota objek merupakan pengaturan proyek saat ini. Misalnya, name
adalah nama proyek, version
adalah versinya (mengikuti format "versi mayor.versi minor.versi minor"). Ini juga akan memainkan banyak peran dalam siklus hidup proyek, termasuk pengembangan, pengujian, dan versi online.
package.json berfungsi
Cara membuat package.json
1. Gunakan alat baris perintah klien CLI
npm init
Ini akan memulai kuesioner baris perintah, yang akan membuat package.json
di direktori tempat Anda memulai perintah.
Entri front-end (vue) ke kursus penguasaan: Masuk pembelajaran
2. Buat nilai default
Untuk mendapatkan nilai default package.json
, jalankan npm init
dengan tanda --yes
atau -y
:
npm init -y
Metode ini akan menggunakan package.json
dari yang sekarang. Informasi yang diekstraksi dari direktori menghasilkan nilai default, melewatkan langkah menjawab pertanyaan.
3. Buat
file package.json baru secara manual langsung di direktori root proyek, lalu masukkan konten yang relevan. Silakan lihat catatan pada package.json di bawah untuk detailnya.
Penjelasan rinci tentang bidang umum dalam file package.json
1. Nama
adalah bidang yang wajib diisi, yaitu nama modulpaket saat ini. Panjangnya harus kurang dari atau sama dengan 214 karakter ) atau "_" (garis bawah) dan tidak boleh berisi huruf besar.
Nama ini mungkin diteruskan sebagai parameter ke require(), sehingga harus singkat, namun tetap bermakna.
2. Versi
adalah kolom yang wajib diisi, nomor versi paket saat ini, defaultnya adalah
1.0.0
saat dibuat untuk pertama kali.
versi harus dapat diselesaikan oleh modul node-semver tempat npm bergantung. Menentukan kemajuan iterasi versi proyek saat ini. (Ikuti format "major version. minor version. minor version")
Mungkin banyak sobat sekarang yang kurang memperhatikan atau tidak peduli dengan nomor versinya, dan lebih memilih menggunakan nomor versi produknya, atau git metode kode hash.
3. Bidang opsional deskripsi
harus berupa string. Informasi deskripsi paket saat ini adalah sebuah string. Ini membantu orang menemukan paket saat menggunakan pencarian npm.
Jika tidak ada informasi description
di package.json, npm menggunakan baris pertama README.md di proyek sebagai informasi deskripsi. Informasi deskripsi ini akan membantu orang lain mencari proyek Anda, jadi disarankan untuk menulis informasi description
dengan baik.
4. Bidang opsional utama
menentukan file entri untuk pemuatan proyek.
Nilai default bidang ini adalah index.js
di bawah direktori root modul.
5.
Bidang opsional skrip
scripts
adalah objek hash yang terdiri dari perintah skrip. Mereka dieksekusi dalam siklus hidup paket yang berbeda. Kuncinya adalah peristiwa siklus hidup dan nilainya adalah perintah yang akan dijalankan. Menentukan singkatan baris perintah npm untuk menjalankan perintah skrip. Misalnya, start menentukan perintah yang akan dijalankan saat menjalankan npm run start. Kita dapat menyesuaikan perintah yang ingin kita jalankan skripnya.
Referensi: http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
skrip eksekusi konfigurasi skrip
1)
Jalankan perintah echo xxx
Ketika saya menjalankan npm run, Shell baru akan secara otomatis dibuat dan perintah skrip yang ditentukan akan dijalankan di Shell ini. Oleh karena itu, selama perintah tersebut dapat dijalankan oleh Shell (biasanya Bash), maka dapat ditulis dalam skrip npm. juga akan menyalin node_modules/.bin di direktori saat ini ke jalur sistem saat ini (ini hanya salinan sementara. Setelah eksekusi selesai, variabel PATH akan dikembalikan ke keadaan semula), jadi semua skrip di node_modules /.bin subdirektori dari direktori saat ini, Semua dapat dipanggil langsung menggunakan nama skrip tanpa menambahkan jalur.
Misalnya:
jika kita menggunakan node untuk menjalankan layanan node.js, node + 文件
dapat menggunakan node server.js
; kita juga dapat menggunakan webpack untuk mengemas file front-end, tentu saja webpack-dev-server
dan webpack-dev-server perlu diinstal. Modul dependen;
"skrip": { "build": "webpack --mode=pengembangan", "dev": "webpack-dev-server --mode=pengembangan --contentBase=./dist", "server":"simpul app.js" }
Kita memasukkan npm run server
di alat baris perintah, dan node app.js akan dipanggil untuk membantu kita menjalankannya.
Bentuk singkatnya:
npm start adalah npm run start npm stop adalah singkatan dari npm run stop npm test adalah singkatan dari npm run test npm restart adalah singkatan dari npm run stop && npm run restart && npm run start
Skrip yang umum digunakan ----- Transfer koleksi online
// Hapus direktori "bersih": "rimraf dist/*", // Bangun layanan HTTP "serve" secara lokal: "http-server -p 9090 dist/", //Buka browser "open:dev": "pembuka http://localhost:9090", //Segarkan "livereload" secara real-time: "live-reload --port 9091 dist/", // Buat file HTML "build:html": "jade index.jade > dist/index.html", // Selama file CSS berubah, jalankan kembali build "watch:css": "watch 'npm run build:css'assets/styles/", // Selama file HTML berubah, jalankan kembali build "watch:html": "watch 'npm run build:html' aset/html", //Menerapkan ke Amazon S3 "deploy:prod": "sinkronisasi s3-cli ./dist/ s3://example-com/prod-site/", //Bangun favicon "build:favicon": "skrip simpul/favicon.js", "start": "cross-env NODE_ENV=server node produksi/index.js",
6. dependencies dan devDependencies
adalah kolom opsional. Bidang
dependencies
menentukan modul yang bergantung pada proyek, dandevDependencies
menentukan modul yang diperlukan untuk pengembangan proyek.
Nilai menunjuk pada suatu objek. Setiap anggota objek ini terdiri dari nama modul dan persyaratan versi yang sesuai, yang menunjukkan modul dependen dan rentang versinya.
Tidak ada package.json yang dibuat secara default, itu akan dihasilkan ketika kita menginstal npm install
sebuah modul.
npm instal ekspres npm instal ekspres --simpan npm install express --save-dev
Kode di atas berarti menginstal modul express secara terpisah.
dependencies
--save-dev
berarti menulis modul --save
atribut dependencies
devDependencies
7.
bidang opsional bundledDependencies, dependensi lain yang dikemas pada saat yang sama saat menerbitkan paket.
8. bidang opsional peerDependencies
, ketergantungan kompatibilitas, jika proyek atau modul Anda bergantung pada modul lain pada saat yang sama, tetapi versi yang bergantung padanya berbeda.
Misalnya, proyek Anda bergantung pada modul A dan modul B versi 1.0, dan modul A sendiri bergantung pada modul B versi 2.0.
{ "nama": "chai-seperti yang dijanjikan", "ketergantungan rekan": { "chai": "1.x" } }
Kode di atas menetapkan bahwa saat memasang modul chai-as-promised
, program utama chai
harus diinstal bersama, dan versi chai
harus 1.x
Jika ketergantungan yang ditentukan oleh proyek Anda adalah chai
versi 2.0, kesalahan akan dilaporkan.
9. Bidang opsional bin
. Bidang bin digunakan untuk menentukan lokasi file yang dapat dieksekusi yang sesuai dengan setiap perintah internal.
Buat file /bin/www di direktori root proyek
#!Konfigurasikan
"bin"di
/usr/bin/env nodepackage.json: {
"lee-cli":"./bin/www" }
npm link
menambahkan jalur nilai atribut bin dalam paket ke tautan global, membuat koneksi pintasan, dan
mengeksekusi lee-cli
pada baris perintah untuk mengeksekusi file bin/www. Prosesnya adalah:
Pada contoh di atas, www akan membuat tautan simbolik node_modules/.bin/www
. Karena direktori node_modules/.bin/
akan ditambahkan ke variabel PATH sistem saat runtime, skrip ini dapat dipanggil langsung melalui perintah tanpa jalur saat menjalankan npm.
10. config
Bidang config digunakan untuk mengeluarkan nilai ke variabel lingkungan
{ "nama": "paket", "konfigurasi" : { "pelabuhan" : "8080" }, "skrip" : { "mulai" : "node server.js" } }
Jika kita ingin mengubahnya, kita dapat menggunakan
npm config set package:port 80
11. Bidang opsional mesin
menentukan versi platform tempat modul dijalankan, seperti versi Node atau browser tertentu versi
npm
yang berlaku.
"mesin" : { "simpul": ">=0,10,3 <0,12" }
12. Bidang opsional lisensi
, yang menunjukkan definisi lisensi yang berlaku untuk kode yang dijelaskan di package.json. Protokol yang berbeda memiliki batasan yang berbeda pula. Beri tahu pengguna izin apa yang mereka miliki untuk menggunakan modul Anda dan batasan apa yang ada dalam penggunaannya.
Silakan merujuk ke: selectalicense.com/ untuk memilih lisensi.
Misalnya: MIT: izin maksimum, orang lain dapat mengubah kode Anda setelah mengunduhnya, nilai instalasi default.
13. Bidang opsional penulis
, pengembang proyek.
14.
Bidang opsional pribadi, nilai Boolean, apakah pribadi jika disetel ke true, npm menolak untuk dipublikasikan.
Ini adalah cara untuk mencegah paket pribadi dirilis ke pihak luar. Jika Anda ingin menggabungkan paket untuk diterbitkan hanya ke registri tertentu (misalnya, registri internal), Anda dapat menggunakan deskripsi kamus terbitkanConfig di bawah ini untuk mengganti parameter konfigurasi registri pada waktu penerbitan.
15.
Bidang opsional kata kunci, kata kunci proyek, adalah array string. Ini membantu orang menemukan paket saat menggunakan pencarian npm.
16. Bidang os
opsional menentukan sistem operasi di mana modul dapat dijalankan.
17. style
style menentukan lokasi file style saat digunakan oleh browser.
18.
Jenis tempat penyimpanan kode paket repositori bisa di git atau svn. git bisa di Github.
19. Bidang opsional beranda
tidak memiliki URL dengan awalan protokol seperti http://.
Masalah versi:
versi: "1.0.0"
1.0.0:
Perubahan digit pertama berarti: ketidakcocokan dengan kode lama, pembaruan skala besar, rilis versi baru;
digit kedua berarti: beberapa fungsi telah ditambahkan, kompatibilitas munduryang ketiga
;digit
berarti: beberapa fungsi telah ditambahkan, bit kompatibilitas mundur
berarti: tambalan kecil, koreksi bug;
ketika kami menerbitkan proyek, kami menggunakan npm + git
npm version patch
(patch patch). ; gunakan git tag
untuk mengeksekusi dan secara otomatis akan berada di git npm version minor
untuk mengubah digit kedua nomor versi; sinkronkan versi gitnpm version major
;versi npm [<versi baru> |.utama |.minor |.patch |.premajor |.prapatch |. mayor: nomor versi mayor minor: nomor versi minor patch: nomor patch premajor: prepatch versi mayor awal: versi minor awal prarilis: versi pra-rilis
ps: Catatan, jika dilaporkan kesalahan: Direktori kerja Git tidak bersih, artinya Anda perlu git status
bersih sekarang.
git tambahkan. git commit -m "package.json penjelasan rinci"
npm versin monir -m"增加版本号"
git push -u origin master
Bagaimana cara merumuskan aturan?
Sebagai pengguna, kami dapat menunjukkan di file package.json berapa banyak pembaruan yang dapat kami terima untuk paket ini (dengan asumsi kami saat ini mengandalkan versi 1.2.4):
Jika kami hanya bermaksud menerima pembaruan ke versi patch (yaitu, perubahan digit terakhir), Anda dapat menulisnya seperti ini:
1.2 1.2.x ~1.2.4
Jika Anda menerima pembaruan versi minor (perubahan pada posisi kedua), Anda dapat menulis seperti ini:
1 1.x ^1.2.4
Jika Anda dapat menerima pembaruan versi utama (tentu saja menerima versi minor dan perubahan versi patch), Anda dapat menulis seperti ini:
*x
Ringkasnya: ada tiga jenis perubahan versi, jenis pembaruan paket dependen mana yang diterima ? Tulis nomor versi secara akurat ke digit sebelumnya.
Siklus dan tahapan versi:
2.1.0-beta.1
pasaran
2.1.0-beta.1
umumnya digunakan oleh pengguna seperti ini Hal semacam ini tidak akan diinstal. Jenis ini dapat digunakan oleh orang dalam dan penguji.
Contoh | masalah |
---|---|
paket | ketergantungan |
~ | 1.2.3 versi mayor + versi minor + versi patch; 1.2.3 <= versi < 1.3.0; ~1.2 versi mayor + versi minor |
; | versi utama; 1.0.0 <= versi < 2.0.0 |
Deskripsi | rentang versi | contoh | simbol |
---|---|---|---|
1.0.0 | 1.0.0 | dikunci ke versi 1.0.0 dan harus versi ini. | |
^ akan cocok dengan paket ketergantungan versi besar terbaru | ^1.2.3, ^0.2.3 | >=1.2.3 <2.0.0, >=0.2.3 <0.3.0 | berarti menginstal versi terbaru 1.xx (tidak lebih rendah dari 1.2 .3, termasuk 1.3.0), tetapi 2.xx tidak akan diinstal, yang berarti nomor versi utama tidak akan diubah selama instalasi. Perlu dicatat bahwa jika nomor versi utama adalah 0, tanda sisipan akan berperilaku sama seperti tanda gelombang. Hal ini karena masih dalam tahap pengembangan, dan bahkan perubahan kecil pada nomor versi dapat menyebabkan ketidakcocokan program. (Versi utama) |
~ akan cocok dengan paket ketergantungan versi minor terbaru | ~1.2.3 | >=1.2.3 <1.3.0 | berarti menginstal versi terbaru 1.2.x (tidak lebih rendah dari 1.2.3), tetapi tidak menginstal 1.3.x Artinya, nomor versi mayor dan nomor versi minor tidak akan diubah selama instalasi. |
>= | >=2.1.0 | >=2.1.0 | lebih besar dari atau sama dengan 2.1.0 |
<= | <=2.0.0 | <=2.0.0 | kurang dari atau sama dengan 2.0.0 |
terakhir | Instal versi terbaru | ||
* | >=0.0.0 | versi apa pun | |
- | 1.2.3 - 2.3.4 | >=1.2.3 <=2.3.4 |
Bedakan antara menginstal Dependencies
dan dependencies
?
devDependencies
adalah modul yang diperlukan untuk pengembangan, sehingga kita dapat menginstalnya sesuai kebutuhan selama proses pengembangan untuk meningkatkan efisiensi pengembangan kita, seperti beberapa perpustakaan pihak ketiga yang terkenal, webpack
, rollUp
, less
, babel
, dll. Tidak perlu menginstalnya di lingkungan produksi.
Pustaka berikut direkomendasikan untuk diinstal ke dalam devDependencies
:
paket ketergantungan (tentukan, perbarui, lokal, gunakan, hapus instalasi)
1. Instal paket ketergantungan lokal
npm install jquery
Perintah ini akan buat di direktori node_modules
direktori saat ini, lalu unduh paket yang kami tentukan ke direktori ini.
2. Untuk menentukan versi instalasi, Anda dapat @版本号
setelah nama paket.
Jika nama sebuah paket diawali dengan paket @
, maka itu adalah paket tercakup .
npm instal [email protected] npm instal jquery@">=1.1.0 <2.2.0"Setelah
npm install jquery@latest
diperbarui, nomor versi di dependensi juga akan berubah.
3. Perbarui paket dependen
npm update jquery
4. Gunakan paket
let jquery = require('jquery');
<script src="/node_modules/jquery/dist/jquery.js">//Ini perlu memperhatikan jalur</script>
6, Hapus instalasi paket dependen
npm uninstall jquery
Versi semantik (aturan versi semantik)
https://docs.npmjs.com/about-semantic-versioning
https://github.com/npm/node-semver
package .json Catatan
sesuai dengan di atas Saat kita menggunakan npm init
kita akan diminta untuk mengisi beberapa item. Beberapa di antaranya opsional dan ada pula yang wajib diisi. Bidang yang wajib diisi ini adalah semua bidang yang harus dimiliki oleh konten package.json
: name
dan version
. Jika tidak, install
tidak dapat dijalankan.
xxx
Catatan lain: