当前位置: 首页 > news >正文

HoRain云--OpenCode 格式化工具

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

工作原理

内置格式化工具

配置文件结构

实例

禁用格式化工具

1、禁用所有格式化工具

实例

2、禁用特定格式化工具

实例

自定义格式化工具

1、覆盖内置格式化工具的命令

实例

2、添加自定义格式化工具

实例

3、同时配置多个格式化工具

实例


OpenCode 会在每次写入或编辑文件后,自动使用对应语言的格式化工具对其进行格式化,确保生成的代码始终符合你项目的代码风格。整个过程在后台静默完成,无需任何手动操作。


工作原理

当 OpenCode 写入或编辑文件时,会按以下步骤自动执行格式化:

  1. 检测被写入或编辑的文件扩展名(如.ts.py.go等)
  2. 将扩展名与所有已启用的格式化工具进行匹配
  3. 对该文件运行匹配到的格式化命令
  4. 自动将格式化结果写回文件

例如,如果你的项目package.json中包含prettier依赖,OpenCode 就会自动检测到并在每次编辑.js.ts.css等文件后调用 prettier 进行格式化,无需任何额外配置。


内置格式化工具

OpenCode 内置了覆盖主流语言和框架的格式化工具支持,分为两类:

格式化工具支持的文件扩展名启用要求
air.Rair命令可用
biome.js.jsx.ts.tsx.html.css.md.json.yaml及更多项目中存在biome.jsonbiome.jsonc配置文件
cargofmt.rscargo fmt命令可用
clang-format.c.cpp.h.hpp.ino及更多项目中存在.clang-format配置文件
cljfmt.clj.cljs.cljc.edncljfmt命令可用
dart.dartdart命令可用
dfmt.ddfmt命令可用
gleam.gleamgleam命令可用
gofmt.gogofmt命令可用
htmlbeautifier.erb.html.erbhtmlbeautifier命令可用
ktlint.kt.ktsktlint命令可用
mix.ex.exs.eex.heex.leex.neex.sfacemix命令可用
nixfmt.nixnixfmt命令可用
ocamlformat.ml.mliocamlformat命令可用,且项目中存在.ocamlformat配置文件
ormolu.hsormolu命令可用
oxfmt(实验性).js.jsx.ts.tsxpackage.json中有oxfmt依赖,且设置了对应的实验性环境变量标志
pint.phpcomposer.json中有laravel/pint依赖
prettier.js.jsx.ts.tsx.html.css.md.json.yaml及更多package.json中有prettier依赖
rubocop.rb.rake.gemspec.rurubocop命令可用
ruff.py.pyiruff命令可用且存在相应配置
rustfmt.rsrustfmt命令可用
shfmt.sh.bashshfmt命令可用
standardrb.rb.rake.gemspec.rustandardrb命令可用
terraform.tf.tfvarsterraform命令可用
uv.py.pyiuv命令可用
zig.zig.zonzig命令可用

当多个格式化工具支持同一扩展名时(例如.rs同时被cargofmtrustfmt支持,.rb同时被rubocopstandardrb支持),OpenCode 会根据项目中已安装的工具自动选择。如需明确指定,可通过下方配置禁用不需要的格式化工具。


配置文件结构

格式化工具的自定义配置写在opencode.jsonformatter字段下,键名为格式化工具名称(与内置表格中的名称一致),值为该工具的配置对象:

实例

{
"$schema": "https://opencode.ai/config.json",
"formatter": {
// 格式化工具名称: 配置对象
"prettier": {
// 在此填写 prettier 的配置项
}
}
}

每个格式化工具支持以下配置项:

配置项类型说明
disabledboolean设为true可禁用该格式化工具,其余配置项将被忽略
commandstring[]执行格式化的命令数组。命令中可使用$FILE占位符,运行时会被替换为待格式化文件的完整路径
environmentobject运行格式化工具时注入的环境变量,键值对形式
extensionsstring[]该格式化工具处理的文件扩展名列表(包含.,如".ts"

禁用格式化工具

1、禁用所有格式化工具

如果你不希望 OpenCode 对任何文件进行自动格式化,可以将formatter直接设为false

实例

{
"$schema": "https://opencode.ai/config.json",
"formatter": false // 全局禁用所有格式化工具,文件写入后不会进行任何格式化
}

2、禁用特定格式化工具

如果只需要禁用某一个格式化工具,在对应工具的配置对象中将disabled设为true,其他格式化工具不受影响:

实例

{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true // 仅禁用 prettier,其他格式化工具(如 ruff、gofmt)仍正常工作
}
}
}


自定义格式化工具

通过commandenvironmentextensions配置项,可以覆盖内置格式化工具的默认行为,或添加 OpenCode 尚未内置的格式化工具。

1、覆盖内置格式化工具的命令

例如,为 prettier 指定特定的参数,并限制它只处理特定扩展名:

实例

{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
// command 数组中的 $FILE 是占位符,运行时会被替换为待格式化文件的完整路径
// 例如实际执行:npx prettier --write /your/project/src/index.ts
"environment": {
"NODE_ENV": "development" // 运行 prettier 时注入的环境变量
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
// 覆盖默认扩展名:只对这四种文件运行 prettier,不处理 .html、.css 等
}
}
}

2、添加自定义格式化工具

如果你使用的格式化工具不在内置列表中,可以通过指定任意名称来添加。只需提供启动命令和需要处理的文件扩展名即可:

实例

{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"custom-markdown-formatter": { // 自定义名称(任意命名,不与内置工具冲突即可)
"command": ["deno", "fmt", "$FILE"],
// 使用 deno fmt 格式化文件,$FILE 会被替换为实际文件路径
"extensions": [".md"] // 只对 .md 文件运行此格式化工具
}
}
}

3、同时配置多个格式化工具

实例

{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"ruff": {
"disabled": true // 项目中不使用 ruff,将其禁用
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

http://www.jsqmd.com/news/906634/

相关文章:

  • 2026年5月天津装修设计获客机构哪家好?优质厂家推荐与选择指南 - 海棠依旧大
  • 运算放大器比较器电路:从原理到实战调试指南
  • 2026年现在程序员失业有多严重?Java程序员2026真实就业现状
  • 2026年一键生成论文工具实测排行,哪款真正适合写论文?
  • 从Widlar电流源到带隙基准:一个经典结构的‘前世今生’与设计启示
  • 基于Arduino与MQTT的智能花粉监测系统:从传感器到机械联动的物联网实践
  • macOS Sequoia 命令行(终端)完全使用指南
  • 经常听到的四类称呼:黑客、骇客、白客、红客职责大盘点
  • 2026年5月市面上旧房翻新公司找哪家厂家推荐榜,旧房翻新、局部改造、全屋整装厂家选择指南 - 海棠依旧大
  • 从Sort到DeepSort的平滑升级指南:用Python和YOLOv5复现级联匹配,实测ID保持率提升效果
  • 从医疗诊断到金融风控:混淆矩阵与F1分数在实际业务中到底怎么用?
  • iPaaS平台有哪些?五大主流产品核心特点解析
  • 告别栅格!用Sen+MK方法分析气象站/水质监测点数据的完整流程(Python实战)
  • 09.Day 9:成果落地——Act 阶段战报生成与大屏数据落盘
  • 【Elasticsearch从入门到精通】第56篇:Elasticsearch写入性能优化——批量写入与异步索引技巧
  • 2026年当下,聚焦麻城芝麻白源头实力与专业服务如何选择 - 2026年企业资讯
  • 基于Arduino的自动寻星望远镜DIY:从机电一体化到天文观测实践
  • 洞察2026年当前山西仓库门市场:知名企业实力推荐与选型指南 - 2026年企业资讯
  • MATLAB源码-第451期】基于MATLAB的改进蚁群算法与预约表避碰的仓储多机器人无冲突路径规划仿真
  • Arm Compiler FuSa 6.16LTS文档解析与安全开发实践
  • 基于MPU6050与Arduino的智能自行车转向灯:姿态感知与自动控制
  • 比话降AI率靠谱吗?2026年知网AI率15%退款承诺实测分析
  • 2026年|亲测DeepSeek四大降AI提示词:将论文AI率从90%降至5%(附详细指令)
  • CANN asnumpy 库——昇腾 NPU 原生 NumPy 兼容层
  • 谁是性价比之王?8款AI论文平台排行榜,毕业无忧秘籍!
  • Arduino焦虑缓解灯:用方形呼吸法与灯光交互实现情绪管理
  • 别再只测网速了!用Windows自带工具+Python脚本,5分钟搞定WiFi信号强度(RSSI)的长期监测与可视化
  • 别再死记硬背SMO公式了!用Python手写一个简化版SVM优化器(附完整代码)
  • Z 芙莉莲S02
  • Java 文件学习