2. Создание и настройка проекта
2.1. Установка зависимостей
Linters
Мы будем использовать линтеры от команды IT-Incubator:
pnpm i @it-incubator/eslint-config @it-incubator/prettier-config @it-incubator/stylelint-config stylelint -D
SASS
Мы будем использовать SASS в качестве препроцессора стилей:
pnpm i sass -D
2.2. Конфигурация Alias'ов
Конфигурация Vite
В файле vite.config.ts добавьте следующий код:
import * as path from 'path'
export default defineConfig({
plugins: [react()],
resolve: {
alias: [{ find: '@', replacement: path.resolve(__dirname, 'src') }],
},
})
Установим типы для nodejs что бы не было ошибок в vite.config.ts
pnpm i @types/node -D
Конфигурация TypeScript
{
"compilerOptions": {
// ...rest of the template
"types": ["node"],
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src"],
"references": [{ "path": "./tsconfig.node.json" }]
}
Использование
Теперь вы можете использовать алиасы везде в проекте:
import { App } from '@/App'
2.3. Конфигурация линтеров
Prettier
Создайте файл .prettierrc.cjs в корне проекта и скопируйте туда следующее содержимое:
module.exports = {
...require('@it-incubator/prettier-config'),
//override settings here
}
ESLint
Замените содержимое файла .eslintrc.cjs на следующее:
module.exports = {
extends: '@it-incubator/eslint-config',
rules: { 'no-console': ['warn', { allow: ['warn', 'error'] }] },
}
Stylelint
Создайте файл .stylelintrc.cjs в корне проекта и скопируйте туда следующее содержимое:
module.exports = {
extends: '@it-incubator/stylelint-config',
}
2.4. Конфигурация WebStorm
Включить ESLint
Включить Prettier
{**/*,*}.{js,ts,jsx,tsx,vue,astro,cjs,mjs,css,scss}
Включить stylelint
Включить автоматическое исправление ошибок при сохранении .css/.scss файлов
Скачайте файл watchers.xml и импортируйте его в Settings | Tools | File Watchers
После импорта получим следующее:
Добавить скрипты в package.json, перезаписывая значения по умолчанию при необходимости
{
"scripts": {
"format": "prettier --write src",
"lint": "eslint --fix src/**/*.{tsx,ts,jsx,js} --no-error-on-unmatched-pattern && stylelint --fix src/{,*/}*.{scss,css} --allow-empty-input"
}
}
Убрать boilerplate
- Удалить файл App.css
- Удалить папку assets
- Заменить содержимое файла App.tsx на следующее:
export function App() {
return <div>Hello</div>
}
Запустить линтеры
- Prettier
pnpm run format
- Eslint и Stylelint
pnpm run lint
Некоторые ошибки eslint не исправляются автоматически, поэтому вам придется сделать это самостоятельно, например:
Постарайтесь разобраться сами, если не получится - замените содержимое файла main.tsx на следующее:
import './index.css'
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { App } from './App.tsx'
createRoot(document.getElementById('root') as HTMLElement).render(
<StrictMode>
<App />
</StrictMode>
)
Наш eslint конфиг использует плагин import/order, который требует, чтобы ваши файлы css/scss были размещены либо первыми, либо последними в импортах (см. пример выше), иначе вы получите неразрешимые ошибки.