ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Prettier 的 --config-precedence 怎么设置:CLI 选项与配置文件的优先级如何取舍

Prettier 的 --config-precedence 怎么设置:CLI 选项与配置文件的优先级如何取舍 Prettier 的 --config-precedence 怎么设置CLI 选项与配置文件的优先级如何取舍【免费下载链接】prettierPrettier is an opinionated code formatter.项目地址: https://gitcode.com/gh_mirrors/pr/prettier用 Prettier CLI 格式化项目时命令行上会传选项项目里往往又有.prettierrc这类配置文件。两边对同一个选项给出不同值时到底以谁为准需要--config-precedence来控制。docs/cli.md 定义了这个选项的三个取值和默认行为本文用仓库自带的集成测试 fixture 作为最小可复现项目逐个演示每种取值的设置方式和验证方式方便你在普通 CLI 使用、编辑器集成等封装场景里做出取舍。前提Prettier 已安装。按 CLI 文档 的说明本地安装版本可以加npx、yarn exec、pnpm exec等前缀运行下文统一用npx prettier。--config-precedence的三个取值与默认值docs/cli.md 对Defines how config file should be evaluated in combination of CLI options的定义如下取值行为文档原文含义cli-override默认CLI options take precedence over config fileCLI 选项优先于配置文件file-overrideConfig file take precedence over CLI options配置文件优先于 CLI 选项prefer-file找到配置文件就评估它并忽略其他 CLI 选项找不到配置文件时CLI 选项照常评估文档同时说明这个选项adds support to editor integrations where users define their default configuration but want to respect project specific configuration即主要服务于封装类场景——工具在命令行带上自己的默认选项但希望项目自己的配置生效。源码中的选项定义 与文档一致并确认默认值是cli-override。搭建最小复现项目仓库的集成测试已经提供了现成的最小 fixture直接照抄到一个空目录即可。.prettierrc仓库原件{tabWidth: 3}foo.jsfunction foo () { return bar; }验证思路配置文件里tabWidth是 3命令行再传--tab-width 5。输出缩进是 3 格说明配置文件生效是 5 格说明 CLI 选项生效。Prettier 未加--write时格式化结果打印到 stdout直接看命令输出即可。逐个取值设置并验证默认cli-overrideCLI 选项获胜npx prettier foo.js输出为 3 格缩进即配置文件生效。再加--tab-width 5npx prettier --tab-width 5 foo.js输出变为 5 格缩进CLI 选项覆盖了配置文件。不显式传--config-precedence时就是这个行为显式写--config-precedence cli-override效果相同对应 测试。测试中的预期输出示例输出function foo() { return bar; }return bar前是 5 个空格。file-override配置文件获胜npx prettier --config-precedence file-override --tab-width 5 foo.js命令行虽传了--tab-width 5输出仍是 3 格缩进即.prettierrc里的值生效测试预期输出示例function foo() { return bar; }从源码实现 看file-override是把 CLI 选项与配置文件选项逐项合并、同选项取配置文件值而测试 也确认找不到配置文件时file-override下 CLI 选项仍然照常应用。prefer-file找到配置文件则整体忽略 CLI 选项存在配置文件时npx prettier --config-precedence prefer-file --tab-width 5 foo.js只要找到.prettierrc其他 CLI 选项全部被忽略输出仍是 3 格缩进。配置文件不存在时例如目录中没有任何配置文件或显式传--no-configCLI 选项照常评估测试 中对应的命令是npx prettier --end-of-line lf --print-width 1 --tab-width 7 --no-config --config-precedence prefer-file file.js此时命令行传入的--tab-width 7等选项生效。也就是说file-override与prefer-file的区别在于前者逐项以配置文件为准后者一旦找到配置文件就把 CLI 选项整体停用是文档中面向编辑器集成的全有或全无模式。辅助验证方式debug 日志给命令加--log-level debug合法取值见 docs/cli.mdPrettier 在合并完选项后会打印applied config-precedence (file-override): {...}一行的最终生效选项可直接核对是哪些选项来自哪一侧。日志内容以源码中的输出位置 为准。退出码配置文件本身无效时例如测试 fixture 用的{printWidth: 0.5}见 invalid-config fixture三种取值下 Prettier 都以非零码退出结合 docs/cli.md 的退出码表2表示 Somethings wrong with Prettier可以区分配置错误和格式不达标1。如何取舍普通 CLI 使用保持默认cli-override即可。docs/cli.md 本身建议把--single-quote、--trailing-comma这类格式选项写进配置文件而不是作为 CLI flag 传递这样 CLI、编辑器集成和其他工具能共用同一套选项。两边确实冲突时默认的CLI 获胜通常就是命令行使用者期望的结果。封装工具、编辑器集成你的工具在命令行上传一组默认选项但格式化某个项目时必须尊重项目自己的配置——用file-override逐项以配置文件为准或prefer-file找到配置文件就完全停用 CLI 选项。想跳过配置文件用--no-config它直接不查找配置文件docs/cli.md与--config-precedence是两回事需要显式指定配置文件路径例如配置放在config/目录这类 Prettier 默认找不到的位置时用--config path/to/.prettierrc。边界与已知限制配置文件从被格式化文件的位置开始沿目录树向上解析docs/configuration.md。多包仓库中不同子目录可能命中不同的配置文件同一条命令在不同目录下应用的优先级来源可能不同。项目中存在.editorconfig时其转换出的配置会被.prettierrc等 Prettier 配置文件覆盖docs/configuration.md。prettier --file-info不走--config-precedence逻辑源码中有明确注释This does not work with--config-precedence。--stdin-filepath与三种取值组合的完整用例见 with-config-precedence.js 测试对某一组合的行为拿不准时可以逐一对照这份测试作为行为基准。【免费下载链接】prettierPrettier is an opinionated code formatter.项目地址: https://gitcode.com/gh_mirrors/pr/prettier创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表