2016-06-23 37 views
0

我正在研究一个Gulp任务,该任务将从外部API(https://api.wordpress.org/secret-key/1.1/salt/)获取结果并将其存储在变量中,以便在流水线之后使用。通过吞吐提取url响应

我已经使用节点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

我可以使它工作使用要求()来代替,并启动管道在请求回调,像这样:

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)); 
     } 
    }); 
});