externalSchematic executes schematics from migration.json instead of collection.json

Abierto
#21,131 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
angular, typescript
Área
tooling

Línea de trabajo

Comienza con SchematicEngine.createCollection y la llamada a externalSchematic descrita en el informe; luego sigue cómo se cargan y se almacenan en caché collection.json y migration.json con el mismo nombre de paquete. Reproduce el escenario de ngx-my-lib y verifica que externalSchematic resuelva el schematic desde collection.json en lugar de migration.json.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area: @angular-devkit/schematics freq1: low severity3: broken type: bug/fix

🐞 Bug report

Command
  • new
  • build
  • serve
  • test
  • e2e
  • generate
  • add
  • update
  • lint
  • extract-i18n
  • run
  • config
  • help
  • version
  • doc
Is this a regression?
No
Description

The function externalSchematic from @angular-devkit/schematics does not call the schematic from the collection.json but instead from the migration.json If the collection (package) name is the same as the current package that is migrated.

🔬 Minimal Reproduction

  1. The package ngx-my-lib has the schematic config defined in the collection.json
  2. Create a migration schematic for the package ngx-my-lib.
  3. Call the externalSchematic function with externalSchematic('ngx-my-lib', 'config') in the migration schematic.
  4. Execute the migration schematic

🔥 Exception or Error

Schematic "config" not found in collection "ngx-my-lib"

🌍 Your Environment


Angular CLI: 12.0.3
Node: 14.16.1
Package Manager: yarn 1.22.10
OS: linux x64

Angular: undefined
... 

Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.1200.3
@angular-devkit/core         12.0.3
@angular-devkit/schematics   12.0.3
@angular/cli                 12.0.3
@schematics/angular          12.0.3
typescript                   4.2.4

Anything else relevant?

I could track down this error to the createCollection method in the class SchematicEngine. Invoking the externalSchematic the Collection instance for the migration.json is cached with the key ngx-my-lib. So the external schematic execution does not load the collection for the collection.json, but for the migration.json.

Lenguaje dominante
TypeScript
Estrellas
27k
Forks
11.8k
Merge medio
16 h 35 min
PR fusionados (30 d)
176

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de angular/angular-cli

Todos los issues de angular/angular-cli

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.