jsonを結合する多くのgulpプラグインが見つかりましたが、それらは常にフォルダ構造を破棄してデータをマージします。彼らは同じ構造を持っているので、私は私が見つけたすべてのプラグインで取得する出力は次の言語で、次のいずれかによってオーバーライド各カードおよび各プロパティになるだろうフォルダ構造を維持する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で試してみましたが、データがWindowsのパスを追跡しないため、Linux環境でのみ動作しました。 は、ここで私はそれは深さ5(私は...コールバックでの再帰的な思考とあまりよくありませんよ)まで、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));
};
に渡されたコールバックです。
このプラグインには何かがありますか? WindowsとLinuxの両方で動作するプラグインはありますか?
あなたはpath.sepを簡素化することができます:https://nodejs.org/api/path.html#path_path_sep – Mark