如何将多个(npm)package.json文件合并到一个Gulp?

时间:2016-06-09 19:28:22

标签: node.js npm gulp package.json

假设我有一个mainFolder和3个子文件夹(subFolderA,subfolderB,subfolderC)。

这些子文件夹都包含一个带有依赖项和devDependencies的package.json。 (mainFolder / subFolderA /的package.json)

我想将它们合并到mainFolder(mainFolder / package.json)中的单个package.json中

是否存在一个现有的gulp包(或Gulp之外的任何其他解决方案)来组合和合并package.json依赖项和devDependencies?

(我们假设没有版本冲突。如果有解决方案也涵盖了这种情况,那就太好了!)

您可以发布一个示例gulpfile.js或解释其他方法/工具。

谢谢

3 个答案:

答案 0 :(得分:7)

您可以尝试使用此节点包来合并package.json文件: https://www.npmjs.com/package/package-merge

编辑以下评论@dur

示例:

var merge = require('package-merge')
var fs = require('fs');

var dst = fs.readFileSync('package.a.json');
var src = fs.readFileSync('package.b.json');
fs.writeFile("/tmp/package.merged.json", merge(dst,src));

答案 1 :(得分:2)

以下是两个选项:

json-merge

json-merge package.json --parse="dependencies" package2.json --parse="devDependencies"

npm-deps扫描子目录中嵌套的package.json文件,并将所有依赖项合并到一个输出到stdout的package.json文件中。

通过标准输入传递的基本模板用于生成根package.json文件。这允许版本控制系统忽略package.json,这与自动生成的文件冲突。基本包属性(如名称和版本)可以存储在单独的文件中,例如package-base.json,并保存在版本控制中。

$ cd my_cool_project $ npm-deps < package-base.json > package.json

答案 2 :(得分:2)

您可以尝试package-json-merge npm模块。要安装它,请使用以下命令-

npm install -g package-json-merge

然后只需使用以下命令将多个package.json合并为一个-

package-json-merge package1.json package2.json .... packageN.json > package.json