## ไบ‹่ฑก [[Biome]] v2.4.0ใง[[conform.nvim]]ใ‚’ๅˆฉ็”จใ—ใ€ใƒ•ใ‚กใ‚คใƒซใ‚’ไฟๅญ˜ใ—ใฆใ‚‚ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใŒๅŠนใ‹ใชใ„ใ€‚tsใƒ•ใ‚กใ‚คใƒซใ‚‚vueใƒ•ใ‚กใ‚คใƒซใ‚‚ใ€‚[[Biome]] 2.3.5ใงใฏใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ•ใ‚Œใฆใ„ใŸใ€‚ - `biome check` ใ ใจใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ•ใ‚Œใ‚‹ - `biome format` ใ ใจใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ•ใ‚Œใ‚‹ ### ่จญๅฎš ```lua return { "stevearc/conform.nvim", cmd = { "FormatDisable", "FormatEnable" }, event = "BufWritePre", opts = function() local function is_deno_project() local cwd = vim.fn.getcwd() return vim.fn.filereadable(cwd .. "/deno.json") == 1 or vim.fn.filereadable(cwd .. "/deno.jsonc") == 1 end local web_formatter = function() if is_deno_project() then -- Denoใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎๅ ดๅˆใฏLSP(denols)ใฎใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ‚’ไฝฟใ† (fallback) return {} end return { "biome-check", "prettierd", stop_after_first = true } end vim.api.nvim_create_user_command("FormatDisable", function() vim.b.disable_autoformat = true end, { desc = "Disable autoformat-on-save for current buffer" }) vim.api.nvim_create_user_command("FormatEnable", function() vim.b.disable_autoformat = false end, { desc = "Re-enable autoformat-on-save for current buffer" }) return { formatters_by_ft = { lua = { "stylua" }, go = { "goimports" }, bash = { "shfmt" }, zsh = { "shfmt" }, python = { "ruff_organize_imports", "ruff_fix", "ruff_format" }, sql = { "sleek" }, -- Web typescript = web_formatter, javascript = web_formatter, typescriptreact = web_formatter, javascriptreact = web_formatter, vue = web_formatter, svelte = web_formatter, json = web_formatter, jsonc = web_formatter, yaml = { "prettierd" }, html = web_formatter, css = web_formatter, scss = web_formatter, less = web_formatter, }, format_on_save = function(bufnr) if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then return end local bufname = vim.api.nvim_buf_get_name(bufnr) -- Obsidianใฎdata.jsonใซๅฏพใ™ใ‚‹ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใจ็•ฐใชใ‚Šๅทฎๅˆ†ใŒ็”Ÿใ˜ใ‚‹ใŸใ‚ if bufname:match("/data.jsonquot;) then return nil -- end -- conformใงๅฎš็พฉใ—ใŸformatterใŒๅญ˜ๅœจใ—ใชใ„ใชใ‚‰LSPใฎใƒ•ใ‚ฉใƒผใƒžใƒƒใ‚ฟใƒผใ‚’ไฝฟใ† return { timeout_ms = 1500, lsp_format = "fallback" } end, } end, } ``` ### ็’ฐๅขƒ | ๅฏพ่ฑก | ใƒใƒผใ‚ธใƒงใƒณ | | ---------------- | ---------- | | [[Biome]] | 2.4.0 | | [[conform.nvim]] | `c2526f1` | | [[Neovim]] | 0.11.5 | ## ๅŽŸๅ›  [[conform.nvim]]ใฎ `biome-check`ใฏ[[ๆจ™ๆบ–ๅ…ฅๅŠ›]]ใงๆ•ดๅฝข็ตๆžœใ‚’ๅ—ใ‘ๅ–ใ‚‹ใ‚ˆใ†ใซใชใฃใฆใ„ใ‚‹ใŒใ€[[Biome]] v2.4.0ใฏ[[ๆจ™ๆบ–ๅ‡บๅŠ›]]ใŒ็ฉบใซใชใฃใฆใ„ใ‚‹ใŸใ‚ใ€‚ ๅ…ทไฝ“็š„ใซใฏ ```console cat app/lib.ts | bunx biome check --stdin-file-path=file.ts ``` ใฎ็ตๆžœใŒ 2.3.15 ใจ 2.4.0 ใง็•ฐใชใ‚‹ใ€‚ `2.3.15` ```console cat app/lib.ts | bunx biome check --stdin-file-path=file.ts export function sum(x: number, y: number): number { return x + y; } var hoge = 1; stdin โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” โœ– The contents aren't fixed. Use the `--write` flag to fix them ``` `2.4.0` ``` stdin โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” โœ– The contents aren't fixed. Use the `--write` flag to fix them. ``` ## ่งฃๆฑบ็ญ– 2.4.1ใซใƒใƒผใ‚ธใƒงใƒณใ‚ขใƒƒใƒ—ใ™ใ‚‹ใ€‚ไปฅไธ‹ใฎPRใงๅฏพๅฟœใ•ใ‚Œใฆใ„ใŸใ€‚ <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> fix(cli): stdin regression by ematipico ยท Pull Request #9102 ยท biomejs/biome </div> <div class="link-card-v2-content"> SummaryCloses #9095We couldn&#39;t catch the bug because in our tests, .read always yields the same input; howev ... </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/23a56e15cf6aae2bdec226b190bddc29291973c7396210c574e99ebe97bd1812/biomejs/biome/pull/9102" /> <a href="https://github.com/biomejs/biome/pull/9102"></a> </div> ### ๅฝ“ๆ™‚ๅฎŸๆ–ฝใ—ใŸๅ›ž้ฟ็ญ– (็พๅœจใฏไธ่ฆ) `formatters["biome-check"]` ใ‚’ไธŠๆ›ธใใ—ใฆใ€`--stdin-file-path` ใงใฏใชใใƒ•ใ‚กใ‚คใƒซๅใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ‚ˆใ†ใซใ™ใ‚‹ใ€‚ ```lua return { opts = function() return { formatters = { ["biome-check"] = { -- Biome 2.4.0 ใงใฏ stdin ็ตŒ็”ฑใฎ check --write ใŒ็ฉบๅ‡บๅŠ›ใซใชใ‚‹ใŸใ‚ stdin = false, args = { "check", "--write", "$FILENAME" }, }, }, } end, } ``` ## ๅ‚่€ƒ > [!left-bubble] ![[chappy.webp]] > โ€ข ใฏใ„ใ€ๆ•ด็†ใ™ใ‚‹ใจๆฌกใงใ™ใ€‚ > > - ใ€ŒBiome ใŒไธ€ๅˆ‡ๅ‡บๅŠ›ใ—ใชใใชใฃใŸใ€ใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ > - ๅ•้กŒใซใชใฃใฆใ„ใ‚‹ใฎใฏ biome check --write --stdin-file-path ... ใฎใจใใซใ€conform ใŒๆœŸๅพ…ใ™ใ‚‹ใ€Œๆ•ดๅฝขๅพŒใฎๅ…จๆ–‡๏ผˆstdout๏ผ‰ใ€ใŒ็ฉบใซใชใ‚‹็‚นใงใ™๏ผˆ่จบๆ–ญใƒกใƒƒ > ใ‚ปใƒผใ‚ธใฏๅˆฅ๏ผ‰ใ€‚ > > ใ‚ใชใŸใŒใ‚ฟใƒผใƒŸใƒŠใƒซใง่ฆ‹ใฆใ„ใ‚‹ๅ‡บๅŠ›ใฏไธปใซ่จบๆ–ญใƒญใ‚ฐใงใ€conform ใฎ stdin=true ็ตŒ่ทฏใงใฏใ€Œใƒใƒƒใƒ•ใ‚ก็ฝฎๆ›็”จใƒ†ใ‚ญใ‚นใƒˆใ€ใจใ—ใฆๆ‰ฑใ‚ใ‚Œใพใ›ใ‚“ใ€‚ > ใใฎใŸใ‚ conform ๅดใฏ็ฉบๅ‡บๅŠ›ๆ‰ฑใ„ใง WARN ไธญๆ–ญใ—ใพใ™ใ€‚ > > ๅฎŸ้š›ใ€conform ใฎ builtin biome-check ใฏ stdin=true + check --write --stdin-file-path ๅ‰ๆใงใ™๏ผˆ/Users/tadashi-aikawa/.local/share/nvim/lazy/ > conform.nvim/lua/conform/formatters/biome-check.lua๏ผ‰ใ€‚ > ใ‚ใชใŸใฎ่จญๅฎšใงใฏใ“ใฎๆŒ™ๅ‹•ใ‚’ๅ›ž้ฟใ™ใ‚‹ใŸใ‚ใซ stdin=false ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใ„ใพใ™๏ผˆmnt/nvim/lua/plugins/conform.lua:52๏ผ‰ใ€‚ > > ่ฃœ่ถณ: Biomeๅ…ฌๅผCLIใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใฏ --stdin-file-path ใง stdout ๅ‡บๅŠ›ใจ่ชฌๆ˜Žใ—ใฆใ„ใ‚‹ใฎใงใ€ๅฐ‘ใชใใจใ‚‚ 2.4.0 ใฎใ“ใฎ็ต„ใฟๅˆใ‚ใ›ใฏใ€Œไป•ๆง˜ๅค‰ๆ›ดใจใ„ใ†ใ‚ˆใ‚ŠๅฎŸ่ฃ…ๅทฎ/ > ๅ›žๅธฐใฎๅฏ่ƒฝๆ€งใ€ใŒ้ซ˜ใ„ใงใ™ใ€‚ > https://biomejs.dev/reference/cli/#biome-check