Hari ini, di bagian kelima dari terjemahan manual Node.js, kami akan menyelesaikan analisis fitur npm, khususnya, kami akan membahas masalah-masalah seperti mengetahui versi paket npm yang diinstal, menginstal paket versi lama, memperbarui dependensi, penghapusan instalan paket lokal dan global. Di sini kita berbicara tentang npx.

[Kami menyarankan Anda untuk membaca] Bagian lain dari siklus iniBagian 1:
Informasi Umum dan MemulaiBagian 2:
JavaScript, V8, beberapa trik pengembanganBagian 3:
Hosting, REPL, bekerja dengan konsol, modulBagian 4:
npm, package.json dan file package-lock.jsonBagian 5:
npm dan npxBagian 6:
loop acara, tumpukan panggilan, timerBagian 7:
Pemrograman AsinkronBagian 8:
Panduan Node.js, Bagian 8: HTTP dan Protokol WebSocketBagian 9:
Panduan Node.js, bagian 9: bekerja dengan sistem fileBagian 10:
Panduan Node.js, Bagian 10: Modul Standar, Streaming, Database, NODE_ENVPDF lengkap dari Node.js Guide Mencari tahu versi paket npm yang diinstal
Untuk mengetahui versi semua paket npm yang terinstal di folder proyek, termasuk dependensinya, jalankan perintah berikut:
npm list
Sebagai hasilnya, misalnya, yang berikut ini dapat terjadi:
> npm list /Users/flavio/dev/node/cowsay βββ¬ cowsay@1.3.1 βββ get-stdin@5.0.1 βββ¬ optimist@0.6.1 β βββ minimist@0.0.10 β βββ wordwrap@0.0.3 βββ¬ string-width@2.1.1 β βββ is-fullwidth-code-point@2.0.0 β βββ¬ strip-ansi@4.0.0 β βββ ansi-regex@3.0.0 βββ strip-eof@1.0.0
Anda dapat menemukan hal yang sama dengan melihat file
package-lock.json
proyek, tetapi struktur pohon yang ditampilkan oleh perintah di atas lebih nyaman untuk dilihat.
Untuk mendapatkan daftar paket serupa yang diinstal secara global, Anda dapat menggunakan perintah berikut:
npm list -g
Anda hanya dapat menampilkan informasi tentang paket tingkat atas lokal (yaitu paket yang Anda instal sendiri dan yang terdaftar di
package.json
) sebagai berikut:
npm list
Akibatnya, jika, misalnya, Anda hanya menginstal paket cowsay, yang berikut ini akan ditampilkan:
> npm list
Untuk mengetahui versi paket tertentu, gunakan perintah berikut:
npm list cowsay
Sebagai hasil penerapannya, kami mendapatkan kira-kira yang berikut:
> npm list cowsay /Users/flavio/dev/node/cowsay βββ cowsay@1.3.1
Perintah ini juga cocok untuk mengetahui versi dependensi dari paket yang Anda instal. Dalam hal ini, nama paket dependensi bertindak sebagai nama paket yang diteruskan ke sana, dan output dari perintah akan terlihat seperti ini:
> npm list minimist /Users/flavio/dev/node/cowsay βββ¬ cowsay@1.3.1 βββ¬ optimist@0.6.1 βββ minimist@0.0.10
Entri tentang paket dependensi dalam struktur ini akan disorot.
Jika Anda ingin tahu berapa jumlah versi terbaru dari sebuah paket yang tersedia di repositori npm, Anda akan memerlukan perintah dari formulir berikut:
npm view [package_name] version
Sebagai tanggapan, ia mengeluarkan nomor versi paket:
> npm view cowsay version 1.3.1
Menginstal versi lama paket npm
Menginstal versi lama paket npm mungkin diperlukan untuk menyelesaikan masalah kompatibilitas. Anda dapat menginstal versi paket yang diperlukan dari npm menggunakan konstruksi berikut:
npm install <package>@<version>
Dalam hal paket cowsay yang kami gunakan sebagai contoh, perintah
install cowsay
npm
install cowsay
menginstal versi terbarunya (1.3.1 pada saat penulisan ini). Jika Anda perlu menginstal versinya 1.2.0, gunakan perintah ini:
npm install cowsay@1.2.0
Anda dapat menentukan versi dengan menginstal paket global:
npm install -g webpack@4.16.4
Jika Anda perlu mencari tahu versi paket apa yang tersedia di npm, Anda dapat melakukannya dengan bantuan konstruksi ini:
npm view <package> versions
Berikut adalah contoh hasil karyanya:
> npm view cowsay versions [ '1.0.0', '1.0.1', '1.0.2', '1.0.3', '1.1.0', '1.1.1', '1.1.2', '1.1.3', '1.1.4', '1.1.5', '1.1.6', '1.1.7', '1.1.8', '1.1.9', '1.2.0', '1.2.1', '1.3.0', '1.3.1' ]
Memperbarui dependensi proyek ke versi terbaru mereka
Ketika Anda menginstal paket dengan perintah dari tipe
npm install <packagename>
, versi terbaru diunduh dari repositori dan ditempatkan di folder
node_modules
. Dalam hal ini, entri yang sesuai ditambahkan ke file
package.json
dan
package-lock.json
terletak di folder proyek.
Selain itu, dengan menginstal paket, npm menemukan dan menginstal dependensinya.
Misalkan kita menginstal paket cowsay yang sudah dikenal dengan menjalankan
npm install cowsay
. Paket akan diinstal di folder
node_modules
proyek, dan entri berikut akan berada di file
package.json
:
{ "dependencies": { "cowsay": "^1.3.1" } }
package-lock.json
juga akan menyertakan informasi tentang paket ini. Ini adalah bagiannya:
{ "requires": true, "lockfileVersion": 1, "dependencies": { "cowsay": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.3.1.tgz", "integrity": "sha512-3PVFe6FePVtPj1HTeLin9v8WyLl+VmM1l1H/5P+BTTDkMAjufp+0F9eLjzRnOHzVAYeIYFF5po5NjRrgefnRMQ==", "requires": { "get-stdin": "^5.0.1", "optimist": "~0.6.1", "string-width": "~2.1.1", "strip-eof": "^1.0.0" } } } }
Dari dua file ini Anda dapat mengetahui bahwa kami menginstal cowsay versi 1.3.1, dan aturan pembaruan paket ditentukan sebagai
^1.3.1
. Pada bagian keempat dari rangkaian materi ini, kita telah berbicara tentang aturan-aturan versi semantik. Ingatlah bahwa entri ini berarti npm dapat memperbarui paket ketika versi minor dan tambalannya dirilis.
Jika, misalnya, versi minor baru dari sebuah paket keluar dan kami menjalankan perintah
npm update
, maka versi yang terinstal dari paket diperbarui dan informasi tentang paket yang diinstal diperbarui dalam file
package-lock.json
, dan file
package.json
tetap tidak berubah.
Untuk mengetahui apakah versi baru dari paket yang digunakan dalam proyek telah dirilis, Anda dapat menggunakan perintah berikut:
npm outdated
Berikut ini adalah hasil dari perintah ini untuk proyek yang ketergantungannya belum diperbarui untuk waktu yang lama:
Analisis ketergantungan proyek yang ditinggalkanBeberapa pembaruan paket yang tersedia adalah rilis utama mereka, pembaruan yang tidak akan terjadi ketika perintah
npm update
dijalankan. Upgrade ke rilis utama oleh tim ini tidak dilakukan, karena mereka (menurut definisi) dapat berisi perubahan besar yang tidak dibedakan dengan kompatibilitas ke belakang dengan rilis utama sebelumnya, dan npm berupaya menyelamatkan pengembang dari masalah yang dapat menyebabkan penggunaan paket-paket tersebut.
Untuk meningkatkan ke versi utama baru dari semua paket yang digunakan, instal secara global paket
npm-check-updates
:
npm install -g npm-check-updates
Kemudian jalankan utilitas yang disediakan olehnya:
ncu -u
Perintah ini akan memperbarui file
package.json
, membuat perubahan pada instruksi untuk versi paket yang sesuai di bagian
dependencies
dan
devDependencies
. Ini akan memungkinkan npm untuk memperbarui paket yang digunakan dalam proyek ke versi utama baru setelah menjalankan perintah
npm update
.
Jika Anda ingin menginstal versi paket terbaru untuk proyek yang baru saja Anda unduh, yang belum memiliki folder
node_modules
, maka alih-
npm update
, jalankan perintah
npm install
.
Penghapusan paket secara lokal atau global
Untuk menghapus paket yang sebelumnya diinstal secara lokal (menggunakan perintah
install <package-name>
), jalankan perintah yang terlihat seperti ini:
npm uninstall <package-name>
Jika paket diinstal secara global, Anda harus menggunakan flag
-g
(--global
) untuk menghapusnya. Misalnya, perintah serupa mungkin terlihat seperti ini:
npm uninstall -g webpack
Saat menjalankan perintah seperti itu, folder saat ini tidak masalah.
Tentang memilih antara instalasi paket global dan lokal
Kapan dan mengapa paket terbaik dipasang secara global? Untuk menjawab pertanyaan ini, mari kita ingat bagaimana perbedaan instalasi paket lokal dan global:
- Paket-paket lokal diinstal di direktori tempat mereka menjalankan perintah dari form
npm install <package-name>
. Paket-paket tersebut terletak di folder node_modules
terletak di direktori ini. - Paket global dipasang di folder khusus (yang tergantung pada pengaturan spesifik sistem Anda), di mana pun mereka menjalankan perintah dari form
npm install -g <package-name>
.
Menghubungkan paket lokal dan global dalam kode adalah sama:
require('package-name')
Jadi apa cara terbaik untuk menginstal paket?
Secara umum, semua paket harus diinstal secara lokal. Karena ini, bahkan jika Anda memiliki lusinan proyek Node.js, Anda dapat memastikan, jika perlu, penggunaan berbagai versi paket yang sama.
Memperbarui paket global mengarah pada kenyataan bahwa semua proyek yang diterapkan akan menggunakan rilis barunya. Sangat mudah untuk memahami bahwa ini, dalam hal dukungan proyek, dapat menyebabkan mimpi buruk nyata, karena rilis baru dari beberapa paket mungkin tidak kompatibel dengan versi lama mereka.
Jika setiap proyek memiliki versi lokal paketnya sendiri, meskipun ini mungkin tampak seperti pemborosan sumber daya, ini adalah biaya yang sangat kecil untuk kesempatan untuk menghindari konsekuensi negatif yang mungkin disebabkan oleh ketidakcocokan paket versi baru yang diperbarui secara terpusat dengan kode proyek.
Paket harus diinstal secara global ketika mereka adalah beberapa utilitas yang dipanggil dari baris perintah yang digunakan di banyak proyek.
Paket seperti itu juga dapat diinstal secara lokal dengan menjalankan utilitas baris perintah yang mereka sediakan menggunakan npx, tetapi beberapa paket masih diinstal dengan lebih baik secara global. Paket-paket seperti yang mungkin Anda kenal termasuk, misalnya, yang berikut:
- npm
- buat-reaksi-aplikasi
- vue-cli
- grunt-cli
- moka
- bereaksi asli-cli
- gatsby-cli
- selamanya
- nodemon
Mungkin saja sistem Anda sudah memiliki paket yang diinstal secara global. Untuk mengetahuinya, gunakan perintah berikut:
npm list -g --depth 0
Tentang ketergantungan proyek
Kapan sebaiknya sebuah paket dianggap sebagai ketergantungan rutin proyek yang diperlukan untuk memastikan fungsinya, dan kapan - sebagai ketergantungan pembangunan?
Saat memasang paket menggunakan perintah seperti
npm install <package-name>
itu diinstal sebagai dependensi reguler. Catatan paket semacam itu dibuat di bagian
dependencies
dari file
package.json
(sebelum npm 5, catatan semacam itu dibuat hanya menggunakan flag
--save
, sekarang tidak perlu menggunakannya).
Menggunakan flag
--save-dev
memungkinkan Anda untuk menginstal paket sebagai dependensi pengembangan. Pada saat yang sama, catatan itu dibuat di bagian
devDependencies
dari file
devDependencies
.
Ketergantungan pengembangan adalah paket yang diperlukan dalam proses pengembangan proyek, selama berfungsi normal, mereka tidak diperlukan. Paket tersebut termasuk, misalnya, alat pengujian, Webpack, Babel.
Ketika sebuah proyek dikerahkan menggunakan perintah
npm install
di foldernya, di mana ada folder yang berisi file
package.json
, ini akan mengarah pada instalasi semua dependensi, karena npm mengasumsikan bahwa instalasi seperti itu dilakukan untuk tujuan mengerjakan proyek.
Oleh karena itu, jika paket perlu digunakan dalam produksi, maka, ketika menggunakannya, Anda perlu menggunakan perintah npm
install --production
--production. Berkat flag
--production
, dependensi
--production
tidak akan diinstal.
Utilitas Npx
Sekarang kita akan berbicara tentang satu tim yang sangat kuat,
npx , yang muncul di npm 5.2. Salah satu kemampuannya adalah menjalankan file yang dapat dieksekusi yang termasuk dalam paket npm. Kami telah mempertimbangkan untuk menggunakan npx untuk menjalankan file serupa dari paket cowsay. Sekarang mari kita bicarakan ini secara lebih rinci.
βGunakan npx untuk menyederhanakan menjalankan perintah lokal
Pengembang Node.js menerbitkan banyak file yang dapat dieksekusi (utilitas) dalam bentuk paket yang seharusnya diinstal secara global, yang menyediakan akses mudah ke kapabilitas mereka, karena Anda dapat menjalankannya dari baris perintah hanya dengan memasukkan nama perintah yang sesuai. Namun, bekerja di lingkungan seperti itu sangat tidak nyaman jika diharuskan menginstal versi berbeda dari paket yang sama.
Menggunakan perintah dari form
npx commandname
secara otomatis mencari file yang diinginkan di folder proyek
node_modules
. Ini menghilangkan kebutuhan untuk mengetahui jalur yang tepat untuk file seperti itu. Ini juga membuat instalasi global paket tidak diperlukan, menyediakan akses ke sana dari mana saja dalam sistem file melalui penggunaan variabel sistem
PATH
.
β Menjalankan utilitas tanpa harus menginstalnya
Npx memiliki fitur menarik lainnya, berkat utilitas yang dapat diluncurkan tanpa menginstalnya terlebih dahulu. Ini berguna terutama karena alasan berikut:
- Tidak diperlukan instalasi utilitas.
- Anda dapat menjalankan berbagai versi dari utilitas yang sama dengan menentukan versi yang diinginkan menggunakan konstruksi versi
@version
.
Mari kita lihat bagaimana menggunakan mekanisme ini, menggunakan utilitas
cowsay
yang sudah Anda ketahui. Jadi, jika paket cowsay terinstal secara global, mengeksekusi perintah
cowsay "Hello"
pada baris perintah akan menampilkan cow "berbicara" di konsol:
_______ < Hello > ------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Jika paket cowsay tidak diinstal secara global, perintah yang sama akan menimbulkan kesalahan.
Utilitas npx memungkinkan Anda untuk menjalankan perintah seperti itu tanpa menginstalnya. Tampaknya, dalam kerangka contoh kita, seperti ini:
npx cowsay "Hello"
Perintah seperti itu akan berhasil, tetapi meskipun sapi yang βberbicaraβ, pada umumnya, tidak membawa banyak manfaat, pendekatan yang sama dapat digunakan untuk menjalankan perintah yang jauh lebih berguna. Berikut ini beberapa contohnya:
- Ada alat baris perintah yang dirancang untuk membuat dan menjalankan aplikasi Vue. Menggunakan npx dapat disebut seperti ini:
npx vue create my-vue-app
. - Anda dapat menggunakan utilitas
create-react-app
untuk create-react-app
Bereaksi aplikasi. Panggilannya melalui npx terlihat seperti ini: npx create-react-app my-react-app
.
Setelah mengunduh dan menggunakan kode npx yang sesuai, itu akan dihapus.
β Meluncurkan kode JavaScript menggunakan berbagai versi Node.js
Untuk menjalankan beberapa kode menggunakan versi Node.js yang berbeda, Anda dapat, menggunakan npx, mengakses
node
paket npm, yang menunjukkan versinya. Ini terlihat seperti ini:
npx node@6 -v
Ini menghilangkan kebutuhan untuk alat-alat seperti nvm atau manajer versi lain dari Node.js.
β Mulai fragmen kode arbitrer yang tersedia di alamat tertentu
Npx memungkinkan Anda untuk menjalankan tidak hanya kode yang diterbitkan dalam npm. Khususnya, jika Anda memiliki tautan ke bagian kode tertentu (katakanlah, intisari yang diterbitkan di
GitHub ), Anda dapat menjalankannya seperti ini:
npx https:
Tentu saja, ketika menjalankan kode seperti itu, Anda tidak boleh lupa tentang keamanan. Npx memberi peluang besar bagi pengembang, tetapi juga berarti tanggung jawab besar.
β Hasil
Hari ini kita berbicara tentang beberapa mekanisme npm yang berguna dan penggunaan npx. Pada titik ini, Anda harus memiliki pemahaman dasar tentang perangkat npm dan cara bekerja dengan manajer paket ini. Jika Anda ingin melihat lebih dalam pada npm, periksa
halaman dokumentasi proyek dan coba lagi.
Lain kali kita akan membahas beberapa mekanisme Node.js dasar, pemahaman yang diperlukan untuk pengembangan aplikasi yang sukses untuk platform ini.
Pembaca yang budiman! Apakah Anda menggunakan npx?
