Угловая (7) удлиняющая схема - PullRequest
0 голосов
/ 23 октября 2018

У меня есть несколько компонентов, для которых я написал несколько схем для установки этих компонентов.Для удобства поддержки мои схемы находятся в отдельном пакете.

После слияния моих схем из Angular6 в Angular7 мои схемы не могут быть найдены.

Итак, в моем "package.json" моего компонента:

{
  "name": "@my-project/my-component",
  "version": "4.0.0",
  "dependencies": {
    "@my-project/schematics": "^2.0.0",
    "tslib": "^1.9.0"
  },
  "peerDependencies": {
    "@angular/common": "^7.0.0",
    "@angular/core": "^7.0.0"
  },
  "schematics": "./schematics/collection.json",
}

In "./scmatics/collection.json":

{
  "$schema": "./node_modules/@angular-devkit/schematics/collection-schema.json",
  "schematics": {
    "ng-add": {
      "extends" : "@my-project/schematics:my-component-install"
    }
  }
}

"collection.json" из @ my-project / schematics:

{
  "$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
  "schematics": {
      "my-component-install": {
      "description": "Schematics for installation of @my-project/my-component",
      "schema": "./my-component/install/schema.json",
      "factory": "./my-component/install/index"
    }
  }
}

Поэтому при выполнении «ng add @ my-project / my-component» я получаю сообщение: «Схема« my-component-install »не найдена в коллекции» @мой-проект / мой-comonent».Однако в Angular6 это сработало.

Может кто-нибудь сказать мне, как это исправить?

1 Ответ

0 голосов
/ 21 декабря 2018

Я немного запутался с вашей структурой, но я сделаю все возможное - так что если у вас есть схемы, скажем, «мои схемы», и в качестве схемы у них есть «ng-add».«my-schematics» расширяет угловые схемы, поэтому она может делать все, что могут делать угловые схемы, но с дополнительной логикой.Вот как будет выглядеть collection.json для my-schematics -

{
    “$schema”:.....
    “extends”: [
        “@schematics/angular”
    ],
    “schematics”: {
        “ng-add”: { 
            “description”:.., “factory”:..., “schema”:...
         }
     }
}

Теперь в вашем проекте вы можете назвать my-schematics: ng-add (а также my-schematics: component или любой другойдругая угловая схематическая функция)

...