В настоящее время я участвую в разработке приложения для Windows 8 с использованием JavaScript. Мы используем npm и browserify для управления зависимостями и преобразования наших модулей в удобный для браузера формат AMD.
Одна проблема, с которой мы сталкиваемся, — это сумасшедшие требования к путям. Это потому, что у нас есть папка верхнего уровня внутри нашего приложения «компоненты». Эта папка содержит кучу вложенных компонентов/модулей пользовательского интерфейса. Для этих модулей иногда требуются утилиты и помощники lib, которые находятся в каталоге lib.
Так, например, для модуля, находящегося в «my/app/components/product/grid/item», может потребоваться вспомогательный модуль, который находится в «my/app/lib/helpers/view».
Требуемый путь немного сумасшедший и очень уродливый: require("../../../../lib/helpers/view");
Мы делаем все возможное, чтобы построить приложение по модульному принципу. Теперь я думаю, что правильный подход к этому состоит в том, чтобы модули наших компонентов зависели от этих вспомогательных модулей util. Я мог бы поместить помощников lib в их собственное внешнее частное репозиторий git, но это было проблемой с точки зрения предоставления доступа другим командам (плюс частные репозитории git работают медленно). Кроме того, поскольку эти модули используются только в приложении, вносить изменения, отправлять изменения, а затем возвращаться к приложению и обновлять npm — пустая трата времени. Для некоторых это нормально, но если мы действительно сломаем это, это может очень быстро устареть.
Я мог бы сделать npm install "my/app/lib/helpers/view" внутри компонентов package.json? Но npm install не сделает это за нас автоматически.
Я знаю несколько других способов обойти это (NODE_PATH, возможно, использовать установочный хук npm или, возможно, сценарий предварительной установки npm), но хотел знать, есть ли у кого-нибудь еще аналогичная проблема и хорошее решение.
node_modules
, как рекомендует @substack, решать вам. - person Domenic   schedule 13.03.2013