Не смог придумать более адекватного заглавия, в общем суть такова:
Есть проект на nodejs. В нем есть некоторые модули, которые выполняют различные служебные функции и используются всеми остальными модулями. Своего рода библиотеки, но не сторонние, а внутренние, специфичные для проекта. Пусть все они лежат в поддиректории ./lib.
Хотелось бы иметь доступ к таким библиотекам из любого другого модуля проекта без указания относительного пути, т.е. чтобы вместо require('../../../lib/cool') можно было сделать что-то в стиле require('lib/cool') или require('cool').
Решения, которые я вижу (беглый поиск в интернете других не дал):
1. Использовать $NODE_PATH. Не хочется, т.к. нужно либо писать скрипт-обертку, который будет выставлять нужный $NODE_PATH и запускать проект, либо еще хуже, добавлять в каждой системе в .bashrc или куда-то еще.
2. Использовать require.paths. Тут приходит на помощь официальная документация, которая как бы говорит нам: «**Note:** Please Avoid Modifying `require.paths`».
3. Сделать симлинк директории проекта с библиотеками в node_modules, типа ln -sr ./lib ./node_modules. Естественно, делать это в установочном скрипте. Не самое очевидное решение, разработчику, который придет в этот проект с улицы не сразу станет понятно, откуда именно берется lib/cool. Плюс платформоспецифичное, для оффтопика - свои костыли.
4. Использовать костыль типа определения globals.LIB_PATH или process.LIB_PATH и делать require(path.join(LIB_PATH, 'cool')). И некрасиво, и в случае чего нужно искать, кто и где создает LIB_PATH. Да и вообще я как-то против глобальных переменных в принципе.
5. Сделать в ./lib npm-пакет и добавить его основному модулю в зависимости. И на каждое изменение в lib запускать npm install, нет спасибо.
6. Один раз при старте проекта сделать global.Lib = require('./lib') и везде использовать этот global. Очень плохое решение, из-за опасности конфликта имен.
Какой бы способ выбрали вы (или может уже используете)?
Пока склоняюсь к третьему, мне он кажется наиболее прозрачным и беспроблемным.
Ответ на:
комментарий
от no-such-file
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от unikoid
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от unikoid
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум управление проектом (2014)
- Форум Управление проектами (2015)
- Форум Управление проектами (2009)
- Форум Управление проектами (2007)
- Форум Управление проектами (2007)
- Форум Управление электронной библиотекой (2005)
- Форум Управление электронной библиотекой (2006)
- Форум Управление проектами ПО (2016)
- Форум Система управления проектов (2010)
- Форум Системы управления проектами (2009)