使用 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
文件夹结构:
- C:\工作\
- C:\Work\Company\
- C:\Work\Company\项目\
假设 Project
文件夹是命令提示符所在的位置...我想 运行 一个 Yeoman 生成器首先查看 Company
文件夹以查看是否有特定的文件已存在。它可以是任何文件名,以 .sln
.
结尾
有很多初学者资源,但我找不到任何示例显示:
- 如何成功查看父文件夹;和
- 如何使用输出 (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
是同步的。
我需要在 node.js yeoman 生成器脚本所在的父文件夹中搜索 运行 查看文件是否存在,但我不知道文件名 - 只有扩展名。
全球:https://www.npmjs.com/package/glob
文件夹结构:
- C:\工作\
- C:\Work\Company\
- C:\Work\Company\项目\
假设 Project
文件夹是命令提示符所在的位置...我想 运行 一个 Yeoman 生成器首先查看 Company
文件夹以查看是否有特定的文件已存在。它可以是任何文件名,以 .sln
.
有很多初学者资源,但我找不到任何示例显示:
- 如何成功查看父文件夹;和
- 如何使用输出 (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
是同步的。