2017-01-12 2 views
1

Привет, я хочу, чтобы модули ncece nce из каталога, который не является текущим. Глобальные модули не являются решением, поскольку они связаны с зависимостью. Я хочу иметь контейнер со всеми загруженными мной модулями и перенаправить require в этот каталог вместо текущего каталога. Таким образом, все мои проекты могли искать модули в относительном пути, например, ../.Как перенаправить поиск node_modules в другой каталог

ответ

1

Здесь вы можете использовать npm link.

Например,

Допустим, у вас есть 10 локальных репозиториев пакетов узел (с package.json внутри каждого пакета) в /User/you/modules и ваш проект находится в /User/you/project.

Все, что вам нужно сделать, это связать все модули в каталоге /User/you/modules с номером /User/you/project.

cd /User/you/project 
find /User/you/modules/* -type d -maxdepth 0 -exec npm link {} \; 

Теперь вы можете использовать все модули из /User/you/modules в /User/you/project без относительного пути.

Итак, вы можете сейчас;

require('package-name') 

package-name берется из package.json, а не от имени каталога.

вместо;

require('../modules/package-name') 

Cheers.

0

Вы можете установить переменную окружения NODE_PATH до/при запуске приложения, и это позволит вам добавить свои собственные каталоги в пути, с которых узел пытается разрешить пакеты.


Ниже пример кажется, работает хорошо, когда работать как например: NODE_PATH=./lib node app.js

app.js

require('api')();

LIB/api.js

module.exports =() => console.log('hello');


Here is an interesting Gist, который включает некоторые другие маршруты, если вышеуказанное не подходит для вас. Также есть интересная дискуссия в комментариях некоторых известных людей Node.js.

Смежные вопросы