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

时间:2016-09-28 21:54:13

标签: javascript yeoman yeoman-generator

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

        }) ;            
    }         
}