背景:我们正在本地 Mac OS X 机器上开发多个 Node.js 微服务。我们的开发环境是一个 Vagrant/Docker 环境,代码被映射到其中运行。
对于特定的微服务,我们使用了两种不同的依赖项:ghooks(devDependency)和argon2-ffi(依赖项)。
我们现在有一个问题,具体取决于运行npm install
的位置npm rebuild
。在本地开发机器上运行一个,argon2 的绑定阻止该服务在 Docker 容器中运行。在 docker 容器中运行一个,开发机器的绑定不正确,因此所有 Git 命令都失败。
为了使问题更加复杂,我们配置的 ghook 会在合并时查找 package.json 文件的更改并自动运行npm install
。(这是我们拥有的所有十几个微服务的行为,并希望尝试保留这种行为。)
我们已经尝试了一些事情,例如在 Docker 容器中添加更多的 SSH 挂钩并在合并时重建,但是如果 Vagrant 机器未启动或处于错误状态,这会导致问题。我们已经尝试将 Linux 二进制文件 node-gyp 为 argon2 创建到 Git 中,但是我们在本地开发环境和构建过程中都在 Docker 容器之外运行了自动化测试,这些测试失败了,因为它们不是在容器内运行。
有没有办法管理如何使用 node-gyp 构建特定的依赖项?另一个我们没有想到的策略?