如何使用 Yeoman 检查目录是否存在?

How to check if directory exists using Yeoman?

我要求用户提供目录名称,然后如果该目录存在,我想询问他们是否要将其存档。但是我不确定我可以在 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));
}

Yeoman 不提供任何内置方法来验证文件或目录是否存在。

但 Yeoman 只是 Node.js,它只是 JavaScript。

所以你其实想问how to detect if a directory exist with Node

如果您继承自 Generator,则您有 this.fs 个具有 exists() 方法的对象。

module.exports = class extends Generator {
      /* ... */
  default() {
    this.alreadyCopied = this.fs.exists(this.destination('myfile.txt'));
  }
}

实际上,正如 Simon Boudrias 所说,Yeoman 没有为此提供 built-in 方法,但您可以执行以下操作:

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.
        }

        }) ;            
    }         
}