Changelog находится в конце статьи. Последнее обновление - 13 июля 2025.
Собрала все файлы в репозиторий: https://github.com/teinett/astro-dot-files/
Настраиваем Visual Studio Code для работы с AstroJS
Устанавливаем плагины VS Code:
официальный Astro для распознавания файлов .astro;
Создаем проект
AstroJS 5.x работает на Node 18.20.8 и старше. Я уже везде использую Node 22.
1. Устанавливаем AstroJS
npm create astro@latest
После установки проверяем - запускаем локально:
npm run dev
Если проект запустился, то можем его посмотреть в браузере: http://localhost:4321.
Останавливаем проект: CTRL + C.
2. Отключаем телеметрию
npm run astro telemetry disable
Настраиваем проект
1. Настраиваем Typescript - добавляем пути для файлов
Начиная с AstroJS 4.x поддерживает Typescript 5.х.
Редактируем файл tsconfig.json:
{ "extends": "astro/tsconfigs/strict", "include": [".astro/types.d.ts", "**/*"], "exclude": ["dist"], "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./src/*"] } } }
2. Настраиваем EditorConfig
Создаем в корне проекта файл .editorconfig:
root = true [*] indent_style = space indent_size = 4 end_of_line = lf trim_trailing_whitespace = true insert_final_newline = true charset = utf-8 [{*.json,*.yml}] indent_size = 2 [*.yaml] indent_style = space [*.md] trim_trailing_whitespace = false
Настраиваем автоматическую проверку на соблюдение правил редактора.
Внимание! Может не работать при каких-то особых настройках окружения: начинает проверять файлы в папке
node_modules. Если вы с таким сталкиваетесь, пропускайте этот шаг.
Устанавливаем линтер:
npm install --save-dev editorconfig-checker
Добавляем в файл package.json команду для проверки EditorConfig:
… "scripts": { … "lint:editorconfig": "editorconfig-checker --exclude node_modules", … }, …
Проверяем, работает ли:
npm run lint:editorconfig
3. Настраиваем версию node
Вариант 1. Создаем в корне проекта файл .nvmrc:
22
Вариант 2. В файл package.json добавляем код:
… "engines": { "node": "22" }, …
4. Настраиваем Browserlist
Создаем в корне проекта файл .browserlistrc:
defaults last 2 version not dead
5. Добавляем проверку типов от AstroJS
Добавляем в файл package.json команду для линтера:
… "scripts": { … "check": "astro check", … }, …
Проверяем работу линтера:
npm run check
6. Добавляем Prettier для AstroJS и Tailwind CSS
npm install --save-dev prettier prettier-plugin-astro
Создаем в корне проекта файл .prettierignore - исключаем форматирование указанных файлов и папок:
# Ignore artifacts: dist .astro # Standard **/.git **/.svn **/.hg **/node_modules # lockfiles pnpm-lock.yaml yarn.lock package-lock.json
Создаем в корне проекта файл .prettierrc.mjs с настройками для Prettier:
/** @type {import("prettier").Config} */ export default { plugins: ["prettier-plugin-astro"], overrides: [ { files: "*.astro", options: { parser: "astro", }, }, ], };
7. Добавляем ESLint - линтер для JavaScript и JSX
npm install --save-dev eslint eslint-plugin-astro eslint-plugin-prettier eslint-plugin-jsx-a11y @eslint/js globals typescript-eslint
Создаем в корне проект файл eslint.config.mjs:
import { defineConfig } from "eslint/config"; import globals from "globals"; import js from "@eslint/js"; import tseslint from "typescript-eslint"; import astro from "eslint-plugin-astro"; import prettier from "eslint-plugin-prettier"; // parsers const tsParser = tseslint.parser; const astroParser = astro.parser; export default defineConfig([ // Global configuration { languageOptions: { globals: { ...globals.browser, ...globals.node, }, }, }, // Base configs js.configs.recommended, tseslint.configs.recommended, // Prettier config { plugins: { prettier: prettier, }, rules: { // disable warnings, since prettier should format on save "prettier/prettier": "off", }, }, // astro setup with a11y astro.configs.recommended, astro.configs["jsx-a11y-recommended"], { files: ["**/*.astro"], languageOptions: { parser: astroParser, parserOptions: { parser: tsParser, extraFileExtensions: [".astro"], sourceType: "module", ecmaVersion: "latest", project: "./tsconfig.json", }, }, rules: { "no-undef": "off", // Disable "not defined" errors for specific Astro types that are globally available (ImageMetadata) "@typescript-eslint/no-explicit-any": "off", // you may want this as it can get annoying }, }, // Ignore patterns { ignores: ["dist/**", "**/*.d.ts", ".github/"], }, ]);
Добавляем в файл package.json команду для линтера:
… "scripts": { … "lint:js": "eslint \"src/**/*.{js,ts,astro}\" --fix || true", … }, …
У меня сейчас в проекте нет файлов *.js, поэтому линтер выпадает с ошибкой. Чтобы работа линтер завершилась корректно даже в этом случае, добавлено || true в конец команды проверки.
Проверяем работу линтера:
npm run lint:js
8. Добавляем Stylelint - линтер для CSS
Устанавливаем Stylelint и его конфиги:
npm install --save-dev stylelint stylelint-config-html stylelint-config-standard postcss-html
Дополнительно можно установить плагин stylelint-order для упорядочивания селекторов:
npm install --save-dev stylelint-order
Пример, зачем это нужно из статьи Яндекса 2014 года с описанием их инструмента. Сейчас задача решается плагином.
Используем конфиг stylelint-config-html - он позволяет парсить файлы HTML, XML, Vue, Svelte, Astro.
Создаем в корне проекта файл .stylelintrc.yml:
extends: - stylelint-config-standard - stylelint-config-html plugins: - stylelint-order rules: order/properties-order: …
Пример правил для упорядочивания селекторов: Pepelsbey.dev
Добавляем в файл package.json команду для линтера c автоисправлением ошибок, где это возможно:
… "scripts": { … "lint:css": "stylelint \"src/**/*.{css,astro}\" --fix", … }, …
Проверяем работу линтера:
npm run lint:css
9. Настройка VSCode для ESlint, Stylelint и Prettier
В корне проекта создаем папку .vscode и файлы:
.vscode/extensions.json- возможно, уже создан автоматически:
{ "recommendations": ["astro-build.astro-vscode"], "unwantedRecommendations": [] }
.vscode/launch.json- возможно, уже создан автоматически:
{ "version": "0.2.0", "configurations": [ { "command": "./node_modules/.bin/astro dev", "name": "Development server", "request": "launch", "type": "node-terminal" } ] }
.vscode/settings.json:
{ "eslint.validate": [ "javascript", "javascriptreact", "astro", // Enable .astro "typescript", // Enable .ts "typescriptreact" // Enable .tsx ], "stylelint.validate": [ "css", // ↓ Add "html" language. "html", // ↓ Add "vue" language. "vue", // ↓ Add "svelte" language. "svelte", // ↓ Add "astro" language. "astro" ], "prettier.documentSelectors": ["**/*.astro"], "[astro]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } }
10. Настройка общей команды тестов для ESlint и Stylelint
Добавляем в файл package.json команду для проверки всеми линтерами:
… "scripts": { … "test": "npm run lint:css && npm run lint:js && npm run check", … }, …
Если запускается editorconfig-checker, то общая команда для тестов:
… "scripts": { … "test": "npm run lint:editorconfig && npm run lint:css && npm run lint:js && npm run check", … }, …
Проверяем команду:
npm run test
11. Настройка PostCSS
AstroJS основан на Vite, и PostCSS уже включен по умолчанию.
Мы уже создали конфиг Browserlist - этот конфиг будет использовать PostCSS для понимания поддерживаемых браузеров.
Установим плагины:
Autoprefixer
PostCSS Preset Env
CSSnano
npm install --save-dev autoprefixer postcss-preset-env cssnano
Создадим конфиг для PostCSS - файл postcss.config.js в корне сайта:
import autoprefixer from 'autoprefixer'; import postcssPresetEnv from 'postcss-preset-env'; import cssnano from 'cssnano'; const settings = { plugins: [ autoprefixer(), postcssPresetEnv({ stage: 1 }), cssnano({ preset: 'default' }), ], }; export default settings;
12. Удаляем неиспользованные стили
Пакет: astro-purgecss
Он сработает на этапе build процесса.
Устанавливаем пакет:
npx astro add astro-purgecss
Настройки в astro.config.mjs:
import { defineConfig } from "astro/config"; import purgecss from "astro-purgecss"; export default defineConfig({ // ... integrations: [ purgecss({ variables: true, // for Astro view transitions keyframes: false, // for Astro view transitions safelist: { greedy: [ /*astro*/ ], }, // for SSR content: [ process.cwd() + "/src/**/*.{astro,vue,jsx,tsx,css}", // Watching astro and vue sources ], }), ... ], });
13. Минификация файлов
Минифицируем сгенерированные во время build процесса файлы.
Установим пакет astro-compress:
npm install --save-dev @playform/compress.
Добавим конфигурацию в файл astro.config.mjs:
import { defineConfig } from "astro/config"; import Compress from "@playform/compress"; export default defineConfig({ integrations: [ ... Compress({ // CSS: false, // HTML: false, Image: false, // JavaScript: false, SVG: false, }), // should be last in the list ], });
NOTE! Compress() должен идти последним в списке всех интеграций.
В настройках Compress() можно указать, какие типы файлов не минифицировать (выключить работу плагинов по минификации полностью). В коде выше я буду минифицировать CSS, HTML и JS, а картинки трогать не буду.
Заключение
Мы подготовили проект AstroJS к активной разработке.
Если планируется работа с git-репозиторием, то рекомендую добавить husky и инструкции для тестирования перед заливкой кода в git.
Структура проекта:
/ ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── node_modules/ │ └── папки и файлы ├── public/ │ └── папки и файлы ├── src/ │ └── папки и файлы ├── .browserlistrc ├── .editorconfig ├── .gitignore ├── .nvmrc ├── .prettierignore ├── .prettierrc.mjs ├── .stylelintrc.yml ├── astro.config.mjs ├── eslint.config.mjs ├── package-lock.json ├── package.json ├── postcss.config.js ├── README.md └── tsconfig.json
Changelog статьи
UPDATE 13 июля 2025. Обновление команд с актуальными пакетами.
UPDATE 26 октября 2024. Обновила инфу про eslint в связи с выходом новой мажорной версии. Удалила всё про TailwindCSS, т.к. инструкция уже нерабочая.
UPDATE 21 апреля 2024. Добавила пакет
astro-purgecssдля удаления неиспользованных стилей.
UPDATE 18 апреля 2024. Пакет
astro-compressстал@playform/compress
UPDATE 27 декабря 2023. Исправила settings.json для vscode: теперь он работает с Prettier для .astro файлов корректно.
UPDATE 17 декабря 2023. Добавила инфу про минификацию файлов html, js, css.
UPDATE 14 ноября 2023. Добавлен конфиг Stylelint для TailwindCSS.
UPDATE 1 сентября 2023. Обновлено для AstroJS 3.x.
UPDATE 21 августа 2023. Исправлен конфиг для Prettier, команда для запуска Stylelint (ранее проверяла все папки, а не только src), добавлена инфа про PostCSS
