Glob(npm包)无法匹配点开头文件,模式或glob.sync()参数需调整?
问题:Glob模式无法匹配隐藏文件
我的Glob模式:
D:/WebDevelopmentProjects/InitiativeClientsProject/Example/HomePage/01-Source/Automation/ToCopy/Production/**/*
无法匹配全路径为D:\WebDevelopmentProjects\InitiativeClientsProject\Example\HomePage\01-Source\Automation\ToCopy\Production\.env.production.generated的隐藏文件.env.production.generated。
当前使用的glob.sync()代码仅添加了nodir: true参数:
import Glob from "glob"; Glob.sync( [ "D:/WebDevelopmentProjects/InitiativeClientsProject/Example/HomePage/01-Source/Automation/ToCopy/Production/**/*" ], { nodir: true } );
执行结果包含该目录下所有非隐藏文件,但唯独缺少.env.production.generated:
[ 'D:\\WebDevelopmentProjects\\InitiativeClientsProject\\Example\\HomePage\\01-Source\\Automation\\ToCopy\\Production\\package.json', 'D:\\WebDevelopmentProjects\\InitiativeClientsProject\\Example\\HomePage\\01-Source\\Automation\\ToCopy\\Production\\FrontServer.Dockerfile', 'D:\\WebDevelopmentProjects\\InitiativeClientsProject\\Example\\HomePage\\01-Source\\Automation\\ToCopy\\Production\\docker-compose.yml', 'D:\\WebDevelopmentProjects\\InitiativeClientsProject\\Example\\HomePage\\01-Source\\Automation\\ToCopy\\Production\\ssl\\SSL_Key-Production.pem', 'D:\\WebDevelopmentProjects\\InitiativeClientsProject\\Example\\HomePage\\01-Source\\Automation\\ToCopy\\Production\\ssl\\SSL_Certificate-Production.pem' ]
解决方案
问题出在glob的默认行为:默认忽略以.开头的隐藏文件。你需要在选项中添加dot: true参数,让glob匹配隐藏文件。
修改后的代码:
import Glob from "glob"; Glob.sync( [ "D:/WebDevelopmentProjects/InitiativeClientsProject/Example/HomePage/01-Source/Automation/ToCopy/Production/**/*" ], { nodir: true, dot: true // 添加该参数以匹配隐藏文件 } );
添加dot: true后,glob就会包含所有以.开头的文件,你的.env.production.generated就能被正常匹配到。
内容的提问来源于stack exchange,提问作者Takeshi Tokugawa YD
相关产品推荐
相关产品推荐

