Вы когда-нибудь обсуждали, как ваш код должен отображаться во время проверки кода? Где вводить новую строку, какой идеальный отступ? Вы когда-нибудь хотели сохранить эти настройки между разными редакторами кода? Вы когда-нибудь хотели, чтобы ваш код подвергался статической проверке почти мгновенно (при сохранении файла :-))?

Если да, то вы хотите использовать:

  • ESLint — инструмент для создания отчетов о шаблонах в JavaScript (стандарт ECMAScript в целом) для выявления потенциальных проблем и обеспечения большей согласованности кода во всех приложениях. Почти в каждом редакторе кода он уже подключен или предлагает расширение плагина.
  • Prettier — средство форматирования кода (удаляет первоначально написанный стиль кода и применяет единый стиль ко всем файлам вашего проекта), который поддерживает многие языки программирования (не только JS/TS). Почти в каждом редакторе кода он уже подключен или предлагает расширение плагина.

Оба инструмента полностью настраиваются, что означает, что вы можете изменять/настраивать правила для своего проекта/команды! Вы также можете использовать некоторые предустановленные настройки и обновлять их по ходу работы!

Как только вы настроите их, вам больше никогда не придется это обсуждать!

Кроме того, ознакомьтесь с этими инструментами разработки Angular.

Есть несколько способов добавить eslint и красивее в наш проект. Давайте просто сосредоточимся на автоматизированном. Сначала мы начнем с eslint.

Просто выполните приведенную ниже команду схемы в окне терминала с помощью Angular CLI, и ваша первоначальная настройка будет выполнена:

ng add @angular-eslint/schematics

Давайте теперь более подробно рассмотрим, что на самом деле было изменено в файлах нашего приложения. В файле angular.json в самом конце добавлена ​​коллекция схем:

{
  // ...some other properties
  "cli": {
    "schematicCollections": [
      "@angular-eslint/schematics"
    ]
  }
}

Теперь в нашем файле package.json есть новые зависимости от разработчиков и скрипт для выполнения проверки eslint:

{
  "scripts": {
    // ...some other scripts
    "lint": "ng lint", // added automatically
    "lint:fix": "ng lint --fix" // make sure to add manually this one to fix files on the fly
  }
    "devDependencies": {
      ...
      "@angular-eslint/builder": "16.0.3",
      "@angular-eslint/eslint-plugin": "16.0.3",
      "@angular-eslint/eslint-plugin-template": "16.0.3",
      "@angular-eslint/schematics": "16.0.3",
      "@angular-eslint/template-parser": "16.0.3",
      "@typescript-eslint/eslint-plugin": "5.59.7",
      "@typescript-eslint/parser": "5.59.7",
      "eslint": "^8.40.0",
      ...
  }
}

В наш репозиторий также добавлен новый файл .eslintrc.json, который содержит начальную конфигурацию, представленную ниже:

{
  "root": true,
  "ignorePatterns": [
    "projects/**/*"
  ],
  "overrides": [
    {
      "files": [
        "*.ts"
      ],
      "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/recommended",
        "plugin:@angular-eslint/recommended",
        "plugin:@angular-eslint/template/process-inline-templates"
      ],
      "rules": {
        "@angular-eslint/directive-selector": [
          "error",
          {
            "type": "attribute",
            "prefix": "app",
            "style": "camelCase"
          }
        ],
        "@angular-eslint/component-selector": [
          "error",
          {
            "type": "element",
            "prefix": "app",
            "style": "kebab-case"
          }
        ]
      }
    },
    {
      "files": [
        "*.html"
      ],
      "extends": [
        "plugin:@angular-eslint/template/recommended",
        "plugin:@angular-eslint/template/accessibility"
      ],
      "rules": {}
    }
  ]
}

Все эти файлы были созданы с помощью одной единственной команды. Если вы предпочитаете делать это вручную, просто скопируйте и вставьте файлы выше и установите свои зависимости. Вы получите такой же опыт.

Теперь давайте продолжим и настроим наши более красивые настройки. К сожалению, prettier еще не использует схемы Angular CLI. Поэтому нам нужно установить его вручную, выполнив команду ниже в вашем терминале:

npm install prettier --save-dev

Теперь нам нужно создать пару файлов в основной папке нашего проекта:

.prettierrc.json - // will contain formatter's configuration
.prettierignore - // list of files / folders excluded from code formatting

Пример (и наиболее популярный) более красивой конфигурации для использования:

{
  "tabWidth": 2,
  "useTabs": false,
  "singleQuote": true,
  "semi": true,
  "bracketSpacing": true,
  "arrowParens": "avoid",
  "trailingComma": "es5",
  "bracketSameLine": true,
  "printWidth": 80,
  "endOfLine": "auto"
}

В случае файла .prettierignore он должен содержать следующее (аналогично вашему .gitignore):

# See http://help.github.com/ignore-files/ for more about ignoring files.

# Compiled output
/dist
/tmp
/out-tsc
/bazel-out

# Node
/node_modules
npm-debug.log
yarn-error.log

# IDEs and editors
.idea/
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# Visual Studio Code
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*

# Miscellaneous
/.angular/cache
.sass-cache/
/connect.lock
/coverage
/libpeerconnection.log
testem.log
/typings

# System files
.DS_Store
Thumbs.db

Мы почти закончили! Осталось настроить еще одну вещь. Поскольку у нас есть два разных инструмента, работающих на одной и той же кодовой базе, нам нужно убедиться, что нет перекрывающихся правил, которые нарушат всю идею хорошей рабочей экосистемы.

npm install prettier-eslint eslint-config-prettier eslint-plugin-prettier --save-dev

Еще одна вещь, и мы готовы к работе! Давайте изменим нашу конфигурацию .eslintrc.json, чтобы включить более красивые плагины eslint:

{
  "root": true,
  "ignorePatterns": ["projects/**/*"],
  "overrides": [
    {
      "files": ["*.ts"],
      "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/recommended",
        "plugin:@angular-eslint/recommended",
        "plugin:@angular-eslint/template/process-inline-templates",
        "plugin:prettier/recommended"
      ],
      "rules": {
        "@angular-eslint/directive-selector": [
          "error",
          {
            "type": "attribute",
            "prefix": "app",
            "style": "camelCase"
          }
        ],
        "@angular-eslint/component-selector": [
          "error",
          {
            "type": "element",
            "prefix": "app",
            "style": "kebab-case"
          }
        ]
      }
    },
    {
      "files": ["*.html"],
      "excludedFiles": ["*inline-template-*.component.html"],
      "extends": [
        "plugin:@angular-eslint/template/recommended",
        "plugin:@angular-eslint/template/accessibility",
        "plugin:prettier/recommended"
      ],
      "rules": {
        "prettier/prettier": [
          "error",
          {
            "parser": "angular"
          }
        ]
      }
    }
  ]
}

Я предлагаю добавить дополнительный скрипт в ваш файл package.json, чтобы вы могли запускать более красивое форматирование через командную строку либо локально, либо в хуках перед фиксацией с хаски!

{
// ...
"scripts": {
  // ...
    "prettier": "npx prettier --write ."
  }
}

И только бы не забыть! Если вы хотите настроить параметры WebStorm, чтобы ваша конфигурация eslint/prettier поддерживала вас при каждом сохранении файла, просто перейдите по ссылке:

settings > languages & frameworks > javascript > code quality tools > eslint

и убедитесь, что ваша конфигурация IDE выглядит так, как показано на скриншоте ниже:

Тогда давайте найдем более красивые настройки IDE:

settings > languages & frameworks > javascript > prettier

В WebStorm красивее включено по умолчанию. поэтому, если вы используете другую IDE от JetBrains (IntelliJ IDEA, PyCharm и т. д.), вам может потребоваться сначала установить плагин!

И повторите скриншот ниже:

Вуаля! Мы сделали это! Теперь мы можем приступить к кодированию!

Как я упоминал в начале статьи, плагины eslint/prettier также доступны для различных редакторов кода, таких как: Atom, Emacs, Sublime, Vim, VS Code и Visual Studio.

Создавайте приложения Angular с повторно используемыми компонентами, как Lego.

Инструмент с открытым исходным кодом Bit помогает более чем 250 000 разработчиков создавать приложения с компонентами.

Превратите любой пользовательский интерфейс, функцию или страницу в компонент многократного использования — и поделитесь им со своими приложениями. Легче сотрудничать и строить быстрее.



Подробнее

Разделите приложения на компоненты, чтобы упростить разработку приложений, и наслаждайтесь наилучшими возможностями для рабочих процессов, которые вы хотите:

Микро-интерфейсы

Система дизайна

Совместное использование кода и повторное использование

Монорепо

Узнать больше: