Pengenalan
Dokumen ini mempunyai semua konfigurasi yang diperlukan dalam package.json. Ia mestilah json sebenar, bukan objek js.
Kebanyakan tingkah laku yang diterangkan dalam dokumen ini dipengaruhi oleh npm-config(7).
Nilai lalai
npm akan menetapkan beberapa nilai lalai berdasarkan kandungan pakej.
"skrip":{"preinstall": "nod-waf clean || true; nod-waf configure build"}
Jika terdapat fail wscript dalam direktori akar pakej, npm akan menyusun arahan prapasang dengan nod-waf secara lalai.
"skrip":{"preinstall": "node-gyp rebuild"}
Jika terdapat fail binding.gyp dalam direktori akar pakej, npm akan menyusun arahan prapasang dengan node-gyp secara lalai.
"penyumbang": [...]
Jika terdapat fail AUTHORS dalam direktori akar pakej, npm akan memprosesnya baris demi baris dalam format Nama
nama
Medan paling penting dalam package.json ialah nama dan medan versi. Kesemuanya diperlukan dan tidak boleh dipasang tanpanya. Pengecam yang dibentuk mengikut nama dan versi bersama-sama diandaikan unik. Menukar pakej juga harus menukar versi.
nama ialah nama benda ini. Nota:
1 Jangan letakkan nod atau js dalam nama. Kerana anda menulis package.json ia diandaikan sebagai js, tetapi anda boleh menentukan enjin menggunakan medan "enjin" (lihat di bawah).
2. Nama ini akan digunakan sebagai sebahagian daripada URL, parameter baris arahan atau nama folder. Sebarang aksara bukan url-selamat tidak dibenarkan.
3. Nama ini boleh dihantar ke require() sebagai parameter, jadi ia harus pendek, tetapi juga jelas dalam maksud.
4. Sebelum anda jatuh cinta dengan nama anda, anda mungkin ingin menyemak daftar npm untuk melihat sama ada nama itu sudah digunakan. http://registry.npmjs.org/
versi
Medan paling penting dalam package.json ialah medan nama dan versi. Kesemuanya diperlukan dan tidak boleh dipasang tanpanya. Pengecam yang dibentuk mengikut nama dan versi bersama-sama diandaikan unik. Menukar pakej juga harus menukar versi.
versi mesti boleh dihuraikan oleh nod-semver, yang disertakan dalam kebergantungan npm. (Jika anda ingin menggunakannya sendiri, anda boleh melaksanakan npm install semver)
Untuk "nombor" atau "julat" yang tersedia lihat semver(7).
penerangan
Letakkan pengenalan, rentetan. Adalah mudah bagi yang kalah untuk mencari dalam carian npm.
kata kunci
Kata kunci, tatasusunan, rentetan. Ia juga mudah untuk orang yang kalah untuk mencari dalam carian npm.
halaman utama
URL laman web rasmi projek.
Nota: Ini tidak sama dengan "url". Jika anda meletakkan medan "url", pendaftaran akan menganggap ia adalah lompatan ke alamat yang anda terbitkan di tempat lain, dan kemudian memberitahu anda untuk tersesat.
Ya, persetankan saya, jangan bergurau.
pepijat
URL dan/atau alamat e-mel isu penyerahan projek anda. Ini berguna untuk diaosi yang mempunyai masalah.
Ia kelihatan seperti ini:
Anda boleh menentukan satu atau dua. Jika anda hanya mahu menyediakan url, maka tiada objek diperlukan, hanya rentetan.
Jika url disediakan, ia akan digunakan oleh arahan npm bugs.
lesen
Anda harus menyatakan lesen supaya orang ramai mengetahui hak dan sekatan penggunaan.
Cara paling mudah ialah, jika anda menggunakan lesen am seperti BSD atau MIT, anda hanya perlu nyatakan nama lesen, seperti ini:
medan orang: pengarang, penyumbang
Penulis adalah seorang. penyumbang adalah pelbagai orang. Orang ialah objek dengan medan nama, url pilihan dan medan e-mel, seperti ini:
Anda juga boleh menetapkan medan penyelenggara peringkat atas dalam maklumat pengguna npm anda.
fail
fail ialah tatasusunan yang mengandungi fail dalam projek. Jika folder dinamakan, fail dalam folder juga akan disertakan. (kecuali diabaikan oleh syarat lain)
Anda juga boleh menyediakan fail .npmignore supaya fail dikekalkan walaupun ia disertakan dalam medan fail. Malah, ia sama seperti .gitignore.
utama
Medan utama ialah ID modul, yang merupakan penunjuk kepada projek utama program anda. Iaitu, jika nama pakej anda ialah foo, dan pengguna memasangnya, dan kemudian memerlukan("foo"), maka objek eksport modul utama anda akan dikembalikan.
Ini sepatutnya menjadi ID modul berbanding dengan direktori akar.
Untuk kebanyakan modul, ia sangat masuk akal dan tiada yang lain.
bin
Banyak pakej mempunyai satu atau lebih fail boleh laku yang mereka mahu diletakkan dalam PATH. npm membolehkan ibu tidak perlu risau lagi (sebenarnya, ciri inilah yang menjadikan npm boleh laku).
Untuk menggunakan ciri ini, berikan medan bin dalam package.json peta daripada nama arahan ke lokasi fail. Semasa pemulaan, npm akan memautkannya kepada awalan/bin (pemulaan global) atau ./node_modules/.bin/ (pemulaan tempatan).
Sebagai contoh, npm mempunyai:
Jadi, apabila anda memulakan npm, ia akan mencipta symlink kepada skrip cli.js ke dalam /usr/local/bin/npm.
Jika anda hanya mempunyai satu fail boleh laku dengan nama yang sama dengan nama pakej. Kemudian anda hanya boleh menggunakan rentetan, seperti:
Hasilnya sama seperti ini:
lelaki
Nyatakan satu fail atau tatasusunan fail untuk digunakan oleh program man.
Jika hanya satu fail disediakan, maka ia akan menjadi hasil man
Dengan cara ini, man foo boleh menggunakan fail ./man/doc.1.
Jika nama fail tidak bermula dengan nama pakej, maka ia akan diawali dengan yang berikut:
Fail lelaki perlu diakhiri dengan nombor dan kemudian secara pilihan dimampatkan dengan akhiran .gz. Nombor menentukan bahagian lelaki mana fail dipasang.
akan dicipta untuk man foo dan man 2 foo.
direktori
Spesifikasi CommonJS Packages menerangkan beberapa cara anda boleh menggunakan directorieshash untuk menunjukkan struktur pakej. Jika anda melihat pada package.json npm, anda akan melihat bahawa terdapat direktori berlabel doc, lib dan man.
Maklumat ini boleh digunakan pada masa hadapan.
directories.lib
Beritahu mereka yang kalah di mana folder perpustakaan anda. Tiada apa yang istimewa tentang menggunakan folder lib pada masa ini, tetapi ia adalah maklumat meta yang penting.
direktori.bin
Jika anda menentukan direktori "bin", maka semua fail dalam folder itu akan digunakan sebagai medan "bin".
Jika anda telah menyatakan medan "bin", ini tidak akan memberi kesan.
direktori.lelaki
Folder penuh dengan halaman manual. Berhati-hati mencipta medan "lelaki".
Folder yang penuh dengan halaman manual Sugar untuk menjana tatasusunan "lelaki" oleh
berjalan di dalam folder.
direktori.doc
Letakkan fail markdown di sini. Akhirnya, ini akan ditunjukkan dengan baik, mungkin, suatu hari nanti.
Letakkan fail penurunan harga di sini Akhirnya, ini akan dipaparkan dengan baik,
mungkin, suatu hari nanti.
direktori.contoh
Letakkan skrip contoh anda di sini. Suatu hari nanti, ia mungkin muncul dengan cara yang bijak.
repositori
Nyatakan tempat kod anda harus disimpan. Ini berguna untuk mereka yang ingin menyumbang. Jika repositori git berada di github, arahan npm docs boleh mencari anda.
Lakukan ini:
skrip
"skrip" ialah objek cincang yang terdiri daripada arahan skrip, yang dilaksanakan semasa kitaran hayat pakej yang berbeza. Kuncinya ialah peristiwa kitaran hayat dan nilainya ialah arahan untuk dijalankan.
Lihat npm-scripts(7)
konfigurasi
Cincangan "config" boleh digunakan untuk mengkonfigurasi parameter merentas versi yang digunakan dalam skrip pakej. Dalam contoh, jika pakej mempunyai konfigurasi berikut:
Lihat npm-config(7) dan npm-scripts(7).
pergantungan
Kebergantungan ialah cincangan yang menentukan julat versi untuk set nama pakej. Julat versi ialah rentetan yang dipisahkan oleh satu atau lebih ruang. Ketergantungan juga boleh menggunakan tarball atau URL git.
Sila jangan letakkan kebergantungan ujian atau peralihan dalam dependencieshash. Lihat devDependencies di bawah.
Lihat semver(7) untuk butiran.
1.versi mestilah konsisten sepenuhnya dengan versi
2.>versi mestilah lebih besar daripada versi
3.>=versi Sama seperti di atas
4.
6.~versi adalah lebih kurang sama, lihat semver(7)
7.1.2.x 1.2.0, 1.2.1, dsb., tetapi tidak termasuk 1.3.0
8.http://... Lihat 'Bergantung pada URL' di bawah
9.* Semua
10."" Kosong, sama seperti *
11.version1 - version2 adalah sama dengan >=version1 <=version2.
12. julat1 || julat2 Pilih satu daripada dua.
13.git... Lihat di bawah 'Bergantung pada URL Git'
14.user/repo Lihat 'URL GitHub' di bawah
15. Sebagai contoh, yang berikut adalah sah:
URL Kebergantungan
Anda boleh menentukan URL tarball, yang akan dimuat turun dan dimulakan apabila pakej dimulakan.
Bergantung pada URL Git
URL Git boleh dalam bentuk berikut:
URL GitHub
Selepas versi 1.1.65, anda hanya boleh menggunakan "user/foo-project" untuk merujuk url GitHub, seperti:
devDependencies
Jika seseorang bercadang untuk memuat turun dan menggunakan modul anda dalam program mereka, mereka mungkin tidak mahu atau perlu memuat turun dan membina rangka kerja ujian atau dokumentasi luaran yang anda gunakan.
Dalam kes ini, adalah lebih baik untuk menyenaraikan projek bergantung ini dalam cincang devDependencies.
Perkara ini akan dimulakan apabila pautan npm atau pemasangan npm dilaksanakan dalam direktori akar, dan boleh diurus seperti parameter konfigurasi npm yang lain. Lihat npm-config(7) untuk butiran.
Untuk langkah binaan bukan platform khusus, seperti menyusun CoffeeScript atau bahasa lainke Javascript, gunakan skrip praterbit untuk melaksanakannya dan letakkannya dalam devDependency.
Contohnya:
Skrip praterbit akan dijalankan sebelum diterbitkan, jadi pengguna tidak perlu memerlukannya sendiri untuk menyusunnya sebelum mereka boleh menggunakannya. Dan dalam mod pembangunan (seperti menjalankan npm install secara tempatan) skrip ini akan dijalankan untuk ujian yang lebih baik.
Pergantungan rakan sebaya
Dalam sesetengah senario, seperti apabila keperluan tidak diperlukan pada hos, anda ingin menunjukkan kunci keserasian pakej anda dengan alat hos atau pustaka. Ini biasanya digunakan untuk merujuk pemalam. Khususnya, modul anda mungkin mendedahkan antara muka khusus yang dijangka dan ditentukan oleh dokumen hos.
Contohnya:
Dengan mengandaikan hos ini mematuhi spesifikasi semver, hanya menukar versi utama pakej ini akan memecahkan pemalam anda. Oleh itu, jika anda telah menggunakan setiap versi 1.x dalam pakej, gunakan "^1.0" atau "1.x" untuk mewakilinya. Jika anda bergantung pada pengenalan ciri 1.5.2, gunakan ">= 1.5.2 < 2".
pergantungan dibundel
Satu set nama pakej yang akan disertakan apabila dikeluarkan.
Anda juga boleh mengejanya sebagai "bundleDependencies" (tiada d).
Pergantungan pilihan
Jika kebergantungan tersedia, tetapi anda mahu npm meneruskan pemula walaupun gagal dipasang, anda boleh meletakkannya dalam cincang pilihanDependencies. Ini ialah peta nama pakej kepada versi atau URL, sama seperti cincang kebergantungan. Ia hanya berjalan salah.
Mengendalikan kekurangan tanggungan juga merupakan tanggungjawab program anda. Contohnya, seperti ini:
enjin
Anda boleh menentukan versi nod yang berfungsi:
Jika anda menentukan medan "enjin", maka npm akan memerlukan nod untuk berada di dalamnya. Jika "enjin" diabaikan, npm akan menganggap bahawa ia berfungsi pada nod.
Anda juga boleh menggunakan medan "enjin" untuk menentukan versi npm yang boleh memulakan program anda dengan lebih baik, seperti:
enjinTegas
Jika anda pasti modul anda tidak akan berjalan pada nod atau npm selain daripada versi yang anda tentukan, anda boleh menetapkan "engineStrict": true dalam fail package.json. Ia mengatasi tetapan ketat enjin pengguna.
Jangan lakukan ini melainkan anda sangat, sangat pasti. Jika cincang enjin anda terlalu ketat, anda boleh dengan mudah mendapat masalah. Pertimbangkan pilihan ini dengan teliti. Jika orang menyalahgunakannya, ia akan dialih keluar dalam versi npm akan datang.
os
Anda boleh menentukan sistem pengendalian yang modul anda patut jalankan:
Walaupun tiada sebab yang kukuh, ia menyokong kedua-dua senarai hitam dan senarai putih.
cpu
Jika kod anda hanya boleh dijalankan pada seni bina CPU tertentu, anda boleh menentukan satu:
preferGlobal
Wenn es sich bei dem Paket in erster Linie um ein Befehlszeilenprogramm handelt, das global installiert werden muss, setzen Sie dies auf „true“, um Personen zu warnen, die es nur lokal installieren.
Es wird Benutzer nicht wirklich daran hindern, lokal zu installieren, aber es hilft, Missverständnisse zu vermeiden, wenn es nicht wie erwartet funktioniert.
privat
Wenn Sie „private“ auf „true“ setzen, wird npm es nicht veröffentlichen.
Dies ist eine Möglichkeit, eine versehentliche Freigabe privater Bibliotheken zu verhindern. Wenn Sie sicherstellen möchten, dass ein bestimmtes Paket nur in einer bestimmten Registrierung (z. B. einer internen Registrierung) veröffentlicht wird, überschreiben Sie den Veröffentlichungszeit-Konfigurationsparameter der Registrierung mit einer PublishConfighash-Beschreibung.
publishConfig
Dies ist eine Konfigurationssammlung, die zum Zeitpunkt der Veröffentlichung verwendet wird. Dies ist nützlich, wenn Sie ein Tag oder eine Registrierung einrichten möchten, um sicherzustellen, dass ein bestimmtes Paket nicht mit „lastest“ gekennzeichnet ist oder standardmäßig in der globalen öffentlichen Registrierung veröffentlicht wird.
Jede Konfiguration kann überschrieben werden, aber natürlich können nur „Tag“ und „Registrierung“ für Veröffentlichungszwecke relevant sein.
Eine Liste der Dinge, die überschrieben werden können, finden Sie unter npm-config(7).