Rumah > Soal Jawab > teks badan
Apabila anda melihat modul dipasang oleh --save, ia akan dipaparkan dalam kebergantungan.
Dan modul dalam kebergantungan mewakili kebergantungan persekitaran pengeluaran. Seperti jQuery.
Tetapi apa yang saya tidak faham ialah, ambil jQuery sebagai contoh. Mengapa saya harus mengisytiharkan tanggungan dalam tanggungan?
Dalam persekitaran pengeluaran, saya akan terus menggunakan tag skrip untuk merujuk jQuery, tanpa kebergantungan sama sekali. Apakah yang berlaku jika modul yang bergantung kepada persekitaran pengeluaran diisytiharkan dalam kebergantungan? Adakah ia akan menambah tag skrip secara automatik untuk saya atau, sebagai contoh, apabila modul pembungkusan, apabila modul persekitaran pengeluaran pembungkusan, adakah semua kebergantungan dalam kebergantungan akan dibungkus? Tetapi setakat yang saya tahu, sebagai contoh, apabila modul webpack dibungkus, ia dibungkus berdasarkan graf kebergantungan yang dibuat oleh modul memerlukan, jadi saya tidak begitu faham mengapa kebergantungan persekitaran pengeluaran harus diisytiharkan dalam kebergantungan.
我想大声告诉你2017-06-21 10:13:57
Kami akan menggunakan banyak modul dalam pembangunan sebenar Beberapa modul (seperti gulp, babel, ini diletakkan dalam devDependencies) hanya digunakan dalam persekitaran pembangunan, manakala jquery digunakan dalam persekitaran pengeluaran Apabila anda menggunakan projek tersebut persekitaran pengeluaran, jika anda melaksanakan npm install --production, hanya modul dalam kebergantungan akan dipasang, yang akan menjadi sangat mudah.
PHP中文网2017-06-21 10:13:57
Hakikatnya ialah medan itu direka bentuk untuk nod, jadi tidak kira sama ada anda menulisnya atau tidak.
Untuk lebih spesifik, sebagai projek bahagian hadapan, kebergantungan anda sama ada dibungkus atau diperkenalkan dengan tag skrip, jadi apa yang ada dalam medan deps anda tidak akan menjejaskan kod akhir sama sekali.
天蓬老师2017-06-21 10:13:57
Jika anda menggunakan <script>
加入模块的话,这个引入JS/CSS的方法本身用不到npm包管理
,可以直接忽略package.json
masalah konfigurasi
Jika anda memasang pakej kebergantungan seperti webpack
进行打包。webpack在模块打包时是根据require的模块创建的依赖图表来打包的,这的确没错。但是之后还有一步,就是webpack通过依赖图表进行打包的时候,如果依赖图表里有jQuery依赖,webpack还是要去找jQuery的文件,然后注入到打包的文件之中。如果你不写dependencies的话,在团队开发中,另一个人改了一点代码,然后用npm install
, dan kemudian membungkus semula, webpack mencipta graf kebergantungan, yang bergantung pada jQuery, tetapi webpack tidak dapat mencari kod jQuery untuk disuntik ke dalam fail sasaran dalam node_modules, jadi Jika dia membungkus semula ia akan gagal. Sudah tentu, anda boleh mengabaikan ini jika anda seorang sahaja yang sedang berkembang.
Sudah tentu, dependencies mempunyai aplikasi lain, seperti perangkak node.js yang saya tulis sebelum ini. Memandangkan perangkak ini secara langsung menggunakan nod untuk menjalankan kod JS, require hanya boleh membaca pakej yang sepadan selepas memasang kebergantungan ini dalam fail JS saya. require()
的包都需要写在dependencies里,部署的时候用npm install
淡淡烟草味2017-06-21 10:13:57
Saya rasa anda mungkin menggunakan nod kerana anda perlu menggunakan webpack untuk membangunkan halaman. Jika tidak, anda tidak akan bertanya tentang hubungan antara kebergantungan dan skrip. Tiada kaitan antara keduanya.
Di sini anda telah mencampurkan 3 perkara:
Pengurusan pergantungan package.json
Pengurusan pergantungan pek web
Pengenalan skrip dalam html
node bukan sahaja boleh digunakan untuk pembangunan halaman, tetapi juga boleh digunakan untuk melakukan banyak perkara, seperti membangunkan program pelayan, membangunkan perpustakaan JS, dll. Kebergantungan merekod dan menjamin kebergantungan projek anda apabila ia digunakan oleh ; devDependencies merekod dan menjamin kebergantungan projek anda apabila ia dibangunkan oleh . Sebagai contoh, kami membangunkan perpustakaan dan bersedia untuk menerbitkannya di NPM. Jika anda perlu menggunakan
, devDependencies termasuk babel dan eslint.
lodash.sample
,开发时使用es6,并且还使用eslint对代码风格进行规范。那么dependencies中就有lodash.sample
Pergantungan memastikan bahawa apabila sesiapa memasang perpustakaan kami,
lodash.sample
都会被安装(否则这个库将无法正确运行);devDependencies保证任何人在(或者你自己在其他设备上)对这个项目进行修改(开发)时,通过npm install
Pengurusan pergantungan pek web
require
Masih menggunakan contoh perpustakaan di atas, kita boleh menggunakan webpack untuk pembungkusan (maka perlu ada webpack dalam devDependencies). Walaupun anda memanggil masuk.
Pengenalan skrip dalam htmlnpm install --save
了其他十几个模块,webpack时,也只会将lodash.sample
Alasannya ialah: tanpa merekodkan kebergantungan ini, apabila orang lain (atau anda sendiri pada peranti lain) membangunkannya semula, mereka tidak akan tahu kebergantungan mana yang perlu diperkenalkan ke dalam projek, dan pembangunan tidak akan dapat dilakukan. Jika anda hanya seorang dan tidak menukar komputer, kebergantungan tidak perlu digunakan.
淡淡烟草味2017-06-21 10:13:57
工作环境改变
的时候,你的项目要是想正常运行。必须声明依赖,这样不管在哪里,只需要一句npm install
Anda boleh memulihkan persekitaran kerja dan menyelesaikan semua kebergantungan