0

背景:我们正在本地 Mac OS X 机器上开发多个 Node.js 微服务。我们的开发环境是一个 Vagrant/Docker 环境,代码被映射到其中运行。

对于特定的微服务,我们使用了两种不同的依赖项:ghooks(devDependency)和argon2-ffi(依赖项)。

  • ghooks使用node- gyp在本地机器(Mac OS X)上创建绑定。
  • argon2-ffi使用node- gyp在 Docker 容器 (Ubuntu) 中创建绑定。

我们现在有一个问题,具体取决于运行npm install的位置npm rebuild。在本地开发机器上运行一个,argon2 的绑定阻止该服务在 Docker 容器中运行。在 docker 容器中运行一个,开发机器的绑定不正确,因此所有 Git 命令都失败。

为了使问题更加复杂,我们配置的 ghook 会在合并时查找 package.json 文件的更改并自动运行npm install。(这是我们拥有的所有十几个微服务的行为,并希望尝试保留这种行为。)


我们已经尝试了一些事情,例如在 Docker 容器中添加更多的 SSH 挂钩并在合并时重建,但是如果 Vagrant 机器未启动或处于错误状态,这会导致问题。我们已经尝试将 Linux 二进制文件 node-gyp 为 argon2 创建到 Git 中,但是我们在本地开发环境和构建过程中都在 Docker 容器之外运行了自动化测试,这些测试失败了,因为它们不是在容器内运行。


有没有办法管理如何使用 node-gyp 构建特定的依赖项?另一个我们没有想到的策略?

4

0 回答 0