通过gulp获取网址响应

时间:2016-06-23 11:03:34

标签: gulp parse-url

我正在处理一个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。 我不确定这根本是否正确,可以使用你的建议。

1 个答案:

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