Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用glob.sync()忽略包含给定子字符串的文件_Node.js_Gatsby_Glob_Sharp - Fatal编程技术网

Node.js 使用glob.sync()忽略包含给定子字符串的文件

Node.js 使用glob.sync()忽略包含给定子字符串的文件,node.js,gatsby,glob,sharp,Node.js,Gatsby,Glob,Sharp,我正在尝试编写一个简单的节点脚本来调整大文件的大小(旨在解决面向肖像的大文件的问题)。代码的主要部分直接来自 module.exports=optimizeImages=()=>{ 常量sharp=require(`sharp`) 常量glob=require(`glob`) const matches=glob.sync(`src/images/***!(优化)。{png,jpg,jpeg}`//{ 恒流=夏普(匹配) const info=wait stream.metadata() 如果(

我正在尝试编写一个简单的节点脚本来调整大文件的大小(旨在解决面向肖像的大文件的问题)。代码的主要部分直接来自

module.exports=optimizeImages=()=>{
常量sharp=require(`sharp`)
常量glob=require(`glob`)
const matches=glob.sync(`src/images/***!(优化)。{png,jpg,jpeg}`//{
恒流=夏普(匹配)
const info=wait stream.metadata()
如果(信息宽度<最大宽度){
返回
}
const optimizedName=match.replace(
/(\..+)$/,
(match,ext)=>`-optimized${ext}`
)
等待溪流
.调整大小(最大宽度)
.jpeg({quality:quality})
.toFile(优化名称)
.then(newFile=>console.log(newFile))
.catch(错误=>console.log(错误))
返回真值
})
)
}
代码似乎按预期工作,但我不知道如何取消匹配allready优化的文件名。他们的名字应该以“-optimized”后缀结尾

  • 应处理src/images/foo.jpg
  • src/images/bar优化。应忽略jpg
我尝试使用模式
src/images/***!(优化)。{png,jpg,jpeg}
,但这不起作用。我试过使用
{ignore:'src/images/***!(optimized)}
,但这也不起作用


任何帮助都将不胜感激。

事实证明,这是按预期进行的:

const matches = glob.sync(`src/images/**/*.{png,jpg,jpeg}`, {
  ignore: ['src/images/**/*-optimized.*']
})

警方在现场发现了重要线索

const matches = glob.sync(`src/images/**/*.{png,jpg,jpeg}`, {
  ignore: ['src/images/**/*-optimized.*']
})