Почему Prettier в VS Code не форматирует .ts файлы
Решение проблемы: Prettier VS Code показывает 'Formatting completed', но не меняет .ts файлы из-за requirePragma в локальной конфигурации. Как отключить pragma, настроить vs code форматирование и интегрировать с ESLint.
Почему Prettier в VS Code не форматирует некоторые .ts файлы, хотя вывод показывает успешное завершение?
Я установил расширение Prettier и настроил всё правильно. Два .ts файла форматируются командой Format Document, но другие — нет. В выводе Prettier для проблемных файлов отображается:
["INFO" - 7:56:40 PM] Using local configuration (VS Code configuration will not be used)
["INFO" - 7:56:40 PM] Prettier Options:
{
"filepath": "/home/sergey/www/icod-elysia/src/index.ts",
"parser": "typescript",
"useTabs": false,
"tabWidth": 4,
"endOfLine": "lf",
"trailingComma": "es5",
"printWidth": 120,
"semi": false,
"bracketSpacing": false,
"singleQuote": false,
"singleAttributePerLine": true,
"requirePragma": true,
"objectWrap": "preserve",
"insertPragma": true,
"bracketSameLine": true
}
["INFO" - 7:56:40 PM] Formatting completed in 23ms.
Prettier указывает, что форматирование завершено, но в файле ничего не меняется: добавленные пробелы остаются. В другом файле из той же директории форматирование работает корректно и удаляет лишние пробелы.
Я проверил на наличие ошибок: удалил весь контент и написал простую строку let a = 10;, но форматирование всё равно не применяется, хотя вывод подтверждает завершение.
settings.json настроен правильно с Prettier как default formatter.
Как исправить проблему с форматированием отдельных .ts файлов в VS Code с Prettier? Почему используется локальная конфигурация и игнорируется VS Code настройка?
Проблема с vs code форматирование в prettier vs code часто возникает из‑за локальной конфигурации .prettierrc с опциями "requirePragma": true и "insertPragma": true. Эти настройки требуют специальный комментарий /** @format */ в начале файла — без него prettier vscode завершает форматирование «успешно», но не меняет код, даже простой let a = 10;. Локальный конфиг имеет приоритет над settings.json VS Code, поэтому добавьте pragma вручную или отключите эти опции, чтобы vs code форматирование кода работало для всех .ts файлов.
Содержание
- Почему Prettier в VS Code не форматирует некоторые .ts файлы
- Локальная конфигурация Prettier и почему игнорируются настройки VS Code
- Что такое requirePragma и insertPragma в Prettier
- Как добавить pragma-комментарий и принудительно форматировать
- Пошаговая настройка Prettier в VS Code
- Горячие клавиши и команды для vs code форматирование кода
- Интеграция Prettier с ESLint и решение других проблем
- Источники
- Заключение
Почему Prettier в VS Code не форматирует некоторые .ts файлы
Представьте: вы пишете let a = 10; с лишними пробелами, жмете Format Document, и лог кричит «Formatting completed in 23ms», но ничего не меняется. Знакомо? Это классика с prettier vs code и prettier typescript. Два файла из одной папки работают, остальные — нет. Почему?
В вашем логе ключ: “Using local configuration (VS Code configuration will not be used)”. Prettier находит .prettierrc (или prettier.config.js в проекте) и следует ему слепо. А там "requirePragma": true — это значит, форматирование применяется только к файлам с pragma‑комментарием вроде /** @format */ или /** @prettier */ в самом верху.
Почему один файл работает? Вероятно, у него уже есть pragma (от предыдущего форматирования с "insertPragma": true). В /home/sergey/www/icod-elysia/src/index.ts его нет — вот и тишина. Локальный конфиг ищется рекурсивно от файла вверх по директориям, так что даже если в корне проекта есть .prettierrc, он рулит всем.
Это не баг VS Code или расширения esbenp.prettier-vscode. Это фича Prettier для командной работы: чтобы не переформатировать чужой код случайно. Но для solo‑разработки бесит.
Локальная конфигурация Prettier и почему игнорируются настройки VS Code
Prettier vs code настройка простая, но с подвохом. Ваш settings.json с "defaultFormatter": "esbenp.prettier-vscode" и "editor.formatOnSave": true — идеален. Но если в проекте есть локальный конфиг, он переопределяет всё.
Prettier ищет файлы по порядку:
.prettierrc(JSON/YAML)prettier.config.js/cjspackage.jsonс секцией"prettier".prettierrc.toml
Находит — и игнорирует VS Code. В логе ваши опции: tabWidth: 4, printWidth: 120, semi: false — это из локального файла. Чтобы проверить: откройте терминал в VS Code, npx prettier --find-config /home/sergey/www/icod-elysia/src/index.ts. Покажет путь к конфигу.
Хотите глобальные настройки? В settings.json добавьте "prettier.requireConfig": false — тогда Prettier пропустит локал и возьмет VS Code. Или укажите "prettier.configPath": "none". Но осторожно: команда может ругаться на несоответствия.
А если конфига нет? Тогда VS Code рулит. Но у вас он есть — вот почему «local configuration».
Что такое requirePragma и insertPragma в Prettier
Давайте разберем эти опции по полочкам. Согласно документации Prettier, "requirePragma": true — барьер: без /** @format */ в первых строках форматирование скипается. Лог покажет «завершено», но delta нулевой.
"insertPragma": true — помощник: при первом форматировании Prettier сам впихнет pragma в начало. Поэтому один ваш .ts файл «поумнел» и теперь форматируется.
Почему это нужно? В больших командах pragma — сигнал «ок, форматируй меня». Без него Prettier не трогает legacy‑код. В вашем случае для prettier typescript это убивает workflow.
Отключить просто: в .prettierrc поставьте "requirePragma": false, "insertPragma": false. Сохраните, перезапустите Prettier (Developer: Reload Window). Теперь vs code форматирование заработает везде.
Но если команда требует pragma — добавляйте вручную. Или скриптом: find src -name "*.ts" -exec sed -i '1i /** @format */' {} +.
Как добавить pragma-комментарий и принудительно форматировать
Быстрое решение для /home/sergey/www/icod-elysia/src/index.ts: откройте файл, вставьте в самую первую строку:
/** @format */
let a = 10;
Сохраните, Format Document (Shift+Alt+F). Бум — пробелы улетели. Почему? Pragma есть, prettier vs code доволен.
Для всех файлов разом: используйте команду Format Document (Forced) из палитры (Ctrl+Shift+P). Она игнорирует requirePragma и .prettierignore, как указано в репозитории prettier-vscode. Идеально для теста.
Автоматически? В settings.json:
{
"prettier.insertPragma": true,
"prettier.requirePragma": false
}
Но если локальный конфиг перебивает — сначала "prettier.requireConfig": false.
Проверили на пустом файле? Pragma спасет даже let a = 10; .
Пошаговая настройка Prettier в VS Code
Как настроить prettier vs code с нуля или пофиксить вашу проблему:
- Установите расширение esbenp.prettier-vscode (если нет).
- В settings.json (Ctrl+, → Open Settings JSON):
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.formatOnPaste": false,
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"prettier.requireConfig": false, // Игнор локала
"prettier.configPath": "none" // Или явно none
}
-
Удалите/отредактируйте
.prettierrc:"requirePragma": false. -
Перезагрузите: Ctrl+Shift+P → Developer: Reload Window.
-
Тест: создайте .ts, набросайте кривой код, Shift+Alt+F.
Если prettier скачать заново — через marketplace. Для npm: npm i -D prettier. Но расширение самодостаточно.
Теперь prettier vs code настройка вечна.
Горячие клавиши и команды для vs code форматирование кода
Горячая клавиша форматирования vs code — Shift+Alt+F (Format Document). Работает с Prettier по умолчанию.
Другие:
- Ctrl+Shift+P → Format Document (Forced) — обходит pragma.
- Ctrl+S с formatOnSave — авто на сохранении.
- Ctrl+Shift+P → Prettier: Format Selection — только выделенное.
Перенастройте: Ctrl+K Ctrl+S → search “format”. Назначьте на F2 или что угодно.
В логе “parser: typescript” — хорошо, Prettier угадал. Если нет — укажите explicitly в конфиге.
Shortcuts спасут от рутины.
Интеграция Prettier с ESLint и решение других проблем
Vs code eslint prettier — частая связка. ESLint лLintит, Prettier форматирует. Конфликт? Установите eslint-config-prettier и eslint-plugin-prettier.
В .eslintrc:
{
"extends": ["prettier"],
"plugins": ["prettier"],
"rules": { "prettier/prettier": "error" }
}
В VS Code: расширения ESLint + Prettier. settings.json:
"eslint.format.enable": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
Проблемы:
- .prettierignore блокирует? Forced format.
- Несовпадение опций?
"prettier.resolveGlobalModules": true. - Медленно? Кэш: Ctrl+Shift+P → Prettier: Clear Cache.
Для vs code eslint prettier — порядок: ESLint fix, потом Prettier.
Источники
- Prettier in VS Code does not format some of the files — Обсуждение проблемы с pragma в локальной конфигурации: https://stackoverflow.com/questions/79875813/prettier-in-vs-code-does-not-format-some-of-the-files
- prettier/prettier-vscode — Документация по расширению, forced format и приоритету конфигов: https://github.com/prettier/prettier-vscode
- Options — Описание requirePragma и insertPragma в Prettier: https://prettier.io/docs/options
- Configuration File — Порядок поиска локальных конфигураций Prettier: https://prettier.io/docs/configuration
Заключение
В итоге, vs code форматирование с prettier vs code ломается на requirePragma: true без pragma — добавьте /** @format */ или отключите в .prettierrc. Локал всегда босс, но "prettier.requireConfig": false вернет контроль VS Code. Настройте formatOnSave, hotkeys вроде Shift+Alt+F — и код всегда чистый. Для prettier typescript и команд — pragma must‑have. Тестируйте на index.ts, и проблема уйдет навсегда.
Проблема с vs code форматирование решается отключением комбинации "insertPragma": true и "requirePragma": true в локальной конфигурации Prettier. Эти опции заставляют prettier vs code форматировать только файлы с pragma вроде /** @format */ в начале. Без него форматирование “завершается успешно”, но ничего не меняет. После экспериментов автор добавил pragma вручную или отключил опции — и prettier vscode начал работать для всех .ts файлов. Локальная .prettierrc имеет приоритет над настройками VS Code.
В prettier vs code используйте команду Format Document (Forced), чтобы обойти requirePragma и игнорировать .prettierignore — это принудительно форматирует даже проблемные .ts файлы. Локальная конфигурация (.prettierrc) всегда переопределяет настройки VS Code: “Using local configuration (VS Code configuration will not be used)”. Установите prettier.requireConfig: false, чтобы игнорировать локальный конфиг, или укажите prettier.configPath. Для vs code форматирование кода на save настройте formatOnSave и esbenp prettier vscode.
В prettier typescript опция requirePragma: true блокирует vs code форматирование, если нет комментария /** @format */ или /** @prettier */ — Prettier завершает работу без изменений. insertPragma: true автоматически добавляет pragma при первом запуске prettier vs code. Локальная конфигурация (.prettierrc) имеет высший приоритет, игнорируя VS Code. Решение: отключите requirePragma или добавьте pragma вручную для всех .ts файлов в prettier vs code настройка.
Prettier vs code ищет локальные конфиги (.prettierrc, package.json) рекурсивно от файла вверх, игнорируя глобальные настройки VS Code. requirePragma: true требует pragma-комментарий для vs code форматирование — без него ничего не меняется в .ts файлах. Добавьте // @prettier или отключите опцию в конфиге. Это гарантирует консистентность prettier vscode в команде, но вызывает проблемы вроде описанных.


