Prettier – это внешняя CLI-утилита.
# Ставим локально:
npm install --save-dev prettier
# или:
pnpm add -D prettier
Проверим:
npx prettier --version
Установим conform.nvim:
-- ~/.config/nvim/lua/plugins/conform.lua
return {
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
javascript = { "prettier" },
typescript = { "prettier" },
javascriptreact = { "prettier" },
typescriptreact = { "prettier" },
vue = { "prettier" },
html = { "prettier" },
css = { "prettier" },
json = { "prettier" },
yaml = { "prettier" },
markdown = { "prettier" },
},
},
}
Проверяем:
:checkhealth conform
Так как prettier установлен локально, то :checkhealth conform сработает только в папке с проектом.
ГПТ посоветовал ещё и вот такой кусок кода для того, чтобы Neovim увидел локальный prettier. Но у меня и без этого работает.
-- ~/.config/nvim/lua/plugins/conform.lua
return {
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
javascript = { "prettier" },
typescript = { "prettier" },
javascriptreact = { "prettier" },
typescriptreact = { "prettier" },
vue = { "prettier" },
html = { "prettier" },
css = { "prettier" },
json = { "prettier" },
yaml = { "prettier" },
markdown = { "prettier" },
},
formatters = {
prettier = {
command = "npx",
args = { "prettier", "--stdin-filepath", "$FILENAME" },
stdin = true,
},
},
},
}
Если всё в порядке, выполним:
:ConformInfo
Отформатировать код:
:lua require("conform").format()
Как добавить команду :Format и горячие клавиши для форматирования? Для этого добавим config в conform.lua:
-- ~/.config/nvim/lua/plugins/conform.lua
return {
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
javascript = { "prettier" },
typescript = { "prettier" },
javascriptreact = { "prettier" },
typescriptreact = { "prettier" },
vue = { "prettier" },
html = { "prettier" },
css = { "prettier" },
json = { "prettier" },
yaml = { "prettier" },
markdown = { "prettier" },
},
},
config = function(_, opts)
require("conform").setup(opts)
-- Добавляем команду :Format
vim.api.nvim_create_user_command("Format", function()
require("conform").format()
end, {})
-- Добавляем <leader>f
vim.keymap.set({ "n", "v" }, "f", function()
require("conform").format()
end, { desc = "Format file or selection" })
end
}