0

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

4

1 回答 1

2

我可以改为使用 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));
        }
    });
});
于 2016-06-23T12:45:00.173 回答