使用 glob node.js 使用通配符知道父文件夹中是否存在文件

Use glob node.js to know if a file exists in the parent folder using wildcard

我需要在 node.js yeoman 生成器脚本所在的父文件夹中搜索 运行 查看文件是否存在,但我不知道文件名 - 只有扩展名。

全球:https://www.npmjs.com/package/glob

文件夹结构:

假设 Project 文件夹是命令提示符所在的位置...我想 运行 一个 Yeoman 生成器首先查看 Company 文件夹以查看是否有特定的文件已存在。它可以是任何文件名,以 .sln.

结尾

有很多初学者资源,但我找不到任何示例显示:

  1. 如何成功查看父文件夹;和
  2. 如何使用输出 (true/false?) 以在函数后面的逻辑变量中使用。

这是我尝试做的事情,但不可否认,我对 C# 的掌握比对 JS 的熟练得多。

var globbed = glob("../*.sln", function(err, files){
    this.log(chalk.yellow("err = " + err));
    this.log(chalk.yellow("files = " + files));
});

还有这个...

var gOptions = { cwd: "../" };
var globbed = glob("*.sln", gOptions, function(err, files){
    this.log(chalk.yellow("err = " + err));
    this.log(chalk.yellow("files = " + files));
});

在这两个例子中,globbed都是一个对象,但我不知道它的属性是什么,也无法访问内部函数。

本质上,我需要知道该文件是否存在,以便我可以 运行 对其进行 If/Then 声明。

试试这个。

const path = require('path');
const glob = require('glob');

glob(
 '*.sln',
 { cwd: path.resolve(process.cwd(), '..') },  // you want to search in parent directory
 (err, files) => {
   if (err) {
     throw err;
   }

   if (files.length) {
     // File exists. All matched filenames are inside files array.
   } else {
     // File does not exist. files array is empty.
   }
 }
);

glob 是一个异步函数,因此结果是在回调中提供的,而不是同步返回的。

您还可以使用 globster.xyz

测试 glob 表达式

没用过golb.Hope这对你有帮助。

var fs=require('fs');
var pattern=RegExp('.md$');//Enter file extension here
fs.readdir('..//',(err,files)=>{
      //console.log(files);
      if(files.find((file)=>{return pattern.test(file)==true;})){
          //console.log('file found');  your code
        }
       else{
         //console.log('file not found'); your code
        }
    });

使用glob.sync:

const files = glob.sync("*.sln", { cwd: "../" }); 

或者干脆

const files = glob.sync("../*.sln"); 

files 将是父目录中 *.sln 个文件的数组(如果有的话)。显然,glob.sync是同步的。