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

Posted

技术标签:

【中文标题】如何使用 Gulp 将多个 (npm) package.json 文件合并为一个?【英文标题】:How to merge multiple (npm) package.json files into one with Gulp? 【发布时间】:2016-10-10 14:51:02 【问题描述】:

假设我有一个 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 或解释其他方式/工具。

谢谢

【问题讨论】:

@LokeshJain 的回答很好 【参考方案1】:

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

npm install -g package-json-merge

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

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

【讨论】:

我喜欢这个解决方案,我可以在 bash 脚本中运行【参考方案2】:

您可以尝试使用此节点包来合并 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));

【讨论】:

【参考方案3】:

这里有两个选项:

json-merge

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

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

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

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

【讨论】:

以上是关于如何使用 Gulp 将多个 (npm) package.json 文件合并为一个?的主要内容,如果未能解决你的问题,请参考以下文章

如何将使用 Gulp 的节点部署到 heroku

如何使用 typescript / gulp / browserify 导入 npm 模块

实用的Npm插件(软件)

如何使用Gulp构建TypeScript

Django 如何使用带有静态/模板的 npm 模块

前端进阶之路-四如何利用gulp创建web前端开发框架(终)