The `ANGULARFIRE2_VERSION` build placeholder ships unreplaced in the library, and `versions.json` never reaches the compiled schematics
- Lenguaje dominante
- TypeScript
- Estrellas
- 7.8k
- Forks
- 2.2k
- Merge medio
- 22 h 28 min
- PR fusionados (30 d)
- 6
Descripción
### Version info
**Angular:** 21.2.x **Firebase:** 12.x **AngularFire:** 21.0.0-rc.0
### How to reproduce these conditions
1. `npm pack @angular/fire@next` and inspect `fesm2022/angular-fire.mjs` — search for `ANGULARFIRE2_VERSION`.
2. Or in an app: `import { VERSION } from '@angular/fire'; console.log(VERSION.full);`
### Expected behavior
`VERSION.full` (and the underlying `Version` object in `src/core.ts`) should report the real installed version, e.g. `21.0.0-rc.0`.
### Actual behavior
`VERSION` is constructed as `new Version('ANGULARFIRE2_VERSION')` - the build-time placeholder that's supposed to be replaced with the real version before publishing, but isn't for this occurrence. The published package ships the literal string.
A related mechanism is also broken: `src/schematics/versions.json`'s `peerDependencies`/`firebaseFunctionsDependencies` data is filled in by `tools/build.ts` *after* the schematics are bundled with esbuild, which has already inlined the JSON import from the unfilled source file at compile time.
- The post-build edit to `versions.json` on disk is never read by the shipped schematic code.
- One concrete effect: `addDependencies()` in `src/schematics/common.ts` never has real version data to check against, so it can't detect or warn about conflicting dependency versions the way it appears designed to.
Will need a decision on one of these approaches:
- string-replace with a build-time guard, matching what PR #3709/#3711 just did for the schematics' own version placeholder, or
- reworking the `versions.json` inlining - the fix touches `tools/build.ts` and possibly `src/core.ts`, so I wanted to flag it and get a read before picking a direction.
Guía de contribución
Línea de trabajo
Comienza con src/core.ts y tools/build.ts, luego inspecciona src/schematics/versions.json y addDependencies() en src/schematics/common.ts. Compara el manejo de los marcadores de posición durante la compilación en los PRs #3709 y #3711 y sigue cuándo se incluye el JSON en el paquete. Se considera terminado cuando la VERSION publicada informa de la versión instalada y los schematics distribuidos contienen datos utilizables de las versiones de las dependencias.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- angular, firebase, typescript
- Área
- build-system, release, tooling
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 52/100