2
雖然我發現了許多結合json的gulp插件,但他們總是放棄合併數據的文件夾結構。 我的使用情況是這樣的結構:JSON結合吞食任務,保持文件夾結構 - 跨平臺
game-data/
|____ cards/
| |__ card1.json
| |__ card2.json
| |__ ...
|____ infos/
|___ en
| |__ properties1.json
| |__ properties2.json
|___ fr
| |__ properties1.json
| |__ properties2.json
|___ es
|__ properties1.json
|__ properties2.json
輸出我與每一個插件,我發現會得到由下一個重寫每張卡和下一個語言的每個特性得到,因爲它們具有相同的結構。
我嘗試過使用gulp-json-concat,它只能在Linux環境下工作,因爲數據不會跟蹤Windows路徑。 這是我傳給
// paths.resources:
resources: ['./public/gameData/**/*.json']
// gulpfile.json
return gulp.src(paths.resources)
.pipe(plugins.jsonConcat('gameData.json',jsonFolderParser))
.pipe(gulp.dest(paths.distDev + '/gameData/'));
// Callback
var jsonFolderParser = function (data) {
var computed = {};
for (var i in data) {
var keys = i.split("/");
if (!computed[keys[0]]) {
computed[keys[0]] = {};
}
if (keys.length == 2) {
computed[keys[0]][keys[1]] = data[i]
} else if (keys.length == 3) {
if (!computed[keys[0]][keys[1]]) {
computed[keys[0]][keys[1]] = {};
}
computed[keys[0]][keys[1]][keys[2]] = data[i]
} else if (keys.length == 4) {
if (!computed[keys[0]][keys[1]][keys[2]]) {
computed[keys[0]][keys[1]][keys[2]] = {};
}
computed[keys[0]][keys[1]][keys[2]][keys[3]] = data[i]
} else if (keys.length == 5) {
if (!computed[keys[0]][keys[1]][keys[2]][keys[3]]) {
computed[keys[0]][keys[1]][keys[2]][keys[3]] = {};
}
computed[keys[0]][keys[1]][keys[2]][keys[3]][keys[4]] = data[i]
}
}
return new Buffer(JSON.stringify(computed));
};
在Linux上運行,達到深度5(我不是在回調中遞歸思想這麼好......),它不工作在Windows上的回調。
有什麼我失蹤與這個插件?有沒有可以在Windows和Linux上運行的插件?
您可以用path.sep簡化:https://nodejs.org/api/path.html#path_path_sep – Mark