如何使用 gulpjs 将数组值替换为另一个数组中的值
How to replace array values with values in another array using gulpjs
我有一个 XML 文件,我需要在其中使用 GulpJS 将属性值替换为数组中的值。数组 users1 中的现有属性值需要替换为 users2 数组中的项目。
JavaScript代码:
var gulp = require('gulp');
var replace = require('gulp-replace');
var rs = require('replacestream');
var through = require('through2');
gulp.task('default', function() {
//array is dynamic
var users1 = ["existing_value1", "existing_value2", "existing_value3"];
var users2 = ["new_value1", "new_value2", "new_value3"];
var num = users.length();
gulp.src(['idmap/*.xml'])
.pipe(replaceArray(users1, users2))
.pipe(gulp.dest('build/'));
});
function replaceArray(searchArray, replacement) {
return through.obj(function(file, encoding, callback) {
if (file.isBuffer()) {
var result = searchArray.reduce(function(contents, searchArray) {
return contents.split(searchArray).join(replacement);
}, String(file.contents));
file.contents = new Buffer(result);
return callback(null, file);
}
callback(null, file);
});
}
样本XML:
<?xml version="1.0"?><IDMAP>
<RECORD>
<TOKEN data="414" />
<NAME data="existing_value1" />
</RECORD>
<RECORD>
<TOKEN data="420" />
<NAME data="existing_value2" />
</RECORD>
<RECORD>
<TOKEN data="361" />
<NAME data="existing_value3" />
</RECORD></IDMAP>
使用上面的代码,我将 XML 中的所有值(users1 数组)替换为 users2 数组中的逗号分隔值。如何将数组中的所有元素替换成对应的元素?
提前致谢!
您的 replaceArray()
函数不是必需的。您已经 require()
gulp-replace
插件,所以我建议您使用它。使用 gulp-replace
:
时解决方案变得微不足道
var gulp = require('gulp');
var replace = require('gulp-replace');
gulp.task('default', function() {
var users1 = ["existing_value1", "existing_value2", "existing_value3"];
var users2 = ["new_value1", "new_value2", "new_value3"];
var stream = gulp.src(['idmap/*.xml']);
users1.forEach(function(u, i) {
stream = stream.pipe(replace(users1[i], users2[i]));
});
return stream.pipe(gulp.dest('build/'));
});
我有一个 XML 文件,我需要在其中使用 GulpJS 将属性值替换为数组中的值。数组 users1 中的现有属性值需要替换为 users2 数组中的项目。
JavaScript代码:
var gulp = require('gulp');
var replace = require('gulp-replace');
var rs = require('replacestream');
var through = require('through2');
gulp.task('default', function() {
//array is dynamic
var users1 = ["existing_value1", "existing_value2", "existing_value3"];
var users2 = ["new_value1", "new_value2", "new_value3"];
var num = users.length();
gulp.src(['idmap/*.xml'])
.pipe(replaceArray(users1, users2))
.pipe(gulp.dest('build/'));
});
function replaceArray(searchArray, replacement) {
return through.obj(function(file, encoding, callback) {
if (file.isBuffer()) {
var result = searchArray.reduce(function(contents, searchArray) {
return contents.split(searchArray).join(replacement);
}, String(file.contents));
file.contents = new Buffer(result);
return callback(null, file);
}
callback(null, file);
});
}
样本XML:
<?xml version="1.0"?><IDMAP>
<RECORD>
<TOKEN data="414" />
<NAME data="existing_value1" />
</RECORD>
<RECORD>
<TOKEN data="420" />
<NAME data="existing_value2" />
</RECORD>
<RECORD>
<TOKEN data="361" />
<NAME data="existing_value3" />
</RECORD></IDMAP>
使用上面的代码,我将 XML 中的所有值(users1 数组)替换为 users2 数组中的逗号分隔值。如何将数组中的所有元素替换成对应的元素?
提前致谢!
您的 replaceArray()
函数不是必需的。您已经 require()
gulp-replace
插件,所以我建议您使用它。使用 gulp-replace
:
var gulp = require('gulp');
var replace = require('gulp-replace');
gulp.task('default', function() {
var users1 = ["existing_value1", "existing_value2", "existing_value3"];
var users2 = ["new_value1", "new_value2", "new_value3"];
var stream = gulp.src(['idmap/*.xml']);
users1.forEach(function(u, i) {
stream = stream.pipe(replace(users1[i], users2[i]));
});
return stream.pipe(gulp.dest('build/'));
});