Skip to content

Команда vp lint

vp lint выполняет линтинг кода с помощью Oxlint.

Обзор

vp lint основан на Oxlint — линтере из экосистемы Oxc. Oxlint разработан как быстрая замена ESLint для большинства фронтенд-проектов и включает встроенную поддержку основных правил ESLint, а также множества популярных правил сообщества.

Используйте vp lint для линтинга проекта, а vp check — для одновременного форматирования, линтинга и проверки типов.

Использование

bash
vp lint
vp lint --fix
vp lint --type-aware

Конфигурация

Размещайте конфигурацию линтинга непосредственно в блоке lint корневого vite.config.ts, чтобы вся конфигурация оставалась в одном месте. Мы не рекомендуем использовать oxlint.config.ts или .oxlintrc.json с Vite+.

В настоящее время Vite+ не поддерживает вложенную конфигурацию линтинга. Пока используйте lint.overrides в корневом vite.config.ts для правил, специфичных для файлов или пакетов. Дальнейшее развитие этой функциональности ещё обсуждается; поделитесь своим сценарием использования и ожиданиями, чтобы помочь определить направление её развития.

Подробную информацию о наборе правил, параметрах настройки и совместимости см. в документации Oxlint.

vite.config.ts
ts
import { defineConfig } from 'vite-plus';

export default defineConfig({
  lint: {
    ignorePatterns: ['dist/**'],
    options: {
      typeAware: true,
      typeCheck: true,
    },
  },
});

Линтинг с учётом типов

Мы рекомендуем включать одновременно typeAware и typeCheck в блоке lint:

  • typeAware: true включает правила, которым требуется информация о типах TypeScript
  • typeCheck: true включает полноценную проверку типов во время линтинга

Этот механизм работает на базе tsgolint, использующего инструментарий TypeScript 7 (также известный как TypeScript Go). Он предоставляет Oxlint доступ к информации о типах и позволяет выполнять проверку типов непосредственно с помощью vp lint и vp check.

JS-плагины

Если вы переходите с ESLint и всё ещё зависите от нескольких важных ESLint-плагинов на JavaScript, Oxlint предоставляет поддержку JS-плагинов, которая поможет сохранить их работоспособность на время завершения миграции.

JS-плагины также позволяют писать собственные правила для Oxlint.

Написание собственных правил

Импортируйте API для создания плагинов из vite-plus/lint/plugins:

lint/my-plugin.js
js
import { definePlugin, defineRule } from 'vite-plus/lint/plugins';

const noFoo = defineRule({
  meta: { messages: { noFoo: 'Do not name things "foo".' } },
  create(context) {
    return {
      Identifier(node) {
        if (node.name === 'foo') {
          context.report({ node, messageId: 'noFoo' });
        }
      },
    };
  },
});

export default definePlugin({
  meta: { name: 'my' },
  rules: { 'no-foo': noFoo },
});

Зарегистрируйте его в lint.jsPlugins и включите его правила:

vite.config.ts
ts
import { defineConfig } from 'vite-plus';

export default defineConfig({
  lint: {
    jsPlugins: ['./lint/my-plugin.js'],
    rules: {
      'my/no-foo': 'error',
    },
  },
});

Для тестирования правил RuleTester доступен из vite-plus/lint/plugins-dev.

Обе точки входа повторно экспортируют копию, поставляемую вместе с Vite+. Поэтому API всегда соответствует встроенному в Vite+ Oxlint.

Используйте их вместо добавления @oxlint/plugins или oxlint в качестве прямой зависимости. Отдельно закреплённая версия может рассинхронизироваться с линтером, который загружает ваш плагин. Кроме того, она не будет разрешаться из файла плагина при строгой структуре pnpm, если каждый пакет, содержащий плагин, не объявляет её в зависимостях.

vp migrate автоматически переписывает существующие импорты oxlint и @oxlint/plugins. См. Импорты JS-плагинов Oxlint.

Правило vite-plus/prefer-vite-plus-imports сообщает о любых импортах, которые появились снова.