Управление вложенными зависимостями npm

У меня есть вопрос о лучших практиках управления вложенными зависимостями npm.

Позвольте мне объяснить мою ситуацию, и, пожалуйста, скажите мне, что я делаю неправильно, или как лучше всего подойти к этому.

Я запускаю приложение с помощью express.js и express-mongostore в nodeenv. Из-за nodeenv я использую npm для всего по всему миру, поэтому все они находятся в папке nenv/lib/node_modules. Дело в том, что я пытаюсь разработать новейший express.js, в то время как express-mongostore некоторое время не обновлялся. После установки обоих модулей я получаю вот такую ​​структуру папок.

nodeenv / lib / node_modules / express / node_modules / connect / ..
                             /
                             / connect-mongodb / node_modules/ connect / ...

В итоге получается, что у меня есть две разные версии connect.

Я обжегся, потому что файл cookie, созданный хранилищем mongodb, и файл, созданный промежуточным программным обеспечением сеанса, отличаются, потому что они указывают на 2 разные реализации подключаемых утилит (один вызывает хранилище, которое вызывает утилиты, а другой вызывает утилиты напрямую. К сожалению, они указывают на разные файлы во время запроса разрешения). Фактическая разница здесь в том, что они подписывают файл cookie, используя разные алгоритмы. Некоторое время мои сеансы становились недействительными при каждой загрузке страницы, и мне потребовалось много времени, чтобы отладить до этого уровня.

Я читал в Интернете, и кажется, что это должно быть способом npm, и это хорошо.Проблема здесь в том, что, поскольку Express полагается на кучу утилит в connect, а connect-mongodb наследует некоторые из одних и тех же классов в connect, использование разных репозиториев проблематично.

В настоящее время у меня все еще есть 2 версии подключения, и я пропатчил одну, чтобы она была похожа на другую. Очевидно, что это не является устойчивым решением. Как мне действовать и подходить к управлению зависимостями в этом случае?

Заранее спасибо!

6
задан johncch 13 March 2012 в 07:12
поделиться