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

Or *_*har 10 node.js npm

我正在使用分离的微服务构建我的应用程序,每个服务都有自己的存储库和npm依赖项,可能在不同的服务器上.

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

可能吗?

qzb*_*qzb 12

不幸的是,npm不支持指定父package.json文件.这个功能是前一段时间提出的,但是npm维护者得出的结论是它应该通过外部工具实现.

当然你可以自己编写这样的工具.有一个可能的aporaches:

  1. 创建包含package.json具有所有共享依赖项的文件的库.在这个例子中,它将被调用shared-deps.

  2. 创建merge.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))
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加到package.json应用程序,将在安装后挂钩使用此共享依赖项:

    "scripts": {
       "postinstall": "node ./node_modules/a/merge.js"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在,当您运行时npm install,您的共享依赖项将与shared-deps库一起安装,package.json之后您将进行更新.


  • 我不明白.如果将它放在postinstall中,则在*安装完成后完成合并,那么如何安装合并的依赖项?这是否意味着它需要连续调用2 npm安装? (4认同)