Это решение npm link, которое я использую в данный момент. Это похоже на правильное решение, поэтому я решил опубликовать его в качестве ответа. Я еще не реализовал средства развертывания для этого проекта, поэтому я не знаю, насколько хорошо развертывание будет работать с этим. Я надеюсь, что он развернет связанный модуль вместе со всем остальным.
Структура каталогов проекта выглядит следующим образом:
/package.json
/docker-compose.yml
/project-1/package.json
/project-2/package.json
/project-shared/package.json
В package.json каждого проекта (project-1
и project-2
), Я добавил этот сценарий postinstall:
"scripts": {
"postinstall": "npm link ../project-shared"
},
Таким образом, ссылка будет создана во время обычной настройки проекта.
ПРИМЕЧАНИЕ. По некоторым причинам это не работает при использованииpreinstall
скрипт (ссылка не будет создана, хотя, похоже, она запущена). postinstall
работает просто отлично.
Я не совсем уверен, как работает установка зависимостей для общего модуля (например, если зависимости общего модуля будут установлены, когда проекты ссылаются на него, или если у меня будетустановить их самостоятельно).
Одна проблема, с которой я столкнулся, заключается в том, что Docker Compose плохо работает со связанными пакетами (папка с символическими ссылками не будет указывать на правильное расположение внутри контейнера). Я исправил это, смонтировав общую папку поверх символической ссылки в папке node_modules. Например, для project-1
:
volumes:
- "./project-1/:/home/node/app:ro"
- "./project-shared/:/home/node/app/node_modules/project-shared:ro"