WebStorm/PhpStorm: как заставить автоимпорт в TypeScript использовать одинарные кавычки вместо двойных?
Проверьте глобальные настройки Code Style
Проблема часто возникает из-за того, что настройки Code Style применяются не к тому уровню. В WebStorm/PhpStorm есть два места, где задаются правила для кавычек:
- Глобальные настройки (File → Settings → Editor → Code Style → TypeScript)
- Настройки проекта (File → Settings → Editor → Code Style → TypeScript — но для текущего проекта)
Убедитесь, что вы изменили настройки именно в разделе Default (глобальные), а не только для открытого проекта. Иногда проект может иметь свои переопределения, которые блокируют глобальные правила.
Правильный путь к настройке
Перейдите в File → Settings → Editor → Code Style → TypeScript. Найдите вкладку Punctuation (или "Кавычки" в русской версии). Убедитесь, что:
- В выпадающем списке Use single quotes always выбрано Single quotes.
- Опция Use double quotes for JSX attributes (если есть) должна быть отключена, если вы не хотите двойных кавычек в JSX.
После этого нажмите Apply и OK. Затем перезапустите IDE (File → Invalidate Caches and Restart).
Проверьте настройки ESLint/Prettier
Если в проекте используется ESLint с правилом quotes: ["error", "single"], WebStorm может игнорировать свои настройки в пользу ESLint. Чтобы это исправить:
- Установите плагин ESLint в IDE (обычно он уже есть).
- В настройках
File → Settings → Languages & Frameworks → JavaScript → Code Quality Tools → ESLintвключите Run eslint --fix on save. - Или добавьте в
.editorconfig(если используете) строку:quote_type = single.
Пример конфигурации .editorconfig
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
quote_type = single # Это заставит IDE использовать одинарные кавычки
Если ничего не помогает
Попробуйте удалить папку .idea в корне проекта (предварительно сохранив нужные настройки) и открыть проект заново. Иногда кеш настроек портится. Также проверьте, не задано ли в tsconfig.json каких-то странных опций, влияющих на форматирование (например, forceConsistentCasingInFileNames — не влияет, но на всякий случай).
После всех манипуляций автоимпорт должен начать использовать одинарные кавычки. Если нет — напишите в комментариях, будем разбираться дальше!
<<Альтернативное решение: скрипт для автоматической замены
Если настройки IDE упорно не работают, можно обойти проблему с помощью небольшого скрипта на Node.js. После каждого автоимпорта запускайте его вручную или через File Watchers в WebStorm.
Создайте файл fix-quotes.js в корне проекта:
const fs = require('fs');
const path = require('path');
function fixQuotes(dir) {
const files = fs.readdirSync(dir);
files.forEach(file => {
const fullPath = path.join(dir, file);
if (fs.statSync(fullPath).isDirectory() && file !== 'node_modules') {
fixQuotes(fullPath);
} else if (file.endsWith('.ts') || file.endsWith('.tsx')) {
let content = fs.readFileSync(fullPath, 'utf8');
// Заменяем двойные кавычки на одинарные в импортах
content = content.replace(/import\s+.*?from\s+"([^"]+)"/g, (match, p1) => {
return match.replace(`"${p1}"`, `'${p1}'`);
});
fs.writeFileSync(fullPath, content, 'utf8');
}
});
}
fixQuotes('./src'); // Укажите свою папку с исходниками
Затем добавьте этот скрипт в File Watchers (Settings → Tools → File Watchers) с триггером на изменение файлов .ts. Теперь при каждом сохранении файла кавычки будут автоматически исправляться. Это костыль, но он работает, пока вы не разобрались с настройками IDE.