. Kedengarannya sempurna, bukan? npm install -g your-tool
mata utama
-g
-g
. Ini menjimatkan modul sebagai kebergantungan pembangunan dan memastikan ia dipasang semasa menjalankan --save-dev
. npm install
./node_modules/.bin/
Kami mempunyai beberapa masalah
Saya tidak akan mengatakan tidak pernah memasang modul NPM menggunakan pilihan, tetapi saya harus mengatakan bahawa terlalu banyak penggunaannya boleh menyebabkan masalah. Saya fikir kita harus mengurangkan penggunaan pemasangan modul global, terutamanya dalam hal alat pembina, ujian atau kod pemeriksaan (seperti Gulp, Karma, Jshint, dll.), Atas sebab -sebab berikut: Artikel ini terutama membincangkan Teluk kerana Sangat popular dan membaca cerah, tetapi jika anda tidak suka Gulp, gantikannya dalam fikiran anda dengan alat apa pun yang anda suka. -g
dan mula bekerja. Anda akhirnya perlu menambah arahan dalam fail ReadMe, contohnya: npm install
npm install
npm install -g gulp
gulp
Isu utama kedua yang berkaitan dengan memasang modul di seluruh dunia adalah bahawa anda mungkin menghadapi konflik kerana versi modul yang salah dipasang. Dua contoh berikut menggambarkan ini:
nota ringkas mengenai keselamatan
, anda harus menukar arahan ini. Panduan pemula NPM kami akan menunjukkan kepada anda bagaimana untuk melakukannya. sudo npm install -g a-package
Pengecualian
Jadi, apa yang boleh anda pasang secara global? Pendek kata: apa -apa projek anda tidak bergantung. Sebagai contoh, saya memasang modul global yang dipanggil. Setiap kali saya hanya perlu melihat beberapa fail HTML dalam penyemak imbas saya, saya menjalankan local-web-server
(ini adalah arahan untuk ws
) yang menetapkan folder semasa ke akar local-web-server
dan kemudian saya boleh membuka sebarang dokumen di dalam anda penyemak imbas dan mengujinya. localhost:8000
dan saya dapat dengan mudah memampatkan sebarang skrip dari baris arahan dalam beberapa saat. uglify-js
Penyelesaian
bagaimana kita harus menghalangnya sekarang bahawa kita tahu di mana masalah itu mungkin berlaku? Perkara pertama yang perlu anda lakukan ialah mengeluarkan -g
semasa memasang modul. Anda harus menggantikannya dengan --save-dev
supaya anda dapat menyimpan modul sebagai kebergantungan pembangunan dan ia akan sentiasa dipasang apabila seseorang berjalan npm install
. Ini hanya akan menyelesaikan salah satu isu kecil yang saya sebutkan tadi, tetapi ia hanya permulaan.
Apa yang anda perlu tahu ialah apabila anda memasang kebergantungan secara tempatan, jika ia mempunyai skrip yang dimaksudkan untuk dijalankan dari baris arahan, mereka akan diletakkan di direktori ./node_modules/.bin/
. Jadi sekarang, jika anda hanya memasang Gulp secara tempatan, anda boleh menjalankannya dengan menaip ./node_modules/.bin/gulp
pada baris arahan. Sudah tentu, tiada siapa yang mahu menaip semua ini. Anda boleh menggunakan skrip NPM untuk menyelesaikan masalah ini.
dalam fail package.json
anda, anda boleh menambah atribut scripts
yang serupa dengan yang berikut:
{ ... "scripts": { "gulp": "gulp" } }
Anda kini boleh menjalankan npm run gulp
pada bila -bila masa untuk menjalankan versi tempatan Gulp. Skrip NPM mencari salinan tempatan perintah yang boleh dilaksanakan dalam direktori ./node_modules/.bin/
sebelum memeriksa pembolehubah persekitaran laluan. Jika anda mahu, anda juga boleh lulus parameter lain untuk menelan dengan menambah --
sebelum parameter ini, contohnya npm run gulp -- build-dev
bersamaan dengan gulp build-dev
.
Anda masih perlu menaip lebih daripada menggunakan Gulp di seluruh dunia, tetapi itu buruk, tetapi ada dua cara untuk menyelesaikan masalah ini. Pendekatan pertama (juga menyelesaikan salah satu masalah yang disebutkan di atas) adalah untuk membuat alias menggunakan skrip NPM. Sebagai contoh, anda tidak perlu mengikat permohonan anda ke Gulp, jadi anda boleh membuat skrip yang menjalankan Gulp tetapi tidak menyebut Gulp:
{ ... "scripts": { "build": "gulp build-prod", "develop": "gulp build-dev" } }
Dengan cara ini, anda boleh membuat panggilan untuk menelan lebih pendek dan menyimpan skrip anda sejagat. Dengan menjaga kepelbagaian, anda sentiasa boleh mengeluarkan telus dan menggantinya dengan sesuatu yang lain tanpa sesiapa yang perlu tahu (kecuali jika mereka berurusan dengan proses binaan, di mana mereka sepatutnya tahu dan mungkin harus terlibat dalam penghijrahan dan meninggalkan perbincangan Gulp ). Sebagai alternatif, anda juga boleh menambah skrip postinstall
ke sana supaya proses binaan akan dijalankan secara automatik selepas seseorang berjalan npm install
. Ini akan memudahkan fail ReadMe anda. Di samping itu, dengan menggunakan skrip NPM, sesiapa yang mengkloning projek anda harus mendapatkan dokumentasi mudah dan mudah pada semua proses yang anda jalankan pada projek anda dalam fail package.json
.
Di samping menggunakan skrip NPM, terdapat satu lagi helah yang membolehkan anda menggunakan pemasangan alat perintah baris tempatan: relatif kepada laluan. Saya menambah ./node_modules/.bin/
ke pemboleh ubah persekitaran saya, selagi saya berada di akar projek, saya boleh mengakses alat arahan dengan menaip nama arahan. Saya belajar helah ini dari komen pada jawatan lain yang saya tulis (terima kasih kepada Gabriel Falkenberg).
Trik ini tidak sepenuhnya pengganti untuk setiap situasi di mana anda ingin menggunakan alat seperti Gulp, mereka mengambil beberapa kerja untuk ditubuhkan, tetapi saya fikir bahawa penyenaraian alat ini sebagai kebergantungan anda harus menjadi amalan terbaik. Ini akan menghalang konflik versi (yang merupakan salah satu sebab utama pengurus ketergantungan di tempat pertama) dan akan membantu memudahkan langkah -langkah orang lain perlu mendapatkan projek anda.
Langkah lebih jauh
Ini mungkin sedikit berlebihan, tetapi saya fikir Node dan NPM juga kebergantungan untuk projek anda, dan mereka mempunyai beberapa versi yang berbeza yang mungkin bertentangan. Jika anda ingin memastikan aplikasi anda berfungsi untuk semua orang, anda memerlukan beberapa cara untuk memastikan bahawa pengguna juga mempunyai versi Node dan NPM yang betul dipasang.
Anda boleh memasang salinan nod tempatan dan NPM ke dalam projek anda! Tetapi itu tidak menyelesaikan semua masalah. Pertama, nod adalah berbeza pada setiap sistem operasi, jadi semua orang masih perlu memastikan mereka memuat turun versi yang serasi dengan sistem operasi mereka. Kedua, walaupun ada cara untuk memasang nod biasa, anda perlu memastikan semua orang mempunyai cara mudah untuk mengakses nod dan npm dari baris arahan mereka, seperti memastikan semua orang menambah jalan ke salinan nod tempatan dan npm kepada pembolehubah persekitaran mereka. Tidak ada cara mudah untuk menjamin ini.
Jadi, ketika saya suka dapat menguatkuasakan versi khusus Node dan NPM untuk setiap projek, saya tidak dapat memikirkan cara yang baik untuk melakukan ini. Jika anda fikir ini adalah idea yang baik dan tampil dengan penyelesaian yang baik, marilah kita semua tahu dalam komen. Saya ingin melihat penyelesaian yang cukup mudah untuk menjadikan ini amalan standard!
Kesimpulan
Saya harap anda kini dapat memahami kepentingan kebergantungan versi yang menyenaraikan alat sebagai projek. Saya juga berharap bahawa anda bersedia bekerja keras untuk melaksanakan amalan ini dalam projek anda sendiri supaya kami dapat mempromosikannya sebagai standard. Kecuali anda mempunyai idea yang lebih baik, katakanlah dan biarkan seluruh dunia tahu!
FAQs (FAQ) pada Soalan Dependensi Modul NPM Global
Masalah pergantungan modul NPM global adalah masalah biasa yang dihadapi oleh pemaju ketika memasang pakej Node.js di seluruh dunia. Masalah ini berlaku apabila pakej global yang dipasang tidak dapat mengakses kebergantungan yang dipasang di dalam negara. Ini boleh menyebabkan kesilapan dan masalah dalam fungsi aplikasi. Masalahnya adalah disebabkan oleh cara nod.js mengendalikan parsing modul, yang boleh menjadi sangat rumit dan mengelirukan bagi pemaju.
Terdapat beberapa cara untuk menyelesaikan masalah ketergantungan modul NPM global. Salah satu cara yang paling berkesan ialah memasang pakej secara tempatan, bukan secara global. Ini memastikan bahawa pakej mempunyai akses kepada semua kebergantungannya. Cara lain ialah menggunakan perintah npm link
, yang mewujudkan hubungan simbolik antara pakej global dan kebergantungan tempatannya. Ini membolehkan pakej global untuk mengakses kebergantungan mereka seperti yang dipasang di seluruh dunia.
Apabila anda memasang pakej Node.js secara global, ia dipasang di lokasi pusat sistem anda dan boleh diakses oleh semua aplikasi Node.js. Sebaliknya, apabila anda memasang pakej secara tempatan, ia dipasang di direktori node_modules
projek semasa anda, dan hanya projek itu yang boleh mengaksesnya. Walaupun pemasangan global mudah, ia boleh menyebabkan masalah kebergantungan modul NPM global.
npm link
dan bagaimana ia berfungsi? npm link
adalah alat yang disediakan oleh NPM untuk mewujudkan hubungan simbolik antara pakej global dan kebergantungan tempatan mereka. Apabila anda menjalankan npm link
dalam direktori pakej, ia mewujudkan pautan simbolik dari direktori global node_modules
ke pakej tempatan. Ini membolehkan pakej global untuk mengakses kebergantungan mereka seperti yang dipasang di seluruh dunia.
Masalah pergantungan modul NPM global disebabkan oleh cara nod.js mengendalikan parsing modul. Apabila pakej dipasang secara global, Node.js mencari kebergantungannya dalam direktori Global node_modules
. Walau bagaimanapun, jika kebergantungan dipasang secara tempatan, node.js tidak dapat menemukannya, mengakibatkan isu kebergantungan modul NPM global.
Ya, salah satu cara yang paling berkesan untuk mengelakkan masalah kebergantungan modul NPM global adalah untuk sentiasa memasang pakej secara tempatan. Ini memastikan bahawa pakej ini mempunyai akses kepada semua kebergantungan mereka. Walau bagaimanapun, ini mungkin tidak selalu praktikal atau mudah, terutamanya jika anda perlu menggunakan pakej dalam pelbagai projek.
Ya, terdapat beberapa alat dan pakej yang dapat membantu anda menguruskan kebergantungan Node.js anda. Sebagai contoh, NPM sendiri menyediakan beberapa arahan, seperti npm install
, npm update
, dan npm outdated
, yang dapat membantu anda menguruskan kebergantungan anda. Terdapat juga alat pihak ketiga seperti benang dan penjaga hijau, yang menyediakan ciri-ciri tambahan.
Jika isu ketergantungan modul NPM global tidak diselesaikan, ia boleh menyebabkan kesilapan dan masalah dalam fungsi aplikasi. Ia juga menjadikannya sukar untuk mengurus dan mengemas kini kebergantungan, mengakibatkan potensi risiko keselamatan dan pakej yang sudah lapuk.
Ya, isu ketergantungan modul NPM global boleh menjejaskan prestasi aplikasi. Jika pakej tidak dapat mengakses kebergantungannya, ia mungkin tidak berjalan dengan betul atau cekap. Ini boleh menyebabkan masalah prestasi dan kesilapan dalam permohonan.
anda boleh menggunakan arahan npm list
untuk memeriksa sama ada pakej dipasang secara global atau tempatan. Jika anda menjalankan npm list -g
, ia akan memaparkan semua pakej yang dipasang di seluruh dunia. Jika anda menjalankan npm list
dalam direktori projek, ia akan memaparkan semua pakej yang dipasang secara tempatan untuk projek tersebut.
Atas ialah kandungan terperinci Cara menyelesaikan masalah ketergantungan modul NPM global. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!