Dalam bahasa Node.js, tidak ada perbedaan penting antara paket dan modul. Paket adalah abstraksi yang lebih dalam berdasarkan modul. Paket merangkum fungsi independen tertentu untuk rilis, pembaruan, manajemen ketergantungan dan kontrol versi. Node.js mengimplementasikan mekanisme paket sesuai dengan spesifikasi CommonJS dan mengembangkan NPM untuk menyelesaikan kebutuhan pelepasan paket dan akuisisi.
Paket Node.js adalah direktori yang berisi paket deskripsi paket package.json dalam format JSON. Paket Node.js pada dasarnya mengikuti spesifikasi CommonJS, sehingga memiliki karakteristik berikut:
Fitur paket yang ditentukan oleh spesifikasi CommonJS:
1) direktori tingkat atas berisi file package.json;
2) Direktori Bin menyimpan file biner;
3) Direktori LIB menyimpan file JavaScript;
4) DOC Direktori menyimpan dokumen;
5) Tes Direktori Tes Menyimpan Tes Unit.
Modul dan file node.js sesuai satu per satu. File ini tidak hanya dapat berupa file sumber JavaScript atau file biner, tetapi juga direktori. Paket paling sederhana adalah modul direktori.
Paket Node.js biasanya merupakan kumpulan beberapa modul, yang memberikan abstraksi tingkat lebih tinggi berdasarkan modul, yang setara dengan menyediakan beberapa pustaka fungsi antarmuka tetap.
Dengan menyesuaikan paket.json, kami dapat membuat paket yang lebih kompleks, lebih lengkap dan lebih standar untuk penerbitan.
Ketika Node.js memanggil paket, pertama -tama memeriksa bidang utama file package.json dalam paket dan menggunakannya sebagai modul antarmuka paket. Jika bidang utama file package.json tidak ada, node.js akan mencoba menemukan index.js atau index.node sebagai antarmuka paket.
File package.json adalah file yang digunakan oleh spesifikasi CommonJS untuk menggambarkan paket. File package.json yang sepenuhnya sesuai dengan spesifikasi harus berisi bidang -bidang berikut:
1) Nama: Nama paket. Nama paket unik dan terdiri dari huruf kecil, angka dan garis bawah, dan tidak dapat berisi spasi.
2) Deskripsi: Deskripsi paket. Deskripsi singkat tentang paket tersebut.
3) Versi: Nomor Versi. Versi string yang memenuhi spesifikasi pengenalan versi semantik.
4) Kata kunci: Array kata kunci, biasanya digunakan untuk pencarian.
5) Pemelihara: Pengelola Array. Setiap elemen berisi nama, email (opsional), dan bidang web (opsional).
6) Kontributor: Array Kontributor. Formatnya sama dengan array pemelihara. Penulis paket harus menjadi elemen pertama dari array kontributor.
7) Bug: Alamat untuk mengirimkan bug dapat berupa URL atau alamat email.
8) Lisensi: Array Lisensi. Setiap elemen harus berisi jenis bidang (nama lisensi) dan URL (alamat yang ditautkan ke teks lisensi).
9) Repositori: Array alamat hosting repositori. Setiap elemen harus berisi jenis (jenis repositori, seperti git), url (alamat repositori), dan jalur (relatif opsional terhadap jalur repositori).
10) Ketergantungan: Ketergantungan paket. adalah array asosiatif yang terdiri dari nama paket dan nomor versi.
Catatan: Spesifikasi "Pengakuan Versi Semantik" adalah seperangkat spesifikasi penamaan versi yang diusulkan oleh negara -negara asing. Tujuan aslinya adalah untuk menyelesaikan berbagai masalah perbandingan ukuran nomor versi, dan saat ini diadopsi oleh banyak sistem manajemen paket.
Berikut adalah contoh paket.json yang sepenuhnya sesuai dengan spesifikasi CommonJS:
Salinan kode adalah sebagai berikut:
{
"Nama": "TestPackage",
"Deskripsi": "Paket saya untuk CommonJS.",
"Versi": "0.1.0",
"Kata kunci": [
"TestPackage",
"Liq"
],
"Pemelihara": [
{
"Nama": "liq",
"Email": "[email protected]",
}
],
"Kontributor": [
{
"Nama": "liq",
"Web": "http://blog.csdn.net/chszs"
}
],
"Bugs": {
"Mail": "[email protected]",
"Web": "http://blog.csdn.net/chszs"
},
"Lisensi": [
{
"Jenis": "Lisensi Apache V2",
"url": "http://www.apache.org/licenses/apache2.html"
}
],
"Repositori": [
{
"ketik": "git",
"url": "http://github.com/chszs/packagetest.git"
}
],
"dependensi": {
"Webkit": "1.2",
"ssl": {
"Gnutls": ["1.0", "2.0"],
"openssl": "0.9.8"
}
}
}