JavaScript内のキー内のオブジェクトをループして、string.prototypeを使用しようとしています.replaceメソッドをGulpJS連結目的のためのjsファイルへのパスの配列に対して置き換えます。string.prototype.replaceメソッドと一致しないobject.keys foreachループ内のオブジェクトを返すことができません
ここでの目標は、GULPで使用可能なパスのリストを出力することですが、現在はその前に処理する必要があります。これを行うには、既存の 'placeholder'値をpaths配列に代入して、サブ配列内の対応する置換値を使用し、すべてのパスがリテラルになるまでループします。
問題は、ループで処理/修正されていないパスをコンソールに返すようにしたいのです。'../test4'(リテラルパス)ので無視してループが完了したら
は、ここで私は、デモの目的のためにいくつかのテストデータで、これまで持っているものです。
function fixPaths(substitutionsArray, pathArray) {
var fixedPaths = [];
pathArray.forEach(function (path, index, array) {
console.log('processing line ' + (index + 1) + '... ' + path);
Object.keys(substitutionsArray).forEach(function (placeholder) {
var substitution = substitutionsArray[placeholder];
var fixPath = path.replace(placeholder, substitution);
if (fixPath == path) {
console.log('No replacement has been found in path ' + path + ' for placeholder ' + placeholder);
} else {
console.log('Replacement found in path ' + path + ' for placeholder ' + placeholder + ' resulting in ' + fixPath);
fixedPaths.push(fixPath);
}
}
)
});
console.log(fixedPaths);
return fixedPaths;
}
var subs = {
"@[email protected]": "/test1",
"@[email protected]": "/test2",
"@[email protected]": "/test3",
"@[email protected]": "/components"
};
var paths = ['@[email protected]/test1', '@[email protected]/test2', '@[email protected]/test3', '../test4', '../../test5'];
result = fixPaths(subs, paths);
console.log(result);
return;
これを達成するための最善の方法上の任意の提案?
非常に高く評価されています。 - Ben