Skip to content

格式化器

SlopCode 會在檔案寫入或編輯後,自動使用特定語言的格式化器對其進行格式化。這確保了生成的程式碼遵循您專案的程式碼風格。


內建格式化器

SlopCode 內建了多種適用於主流語言和框架的格式化器。下表列出了各格式化器、支援的副檔名以及所需的指令或設定選項。

格式化器副檔名要求
air.Rair 指令可用
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml 及更多biome.json(c) 設定檔
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 (Experimental).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 指令可用

因此,如果您的專案 package.json 中包含 prettier,SlopCode 會自動使用它進行格式化。


工作原理

當 SlopCode 寫入或編輯檔案時,它會:

  1. 根據所有已啟用的格式化器檢查副檔名。
  2. 對檔案執行相應的格式化指令。
  3. 自動套用格式化變更。

整個過程在背景完成,無需任何手動操作即可保持程式碼風格的一致性。


設定

您可以透過 SlopCode 設定中的 formatter 部分自訂格式化器。

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": {}
}

每個格式化器的設定支援以下屬性:

屬性型別說明
disabledboolean設為 true 可停用該格式化器
commandstring[]執行格式化的指令
environmentobject執行格式化器時設定的環境變數
extensionsstring[]該格式化器處理的副檔名

下面來看一些範例。


停用格式化器

要全域停用所有格式化器,將 formatter 設為 false

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": false
}

要停用特定格式化器,將 disabled 設為 true

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}

自訂格式化器

您可以透過指定指令、環境變數和副檔名來覆寫內建格式化器或新增新的格式化器:

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}

指令中的 $FILE 佔位符會被替換為待格式化檔案的路徑。