如何为多个npm存储库创build共享的package.json

我正在build立我的应用程序使用分离的微服务,每个都有自己的存储库和npm的依赖关系,可能是在不同的服务器上。

我正在寻找一种方法将所有的依赖关系放在一个可以通过url访问的全局package.json文件中,这样我就可以更新一个共享依赖版本,而不需要运行所有不同的微服务,并且更新他们一个接一个。

可能吗?

不幸的是,npm不支持指定父级package.json文件。 这个function是前段时间提出来的,但是npm的维护人员得出的结论是应该用外部工具来实现。

当然你可以自己写这样的工具。 有可能的天文台之一:

  1. 创build包含所有共享依赖项的package.json文件的库。 在这个例子中,它将被称为shared-deps

  2. 创buildmerge.js脚本,将共享依赖关系添加到本地package.json文件,并将其添加到shared-deps库:

     const fs = require('fs') const localPackageJson = require('../../package.json') const sharedPackageJson = require('./package.json') Object.assign(localPackageJson.dependencies, sharedPackageJson.dependencies) fs.writeFileSync('../../package.json', JSON.stringify(localPackageJson, null, 2)) 
  3. 添加到应用程序的package.json中,后续安装钩子将使用这个共享的依赖关系:

     "scripts": { "postinstall": "node ./node_modules/a/merge.js" } 
  4. 现在,当你运行npm install ,你的共享依赖将会和shared-deps库一起安装,你的package.json将会被更新。