menghindari ../../../../../../ ..
Tidak semua yang ada dalam suatu aplikasi benar-benar dimiliki oleh npm publik dan overhead pengaturan npm atau git repo pribadi masih agak besar dalam banyak kasus. Berikut adalah beberapa pendekatan untuk menghindari
../../../../../../../
masalah jalur relatif.
node_modules
Orang-orang kadang-kadang keberatan untuk menempatkan modul khusus aplikasi ke node_modules karena tidak jelas bagaimana memeriksa modul internal Anda tanpa juga memeriksa modul pihak ketiga dari npm.
Jawabannya cukup sederhana! Jika Anda memiliki .gitignore
file yang mengabaikan node_modules
:
node_modules
Anda bisa menambahkan pengecualian dengan !
untuk masing-masing modul aplikasi internal Anda:
node_modules/*
!node_modules/foo
!node_modules/bar
Harap perhatikan bahwa Anda tidak dapat membatalkan subdirektori, jika orang tua sudah diabaikan. Jadi, alih-alih mengabaikan node_modules
, Anda harus mengabaikan setiap direktori di dalam node_modules
dengan
node_modules/*
triknya, dan kemudian Anda dapat menambahkan pengecualian Anda.
Sekarang di mana saja di aplikasi Anda, Anda akan dapat require('foo')
atau require('bar')
tanpa memiliki jalur relatif yang sangat besar dan rapuh.
Jika Anda memiliki banyak modul dan ingin membuatnya lebih terpisah dari modul pihak ketiga yang diinstal oleh npm, Anda bisa meletakkan semuanya di bawah direktori node_modules
seperti node_modules/app
:
node_modules/app/foo
node_modules/app/bar
Sekarang Anda dapat require('app/foo')
atau require('app/bar')
dari mana saja di aplikasi Anda.
Di Anda .gitignore
, cukup tambahkan pengecualian untuk node_modules/app
:
node_modules/*
!node_modules/app
Jika aplikasi Anda memiliki transformasi yang dikonfigurasi dalam package.json, Anda harus membuat package.json terpisah dengan bidang transformasi sendiri di direktori komponen node_modules/foo
atau Anda node_modules/app/foo
karena transformasi tidak berlaku melintasi batas-batas modul. Ini akan membuat modul Anda lebih kuat terhadap perubahan konfigurasi di aplikasi Anda dan akan lebih mudah untuk menggunakan kembali paket secara terpisah di luar aplikasi Anda.
symlink
Trik lain yang berguna jika Anda mengerjakan aplikasi tempat Anda dapat membuat symlink dan tidak perlu mendukung windows adalah dengan menghubungkan symlink a lib/
atau app/
folder node_modules
. Dari root proyek, lakukan:
ln -s ../lib node_modules/app
dan sekarang dari mana saja dalam proyek Anda, Anda akan dapat memerlukan file lib/
dengan melakukan require('app/foo.js')
untuk mendapatkan lib/foo.js
.
jalur khusus
Anda mungkin melihat beberapa tempat berbicara tentang menggunakan $NODE_PATH
variabel lingkungan atau opts.paths
untuk menambahkan direktori untuk node dan browserify untuk mencari modul.
Tidak seperti kebanyakan platform lain, menggunakan larik shell-style dari direktori path dengan $NODE_PATH
tidak begitu menguntungkan di node dibandingkan dengan menggunakan node_modules
direktori secara efektif .
Ini karena aplikasi Anda lebih erat digabungkan ke konfigurasi lingkungan runtime sehingga ada lebih banyak bagian yang bergerak dan aplikasi Anda hanya akan bekerja ketika lingkungan Anda diatur dengan benar.
node dan browserify keduanya mendukung tetapi mencegah penggunaan
$NODE_PATH
.