2016-04-25 4 views
0

Мой коллега пришел к прекрасной идее, по его мнению. Ему не нравятся пути, которые включают в себя множество событий dotdot (более 2 или 3). Его идея заключается в следующем: используйте команды postinstall, которые будут создавать символические ссылки на интересующие модули в node_modules. Таким образом, вы могли бы требовать необходимый модуль что-то вроде этого:node_modules: символическая ссылка или не символическая ссылка?

var some_module = require('some_module') 

вместо

var some_module = require('../../../another/branch/some_module') 

Для меня это, кажется, как грязный хак. Один недостаток, который я вижу, - это возможное столкновение со встроенными модулями и модулями npm. Но это может быть незначительной проблемой.

Я предложил другое решение - создать отдельный модуль, который будет регистрировать модули, представляющие интерес и ссылаться на них через него:

// a/branch/some_module.js 
module.exports = 5 
require('register')('some_module', module.exports) 

// another/branch/interested_module.js 
var some_module = require('register')('some_module') // 5 

Честно говоря, оба решения кажется некрасиво.

Итак, вопрос в том, каков правильный способ решения проблемы глубоких отпечатков?

ответ

1

Для использования местных модулей мы используем node-app-root-path.

Например:

var appRoot = require('app-root-path'); 
var myModule = require(appRoot + '/lib/my-module.js'); 
Смежные вопросы