我正在使用gulp通过scp移动远程目录中的某些文件夹。实际上,如果我在gulpfile中声明密码,它工作正常。我宁愿每次尝试通过提示运行此任务时都需要密码,而不是将其显示在文件中。 我怎么能这样做?
我的大口任务:
var scp = require('gulp-scp2');
gulp.task('deploy', function(done) {
return gulp.src("./dist/**")
.pipe(scp({
host: 'localhost',
username: 'saifer',
dest: '/home/saifer/'
}))
.on('error', function(err) {
console.log(err);
});
});
以这种方式启动任务显然会引发错误,如:
Error: Authentication failure. Available authentication methods: publickey,gssapi-keyex,gssapi-with-mic,password
我正在寻找一些东西来添加scp的传递对象,让gulp taks在尝试连接之前要求输入密码
答案 0 :(得分:0)
我认为提示是一个无情的问题。您应该使用单独的模块(或者只使用标准库中的readline模块)来解决它。下面的解决方案使用prompt
模块:
const util = require('util')
const prompt = require('prompt')
var schema = {
properties: {
password: {
hidden: true
}
}
};
prompt.start();
util.promisify(prompt.get)(schema).then(({ password }) => {
var scp = require('gulp-scp2');
gulp.task('deploy', function(done) {
return gulp.src("./dist/**")
.pipe(scp({
host: 'localhost',
username: 'saifer',
dest: '/home/saifer/',
password
}))
.on('error', function(err) {
console.log(err);
});
});
});