如何处理需要在不同环境中构建的多个依赖项?

时间:2016-11-04 19:25:49

标签: node.js node-gyp argon2-ffi

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

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

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

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

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

我们已经尝试了一些方法,例如在Docker容器中添加更多钩子并在合并时重建,但如果Vagrant机器未启动或处于错误状态,则会导致问题。我们已经尝试检查了用于argon2的Linux二进制文件node-gyp创建的Git,但是我们在本地开发环境中以及在构建过程中在AWS上运行的自动化测试都失败了,因为它们不是在容器内运行。

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

0 个答案:

没有答案