уникаючи ../../../../../../ ..
Не все в додатку належним чином належить до загальнодоступних 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.