Ionic 5应用执行npx prettier格式化命令提示“No files matching the pattern were found”的问题解决
解决Prettier执行时「No files matching the pattern were found」错误
我来帮你排查这个问题,你遇到的「No files matching the pattern were found」错误通常和git diff的输出或者命令写法有关,我们一步步来解决:
1. 先确认Git差异文件是否存在
首先手动执行这个命令,检查是否有输出:
git diff origin/master --name-only
- 如果没有任何输出:说明当前分支和
origin/master完全一致,没有修改过的文件,这时候Prettier自然没有文件可处理。你可以修改脚本,让它在这种情况下正常退出而不报错。 - 如果有文件输出:那问题出在命令传递参数的方式上,比如文件名包含空格或特殊字符,导致Shell拆分了路径。
2. 修改命令,兼容带空格的文件名
把原来的命令改成用xargs来传递文件,这样能更好处理带空格的路径:
git diff origin/master --name-only | xargs -r npx prettier --write
其中-r参数的作用是:当git diff没有输出时,不执行后面的Prettier命令,避免报错。
3. 在lint脚本中添加空输出判断(推荐)
如果你用的是scripts/lint.sh脚本,建议加入判断逻辑,让脚本更健壮:
#!/bin/bash # 获取差异文件列表 CHANGED_FILES=$(git diff origin/master --name-only) # 检查是否有文件需要格式化 if [ -z "$CHANGED_FILES" ]; then echo "✅ 没有需要格式化的变更文件" exit 0 fi # 执行Prettier格式化 npx prettier --write $CHANGED_FILES
这样当没有差异文件时,脚本会友好提示并正常退出,不会触发npm的错误。
4. 额外检查点
- 确认你的Prettier配置(比如
.prettierrc或package.json里的prettier字段)包含了Ionic项目的文件类型(比如.ts、.html、.scss等),确保Prettier能识别这些文件。 - 检查当前工作目录是否正确:从npm日志看,脚本是在项目根目录执行的,这部分应该没问题,但如果你的脚本里有切换目录的逻辑,需要确认路径正确。
内容的提问来源于stack exchange,提问作者Roshan Dhabekar
相关产品推荐
相关产品推荐

