我要求用户输入目录名,然后如果该目录存在,我想询问他们是否要将其存档。但是我不确定在Yeoman里面可以用什么功能来实现这个目的。这是我的代码。
prompting: function () {
return this.prompt([{
type: 'input',
name: 'project_directory',
message: 'What is the project directory name?'
}, {
type: 'confirm',
name: 'archive',
message: 'That project already exists. Do you want to archive it?',
when: function (answers) {
var destDir = 'project/' + answers.project_directory.replace(/[^0-9a-zA-Z\-.]/g, "").toLowerCase();
var fso = new ActiveXObject("Scripting.FileSystemObject");
//Return true if the folder exists
return (fso.FolderExists(destDir));
}
}]).then(function (answers) {
}.bind(this));
}
答案 0 :(得分:3)
Yeoman没有提供任何内置方法来验证文件或目录是否存在。
但Yeoman只是Node.js,它只是JavaScript。
答案 1 :(得分:0)
如果您从Generator继承,则this.fs
对象具有exists()
方法。
module.exports = class extends Generator {
/* ... */
default() {
this.alreadyCopied = this.fs.exists(this.destination('myfile.txt'));
}
}
答案 2 :(得分:0)
实际上,正如Simon Boudrias所说,Yeoman并没有为它提供内置方法,但你可以做到以下几点:
var Generator = require('yeoman-generator');
var fs = require('fs');
module.exports = class extends Generator{
checkIfFolderExists(){
fs.stat('YourDirectoryHere'), function(error, stats){
if(stats!=undefined && stats.isDirectory()){
// your directory already exists.
}else{
// create your directory.
}
}) ;
}
}