Javascript 合并两个具有相似属性的bower.json文件(合并两个具有相似属性的json文件)
我想合并两个bower.json文件。一个是我的项目本地的,另一个是在不同的项目之间共享的。在运行bower安装之前,我需要合并这两个文件 请查看我的要求示例: Local bower.jsonJavascript 合并两个具有相似属性的bower.json文件(合并两个具有相似属性的json文件),javascript,json,gruntjs,bower,Javascript,Json,Gruntjs,Bower,我想合并两个bower.json文件。一个是我的项目本地的,另一个是在不同的项目之间共享的。在运行bower安装之前,我需要合并这两个文件 请查看我的要求示例: Local bower.json { "name": "myLocalProject", "version": "0.0.1", "devDependencies": { "angular": "1.1.0" }, "dependencies": { "compone
{
"name": "myLocalProject",
"version": "0.0.1",
"devDependencies": {
"angular": "1.1.0"
},
"dependencies": {
"components-font-awesome": "*"
},
"resolutions": {
"angular": "1.3.15"
}
}
{
"name": "sharedBowerFile",
"version": "0.0.3",
"devDependencies": {
"angular": "1.3.15",
"angular-resource": "1.3.15"
},
"dependencies": {
},
"resolutions": {
"angular": "1.3.15"
}
}
{
"name": "myLocalProject", // unchanged
"version": "0.0.1", // unchanged
"devDependencies": {
"angular": "1.3.15", //version updated
"angular-resource": "1.3.15" // added to local
},
"dependencies": {
"components-font-awesome": "*" //stays the same in local
},
"resolutions": {
"angular": "1.3.15"
}
}
和shared bower.json
{
"name": "myLocalProject",
"version": "0.0.1",
"devDependencies": {
"angular": "1.1.0"
},
"dependencies": {
"components-font-awesome": "*"
},
"resolutions": {
"angular": "1.3.15"
}
}
{
"name": "sharedBowerFile",
"version": "0.0.3",
"devDependencies": {
"angular": "1.3.15",
"angular-resource": "1.3.15"
},
"dependencies": {
},
"resolutions": {
"angular": "1.3.15"
}
}
{
"name": "myLocalProject", // unchanged
"version": "0.0.1", // unchanged
"devDependencies": {
"angular": "1.3.15", //version updated
"angular-resource": "1.3.15" // added to local
},
"dependencies": {
"components-font-awesome": "*" //stays the same in local
},
"resolutions": {
"angular": "1.3.15"
}
}
以及将替换本地bower.json的结果bower.json
{
"name": "myLocalProject",
"version": "0.0.1",
"devDependencies": {
"angular": "1.1.0"
},
"dependencies": {
"components-font-awesome": "*"
},
"resolutions": {
"angular": "1.3.15"
}
}
{
"name": "sharedBowerFile",
"version": "0.0.3",
"devDependencies": {
"angular": "1.3.15",
"angular-resource": "1.3.15"
},
"dependencies": {
},
"resolutions": {
"angular": "1.3.15"
}
}
{
"name": "myLocalProject", // unchanged
"version": "0.0.1", // unchanged
"devDependencies": {
"angular": "1.3.15", //version updated
"angular-resource": "1.3.15" // added to local
},
"dependencies": {
"components-font-awesome": "*" //stays the same in local
},
"resolutions": {
"angular": "1.3.15"
}
}
我将为合并创建一个Grunt任务,因此我需要JavaScript中的合并 好的,我自己编写了函数:
var mergeJSON = function (local, shared) {
var check = true;
for(var i in shared ) {
if(typeof(shared[i]) == 'object') {
for(var j in shared[i]) {
check =true;
for (var z in local[i]) {
if(j == z){
check = false;
if( cmp(shared[i][j], local[i][j])>0 ) {
//For upgrading the version of dependencies from shared to local
grunt.log.writeln("Updating local " + j + " from " + local[i][j] + " to >" + shared[i][j]);
local[i][j] = shared[i][j];
}else if(cmp(shared[i][j], local[i][j])<0){
grunt.log.writeln(j + " in shared bower.json " + " is " + shared[i][j] + " and older than local version " + local[i][j]);
}
}
}
if(check){
//add the dependency if does not exist in local
local[i][j] = shared[i][j];
grunt.log.writeln("Added dependency: " + j + ": " + local[i][j] );
}
}
}
}
return JSON.stringify(local,null,4);
};
运行:
这就是你想要做的吗?您可以只加载两个json文件,合并,然后再次字符串化?不,这不起作用。看看我的例子