Мой коллега пришел к прекрасной идее, по его мнению. Ему не нравятся пути, которые включают в себя множество событий 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
Честно говоря, оба решения кажется некрасиво.
Итак, вопрос в том, каков правильный способ решения проблемы глубоких отпечатков?