我正在处理一个Gulp任务,该任务将从外部API(https://api.wordpress.org/secret-key/1.1/salt/)获取结果并将其存储在变量中,以便在管道中进一步使用。
我尝试过像这样使用节点的parseurl包
const gulp = require('gulp');
const replace = require('gulp-replace');
const plumber = require('gulp-plumber');
const parseurl = require('parseurl');
gulp.task('wordpress:config', function(){
var salted_hash, url ="https://api.wordpress.org/secret-key/1.1/salt/";
return gulp.src('./src/wp-config.php')
.pipe(plumber(plumberErrorHandler))
.pipe(
function(){
salted_hash = parseurl(url);
console.log(salted_hash);
return salted_hash;
}
)
.pipe(replace('{DB_NAME}', project.db_name))
.pipe(replace('{DB_USER}', project.db_user ))
.pipe(replace('{DB_PASS}', project.db_pass ))
.pipe(replace('{DB_PREFIX}', project.theme_slug+'_' ))
.pipe(replace('{SALTED_HASH}', salted_hash ))
.pipe(gulp.dest('./'+project.wordpress ));
});
这会返回错误:TypeError: dest.on is not a function
。
我不确定这根本是否正确,可以使用你的建议。
答案 0 :(得分:1)
我可以使用request()代替它,并在请求回调中启动管道,如下所示:
const gulp = require('gulp');
const request = require('request');
const replace = require('gulp-replace');
const plumber = require('gulp-plumber');
gulp.task('wordpress:config', function() {
return request("https://api.wordpress.org/secret-key/1.1/salt/", function(error, response, body) {
if (!error && response.statusCode == 200) {
gulp.src('./src/wp-config.php')
.pipe(plumber(plumberErrorHandler))
.pipe(replace('{DB_NAME}', project.db_name))
.pipe(replace('{DB_USER}', project.db_user))
.pipe(replace('{DB_PASS}', project.db_pass))
.pipe(replace('{DB_PREFIX}', project.theme_slug + '_'))
.pipe(replace('{SALTED_HASH}', body))
.pipe(gulp.dest('./' + project.wordpress));
}
});
});