1

我决定在 gulp 中使用vinyl-ftp 进行部署。我想做的一件事是使用我的 ftp 凭据创建一个单独的文件:

  1. 主持人

  2. 用户

  3. 密码

    并将该文件放在我的 .gitignore 中。然后我希望我的 gulp 文件中的连接变量读取该文件中的这些凭据。我的部署代码如下:

    gulp.task( 'deploy', function () {
    var conn = ftp.create( {
    host:     'yourdomain.com',
    user:     'ftpusername',
    password: 'ftpuserpassword',
    parallel: 10,
    log:      gutil.log
    } );
    
    var globs = [
    'dist/**'
    ];
    
    return gulp.src( globs, { base: './dist/', buffer: false } )
    .pipe( conn.newer( 'yourdomain.com' ) )
    .pipe( conn.dest( 'yourdomain.com' ) );
    
    } );//end deploy
    

因此,我希望从单独的文件中读取用于主机的变量 yourdomain.com、用于用户的 ftpusername 和用于密码的 ftpuserpassword 的值,以便在执行 git push 时显示我的凭据。我该如何做到这一点?

谢谢

4

1 回答 1

1

您可以将它们作为运行参数传递:

var 
    gulp           = require('gulp'),
    args           = require('yargs').argv;
const distDir = "./dist";
gulp.task('deploy', function() {
    var conn = ftp.create({
        host:      args.host,
        user:      args.user,
        password:  args.password,
        parallel:  10,
        log: flog // .log
    });

    var globs = [
    distDir + '/**',
    distDir + '/.htaccess',
    ];
    return gulp.src(globs, {buffer: false})  
    .pipe(conn.dest(args.remotedir));

});

然后从命令行调用它或将该行放入批处理文件中:npm run gulp deploy -- --host=hostname --user=username --password=password --remotedir=/path/to/folder/on/server. 如果 gulp 是全局安装的,则使用gulp而不是。npm run gulp

这是在程序启动时通过 args 传递凭据的好习惯。

于 2018-04-11T16:45:20.527 回答