vinyl-ftp隐藏凭证问题

时间:2018-01-10 19:25:28

标签: gulp vinyl-ftp

我决定使用vinyl-ftp进行gulp的部署过程。我想做的一件事就是使用我的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
    
  4. 所以我希望主机的变量yourdomain.com的值,用户的ftpusername和密码的ftpuserpassword从单独的文件中读取,以便在我执行git push时显示我的凭据。我该如何做到这一点?

    由于

1 个答案:

答案 0 :(得分:0)

您可以将它们作为run args传递:

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传递凭据是一种很好的做法。