@starterlib/cli 0.10.6 → 0.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starterlib/cli",
3
- "version": "0.10.6",
3
+ "version": "0.10.8",
4
4
  "description": "Chaine de verification et de construction des SPA du socle frontal starter : starter-web verify, construire, sprite, manifeste, precompresser. Jamais en dependance de production.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -11,6 +11,8 @@
11
11
  * start`, rien n'est expose de plus : le livrable ne porte jamais l'hote.
12
12
  */
13
13
  import { spawnSync } from 'node:child_process';
14
+ import { existsSync } from 'node:fs';
15
+ import { join } from 'node:path';
14
16
  import { relatif } from '../commun.mjs';
15
17
  import { ecrireLesSimulations } from './simulations.mjs';
16
18
  import { poserLeSprite } from './sprite.mjs';
@@ -18,6 +20,26 @@ import { poserLeSprite } from './sprite.mjs';
18
20
  /** Le nom de la variable ; le meme que celui de `@starterlib/core/federation` (essai du CLI). */
19
21
  export const VARIABLE_DE_L_HOTE_DE_DEVELOPPEMENT = 'STARTER_WEB_HOTE_DEV';
20
22
 
23
+ /**
24
+ * `ng serve` tel que `starter-web start` le lance (0.10.7) : le CLI d'Angular du projet, par Node,
25
+ * sans `pnpm exec` ni shell.
26
+ *
27
+ * ⚠️ Pourquoi pas `pnpm exec ng serve` : pnpm lance la commande dans un groupe de processus a lui.
28
+ * Qui arrete le groupe de `starter-web start` (Playwright, a la fin des essais de l'hote de
29
+ * developpement) laissait alors `ng serve` vivre, ses tubes ouverts, et l'essai attendait sans fin.
30
+ * Lance par Node, `ng serve` reste dans le groupe de `starter-web start`, et part avec lui.
31
+ */
32
+ export function commandeDeNgServe(racine, port) {
33
+ return {
34
+ commande: process.execPath,
35
+ arguments: [
36
+ join(racine, 'node_modules', '@angular', 'cli', 'bin', 'ng.js'),
37
+ 'serve',
38
+ ...(port === undefined ? [] : ['--port', String(port)]),
39
+ ],
40
+ };
41
+ }
42
+
21
43
  /** Lance l'hote de developpement ; rend le code de sortie de `ng serve`. */
22
44
  export async function demarrer(projet, { port, journal = console } = {}) {
23
45
  journal.info(` sprite : ${poserLeSprite(projet)}`);
@@ -34,16 +56,18 @@ export async function demarrer(projet, { port, journal = console } = {}) {
34
56
  );
35
57
  }
36
58
  }
37
- const resultat = spawnSync(
38
- 'pnpm',
39
- ['exec', 'ng', 'serve', ...(port === undefined ? [] : ['--port', port])],
40
- {
41
- cwd: projet.racine,
42
- stdio: 'inherit',
43
- shell: process.platform === 'win32',
44
- env: { ...process.env, [VARIABLE_DE_L_HOTE_DE_DEVELOPPEMENT]: '1' },
45
- },
46
- );
59
+ const ngServe = commandeDeNgServe(projet.racine, port);
60
+ if (!existsSync(ngServe.arguments[0])) {
61
+ journal.erreur(
62
+ ` ng serve : ${relatif(projet.racine, ngServe.arguments[0])} introuvable ; installer la SPA (pnpm install).`,
63
+ );
64
+ return 1;
65
+ }
66
+ const resultat = spawnSync(ngServe.commande, ngServe.arguments, {
67
+ cwd: projet.racine,
68
+ stdio: 'inherit',
69
+ env: { ...process.env, [VARIABLE_DE_L_HOTE_DE_DEVELOPPEMENT]: '1' },
70
+ });
47
71
  if (resultat.error !== undefined) {
48
72
  journal.erreur(` ng serve : ${resultat.error.message}`);
49
73
  return 1;