уникаючи ../../../../../../ ..
Не все в додатку належним чином належить до загальнодоступних npm, а витрати на налаштування приватного npm або git repo у багатьох випадках все ще досить великі. Ось кілька підходів для уникнення проблеми
../../../../../../../
відносних шляхів.
вузли_модулі
Люди іноді заперечують проти введення модулів, що стосуються додатків, у node_modules, оскільки не очевидно, як перевірити свої внутрішні модулі, не перевіряючи сторонні модулі з npm.
Відповідь досить проста! Якщо у вас є .gitignore
файл, який ігнорує node_modules
:
node_modules
Ви можете просто додати виняток !
для кожного із своїх внутрішніх модулів додатків:
node_modules/*
!node_modules/foo
!node_modules/bar
Зауважте, що ви не можете ігнорувати підкаталог, якщо батьківський ігнорований. Таким чином , замість того , щоб ігнорувати node_modules
, ви повинні ігнорувати всі директорії всередині node_modules
з
node_modules/*
трюком, а потім ви можете додати свої винятки.
Тепер у будь-якій точці вашої програми ви зможете require('foo')
або require('bar')
не мати дуже великого та крихкого відносного шляху.
Якщо у вас багато модулів і ви хочете, щоб вони були більш відокремленими від сторонніх модулів, встановлених npm, ви можете просто помістити їх під каталог, node_modules
наприклад node_modules/app
:
node_modules/app/foo
node_modules/app/bar
Тепер ви зможете require('app/foo')
або require('app/bar')
з будь-якого місця вашої програми.
У ваших .gitignore
, просто додайте виняток для node_modules/app
:
node_modules/*
!node_modules/app
Якщо у вашій програмі були перетворені конфігурації в package.json, вам потрібно буде створити окремий package.json з власним полем перетворення у вашому каталозі node_modules/foo
чи node_modules/app/foo
компонентах, оскільки перетворення не застосовуються через межі модуля. Це зробить ваші модулі більш надійними щодо змін конфігурації у вашій програмі, і буде простіше самостійно використовувати пакети поза вашою програмою.
симпосилання
Ще одна зручна хитрість, якщо ви працюєте над додатком, де ви можете створювати посилання і не потрібно підтримувати Windows, - це посилання на символи lib/
або app/
папку node_modules
. З кореня проекту виконайте:
ln -s ../lib node_modules/app
і тепер з будь-якого місця вашого проекту ви зможете вимагати файлів lib/
, виконуючи require('app/foo.js')
завдання lib/foo.js
.
власні шляхи
Можливо, ви побачите, що в деяких місцях розмовляють про використання $NODE_PATH
змінної середовища або opts.paths
додають каталоги для вузла та переглядають, щоб знайти модулі.
На відміну від більшості інших платформ, використання масиву стилів оболонок каталогів шляху $NODE_PATH
не є настільки сприятливим у вузлі порівняно з ефективним використанням node_modules
каталогу.
Це пояснюється тим, що ваша програма більш щільно пов'язана з конфігурацією середовища виконання, тому є більше рухомих частин, і ваша програма працюватиме лише тоді, коли ваше середовище налаштовано правильно.
вузол і перегляньте обидві служби підтримки, але перешкоджайте їх використанню
$NODE_PATH
.