2016-06-23 8 views
0

外部API(https://api.wordpress.org/secret-key/1.1/salt/)から結果をフェッチし、さらにパイプラインを使用するために変数に格納するGulpタスクに取り組んでいます。私はこのgulp経由でURL応答を取得する

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

このように、ノードのparseurlパッケージを使用してみました

はエラーを返します: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)); 
     } 
    }); 
}); 
関連する問題