nama
Sampai kami mempublikasikan paket di repositori, isian juga dapat dinilai. Pertanyaannya adalah bahwa bidang ini nyaman digunakan untuk menamai file instalasi atau, misalnya, untuk menampilkan nama produk pada halaman web-nya. Secara umum, "apa yang Anda sebut yacht, .."
versi
Gagasan utamanya adalah jangan lupa untuk menambah nomor versi sambil memperluas fungsionalitas, memperbaiki bug, ... Sayangnya, di kantor kami Anda masih dapat menemukan produk dengan versi yang tidak berubah 0.0.0. Lalu coba tebak fungsionalitas apa yang berfungsi untuk klien ...
utama
Bidang ini memberi tahu file mana yang akan diluncurkan saat aplikasi kita mulai (`npm start`). Jika paket digunakan sebagai dependensi, maka file mana yang akan diimpor saat menggunakan modul kami oleh aplikasi lain. Direktori saat ini adalah direktori di mana file `package.json` berada.
Dan juga, jika kita, misalnya, menggunakan
vscode , maka file yang ditentukan dalam bidang ini akan diluncurkan ketika debugger dipanggil atau ketika perintah "eksekusi" dijalankan.
Ekstensi ".js" dapat dihilangkan. Ini lebih merupakan konsekuensi dari semua kasus penggunaan yang mungkin, sehingga tidak secara langsung dijabarkan dalam dokumentasi.
mesin
Bidang ini berisi tuple: {"node":
version , "npm":
version , ...}.
Saya tahu bidang "simpul" dan "npm". Mereka menentukan versi node.js dan npm yang diperlukan agar aplikasi kita berfungsi. Versi diperiksa dengan menjalankan perintah install npm.
Sintaks standar untuk menentukan versi paket dependensi didukung: tanpa awalan (versi tunggal), awalan "~" (dua angka pertama dari versi harus cocok) dan awalan "^" (hanya nomor pertama dari versi harus cocok). Jika ada awalan, versi harus lebih besar dari atau sama dengan yang ditentukan dalam bidang ini. Hanya daftar versi; indikasi eksplisit lebih banyak, lebih sedikit, ... dll. juga berfungsi.
Penafian "Npm install" memeriksa versi yang ditentukan dalam "engine" hanya jika mode "engine-strict" diaktifkan. Kami menyertakannya untuk setiap proyek, menambahkan file .npmrc dengan baris: "engine-strict = true". Sekali waktu, "npm install" melakukan pemeriksaan ini secara default.
Beberapa wadah, setidaknya dalam dokumentasi, menulis bahwa versi yang sesuai akan digunakan secara default. Dalam hal ini, kita berbicara tentang Azure.
Contoh:
"engines": { "node": "~8.11",
"rake" reguler
Dan raja telanjang!
Berulang kali disepakati dengan klien bahwa versi `node.js` yang diperlukan harus paling tidak 8. Ketika versi awal aplikasi dikirimkan, semuanya berfungsi. "Suatu hari" setelah pengiriman versi baru di klien, aplikasi berhenti berjalan. Semuanya bekerja dalam pengujian kami.
Masalahnya adalah bahwa dalam versi ini kami mulai menggunakan fungsionalitas yang didukung hanya dari versi 8 node.js. Bidang "mesin" tidak diisi, jadi tidak ada yang memperhatikan sebelumnya bahwa klien memiliki versi kuno dari node.js. (Layanan web Azure default).
skrip
Kolom berisi tuple dari formulir: {"script1":
script1 , "script2":
script2 , ...}.
Ada skrip standar yang berjalan dalam situasi tertentu. Sebagai contoh, skrip "install" akan dijalankan setelah menjalankan "npm install". Sangat mudah, misalnya, untuk memeriksa ketersediaan program yang diperlukan agar aplikasi dapat berfungsi. Atau, katakanlah, untuk mengompres semua file statis yang tersedia melalui layanan web kami sehingga mereka tidak harus dikompres dengan cepat.
Dalam hal ini, Anda tidak dapat dibatasi hanya untuk nama standar. Untuk menjalankan skrip arbitrer, Anda harus menjalankan "npm run
script-name ".
Lebih mudah mengumpulkan semua skrip yang digunakan di satu tempat.
Contoh:
"scripts": { "install": "node scripts/install-extras", "start": "node src/well/hidden/main/server extra_param_1 extra_param_2", "another-script": "node scripts/another-script" }
PS Ekstensi ".js" dapat dihilangkan dalam banyak kasus.