Переопределение угловой схемы

AngularInDepth уходит от Medium. Более свежие статьи размещаются на новой платформе inDepth.dev. Спасибо за то, что участвуете в глубоком движении!

В этом сообщении блога мы узнаем, как можно переопределить некоторые параметры по умолчанию в Angular Schematics.

Вступление

На прошлой неделе я работал над библиотекой Angular, и во всех компонентах мы хотели установить инкапсуляцию на None и изменитьDetection на OnPush. Мы также хотели добавить в экспорт все компоненты и директивы, чтобы их можно было использовать в других модулях.

Мы поняли, что добавление вручную для каждого компонента и модуля будет пустой тратой усилий.

Решение

Чтобы избежать этого, используйте angular.json, и теперь вы должны быть похожи на Джоуи, и он хочет увидеть решение.

И не только для компонентов, мы можем переопределить параметры схемы из директив, классов, служб и многого другого. Чувствую себя нижестоящим парнем.

Мы приближаемся, просто подождите, мы все это сделаем без написания кода.

Переопределение параметров схемы

Каждый разработчик знает о angular.json, и большую часть времени мы продолжаем использовать предоставленные по умолчанию параметры и не пытаемся понять, что еще он может предложить.

Итак, давайте посмотрим на параметры, предоставляемые angular.json создать одно приложение Angular с помощью CLI.

Вот как выглядит ваш angular.json.

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "bulma-app": {
      "projectType": "application",
      "schematics": {
        
      },
      "root": "projects/bulma-app",
      "sourceRoot": "projects/bulma-app/src",
      "prefix": "app",
      "architect": {
        
      }
    }
  },
  "defaultProject": "bulma-app"
}

И интересующий нас вариант - schematics. Это открывает для нас много возможностей.

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

  • @ schematics / angular: компонент
  • @ schematics / angular: класс
  • @ schematics / angular: директива
  • @ schematics / angular: модуль
  • @ schematics / angular: pipe
  • @ schematics / angular: сервис

Мы возьмем пример @schematics/angular:component в вашем проекте и ниже json.

"@schematics/angular:component": {
  "changeDetection": "OnPush",
  "inlineTemplate": true,
  "viewEncapsulation": "None"
}

Следующим шагом является выполнение приведенной ниже команды для создания компонента.

ng generate component home

И обратите внимание на отличие от ранее созданного компонента: у вас не будет .html файла и вам будут доступны свойства changeDetection и viewEncapsulation.

Заключение

Мы не охватываем все объекты недвижимости, так как это будет для вас, чтобы изучить и использовать наиболее подходящие варианты для вашего проекта. Схема действительно мощная, и это то, что управляет различными командами в Angular CLI, такими как создание компонента, создание службы, но вам могут не понадобиться параметры по умолчанию и может потребоваться переопределить некоторые свойства схемы, используя эти параметры, не нужно вносить изменения вручную. Идите вперед, автоматизируйте и определите лучшие варианты для вашего проекта.