@fraza/start 0.3.5 → 0.3.7
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/CHANGELOG.md +12 -0
- package/README.md +7 -2
- package/bin/cli.js +1 -0
- package/bin/project.js +30 -8
- package/bin/version.js +1 -1
- package/changelog.json +36 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ Historique des versions publiées de `@fraza/start`.
|
|
|
4
4
|
|
|
5
5
|
Ce fichier est généré par `fraza-module changelog` à partir des messages de commit. Ne pas le modifier à la main.
|
|
6
6
|
|
|
7
|
+
## 0.3.7 (2026-10-25)
|
|
8
|
+
|
|
9
|
+
### Refontes
|
|
10
|
+
|
|
11
|
+
- **bin/project.js** : update Next version and env file generation (544646f)
|
|
12
|
+
|
|
13
|
+
## 0.3.6 (2026-10-25)
|
|
14
|
+
|
|
15
|
+
### Documentation
|
|
16
|
+
|
|
17
|
+
- add command to start project (5edd2f6)
|
|
18
|
+
|
|
7
19
|
## 0.3.5 (2026-10-25)
|
|
8
20
|
|
|
9
21
|
### Ajouts
|
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Le CLI crée un projet Next.js avec `@fraza/core` déjà branché : administration, comptes, site public et variables d'environnement prêtes à remplir.
|
|
4
4
|
|
|
5
|
+
```sh
|
|
6
|
+
npx @fraza/start
|
|
7
|
+
```
|
|
8
|
+
|
|
5
9
|
[Documentation](https://docs.fraza.ca/docs) · [Installation](https://docs.fraza.ca/docs/demarrage/installation) · [Structure du projet](https://docs.fraza.ca/docs/demarrage/structure-du-projet)
|
|
6
10
|
|
|
7
11
|
> [!WARNING]
|
|
@@ -39,7 +43,7 @@ Ouvrez `http://localhost:3000/auth` pour créer le premier compte, qui reçoit l
|
|
|
39
43
|
|
|
40
44
|
## Ce que fait le CLI
|
|
41
45
|
|
|
42
|
-
1. Crée le projet avec `create-next-app` 16.3
|
|
46
|
+
1. Crée le projet avec `create-next-app` 16.4.3, la version de Next contre laquelle le core est validé.
|
|
43
47
|
2. Remplace le dossier `app/` de Next par les gabarits Fraza : administration, authentification, API, page d'accueil, pages d'erreur, gabarits de page, exemples de blocs, `theme.js`, `instrumentation.js` et `jsconfig.json`.
|
|
44
48
|
3. Ajoute les scripts `dev`, `build` et `postinstall`, qui lancent `fraza-modules sync`.
|
|
45
49
|
4. Masque l'indicateur de développement de Next dans `next.config.mjs`.
|
|
@@ -47,7 +51,7 @@ Ouvrez `http://localhost:3000/auth` pour créer le premier compte, qui reçoit l
|
|
|
47
51
|
6. Ajoute un bloc Fraza à l'`AGENTS.md`, qui renvoie un agent à la documentation livrée dans `node_modules/@fraza/core/dist/docs/`.
|
|
48
52
|
7. Écrit le `.npmrc` du projet, sans jeton.
|
|
49
53
|
8. Installe `@fraza/core`.
|
|
50
|
-
9. Crée `.env.example`, suivi par git, et `.env.local`, ignoré par git, avec `FRAZA_ENCRYPTION_KEY` générée et `NEXT_PUBLIC_URL` locale.
|
|
54
|
+
9. Crée `.env.example`, suivi par git, et `.env.local`, ignoré par git, avec `FRAZA_ENCRYPTION_KEY` générée et `NEXT_PUBLIC_URL` locale. Crée aussi `.env.development.local`, ignoré par git, avec `NEXT_PUBLIC_URL=http://localhost:3000` et `FRAZA_DEVKIT=true`.
|
|
51
55
|
|
|
52
56
|
## Variables d'environnement
|
|
53
57
|
|
|
@@ -55,6 +59,7 @@ Ouvrez `http://localhost:3000/auth` pour créer le premier compte, qui reçoit l
|
|
|
55
59
|
|---|---|---|
|
|
56
60
|
| `.env.example` | La liste des variables, sans aucune valeur secrète. Une variable ajoutée par le projet y entre aussi. | Oui |
|
|
57
61
|
| `.env.local` | Les valeurs de cette machine : base de données, stockage, courriel, clés. | Non |
|
|
62
|
+
| `.env.development.local` | Les valeurs du développement local, lues seulement par `npm run dev` : URL locale et devkit de l'admin. | Non |
|
|
58
63
|
|
|
59
64
|
En production, les variables se saisissent dans la plateforme d'hébergement, jamais dans un fichier suivi par git. Partez de `.env.example` pour la liste.
|
|
60
65
|
|
package/bin/cli.js
CHANGED
|
@@ -169,6 +169,7 @@ async function initProject() {
|
|
|
169
169
|
const env = writeEnvFiles(envTemplate, cwd);
|
|
170
170
|
if (env.example) done('.env.example créé à partir du modèle de @fraza/core');
|
|
171
171
|
if (env.local) done('.env.local créé, FRAZA_ENCRYPTION_KEY générée');
|
|
172
|
+
if (env.development) done('.env.development.local créé (URL locale, devkit activé)');
|
|
172
173
|
|
|
173
174
|
const file = (name) => `${c.cyan}${name}${c.reset}`;
|
|
174
175
|
const dim = (text) => `${c.dim}${text}${c.reset}`;
|
package/bin/project.js
CHANGED
|
@@ -17,12 +17,14 @@ export const MIN_NODE = [20, 12];
|
|
|
17
17
|
// Version de `create-next-app`, donc de Next, installée dans le projet généré.
|
|
18
18
|
// C'est le dernier correctif de la version mineure contre laquelle le core a
|
|
19
19
|
// été validé (`packages.next.tested` de son `supported.json`) : un correctif de
|
|
20
|
-
// Next ne change pas d'API, et il porte souvent une faille corrigée
|
|
21
|
-
//
|
|
22
|
-
//
|
|
20
|
+
// Next ne change pas d'API, et il porte souvent une faille corrigée. 16.3.8
|
|
21
|
+
// était touchée par GHSA-2464-fhr4-w9xw et GHSA-673q-mjm6-r5xr, deux
|
|
22
|
+
// exécutions de code à distance corrigées en 16.4.1 seulement, sans correctif
|
|
23
|
+
// dans la 16.3 : le core a donc été validé contre la 16.4, et l'épingle suit
|
|
24
|
+
// maintenant 16.4.3, le dernier correctif de cette version mineure.
|
|
23
25
|
// `npm run check:contract` échoue si l'épingle quitte la version mineure
|
|
24
26
|
// validée ou passe sous la version validée (`pinFollowsTestedNext`).
|
|
25
|
-
export const CREATE_NEXT_APP_VERSION = '16.3
|
|
27
|
+
export const CREATE_NEXT_APP_VERSION = '16.4.3';
|
|
26
28
|
|
|
27
29
|
// Entrées tolérées dans le dossier cible : métadonnées d'éditeur ou de gestion
|
|
28
30
|
// de versions, que ni `create-next-app` ni ce CLI n'écrivent. Toute autre entrée
|
|
@@ -255,18 +257,34 @@ export function fillLocalEnv(template, { key = randomBytes(32).toString('hex'),
|
|
|
255
257
|
}
|
|
256
258
|
|
|
257
259
|
/**
|
|
258
|
-
*
|
|
259
|
-
*
|
|
260
|
+
* Contenu de `.env.development.local` : les valeurs du développement local, que
|
|
261
|
+
* Next.js ne lit qu'avec `next dev` et qui passent avant `.env.local`. On y met
|
|
262
|
+
* l'origine locale et le devkit de l'admin, qui ne doivent jamais aller en
|
|
263
|
+
* production.
|
|
264
|
+
*/
|
|
265
|
+
export const DEVELOPMENT_ENV = [
|
|
266
|
+
'# Valeurs du développement local, lues par Next.js avec `next dev` seulement,',
|
|
267
|
+
'# avant celles de .env.local. Ignoré par git.',
|
|
268
|
+
'NEXT_PUBLIC_URL=http://localhost:3000',
|
|
269
|
+
'FRAZA_DEVKIT=true',
|
|
270
|
+
'',
|
|
271
|
+
].join('\n');
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Crée `.env.example` (copie du modèle du core, suivie par git), `.env.local`
|
|
275
|
+
* (la même copie remplie pour cette machine, ignorée par git) et
|
|
276
|
+
* `.env.development.local` (`DEVELOPMENT_ENV`, ignoré par git). Un fichier qui
|
|
260
277
|
* existe déjà n'est jamais remplacé.
|
|
261
278
|
* @param {string} templatePath `node_modules/@fraza/core/.env.example`.
|
|
262
279
|
* @param {string} projectDir
|
|
263
|
-
* @returns {{ example: boolean, local: boolean }} Les fichiers créés.
|
|
280
|
+
* @returns {{ example: boolean, local: boolean, development: boolean }} Les fichiers créés.
|
|
264
281
|
*/
|
|
265
282
|
export function writeEnvFiles(templatePath, projectDir) {
|
|
266
283
|
const template = fs.readFileSync(templatePath, 'utf-8');
|
|
267
284
|
const examplePath = path.join(projectDir, '.env.example');
|
|
268
285
|
const localPath = path.join(projectDir, '.env.local');
|
|
269
|
-
const
|
|
286
|
+
const developmentPath = path.join(projectDir, '.env.development.local');
|
|
287
|
+
const created = { example: false, local: false, development: false };
|
|
270
288
|
|
|
271
289
|
if (!fs.existsSync(examplePath)) {
|
|
272
290
|
fs.writeFileSync(examplePath, template);
|
|
@@ -277,5 +295,9 @@ export function writeEnvFiles(templatePath, projectDir) {
|
|
|
277
295
|
fs.writeFileSync(localPath, fillLocalEnv(template), { mode: 0o600 });
|
|
278
296
|
created.local = true;
|
|
279
297
|
}
|
|
298
|
+
if (!fs.existsSync(developmentPath)) {
|
|
299
|
+
fs.writeFileSync(developmentPath, DEVELOPMENT_ENV);
|
|
300
|
+
created.development = true;
|
|
301
|
+
}
|
|
280
302
|
return created;
|
|
281
303
|
}
|
package/bin/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// AUTO-GÉNÉRÉ par `fraza-module sync-version`, ne pas modifier à la main.
|
|
2
|
-
export const STARTER_VERSION = '0.3.
|
|
2
|
+
export const STARTER_VERSION = '0.3.7';
|
package/changelog.json
CHANGED
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fraza/start",
|
|
3
3
|
"versions": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.3.7",
|
|
6
|
+
"date": "2026-10-25",
|
|
7
|
+
"breaking": [],
|
|
8
|
+
"envAdded": [],
|
|
9
|
+
"envRemoved": [],
|
|
10
|
+
"templateChanged": [],
|
|
11
|
+
"action": [],
|
|
12
|
+
"entries": [
|
|
13
|
+
{
|
|
14
|
+
"type": "refactor",
|
|
15
|
+
"scope": "bin/project.js",
|
|
16
|
+
"subject": "update Next version and env file generation",
|
|
17
|
+
"hash": "544646f",
|
|
18
|
+
"breaking": false
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"version": "0.3.6",
|
|
24
|
+
"date": "2026-10-25",
|
|
25
|
+
"breaking": [],
|
|
26
|
+
"envAdded": [],
|
|
27
|
+
"envRemoved": [],
|
|
28
|
+
"templateChanged": [],
|
|
29
|
+
"action": [],
|
|
30
|
+
"entries": [
|
|
31
|
+
{
|
|
32
|
+
"type": "docs",
|
|
33
|
+
"scope": null,
|
|
34
|
+
"subject": "add command to start project",
|
|
35
|
+
"hash": "5edd2f6",
|
|
36
|
+
"breaking": false
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
4
40
|
{
|
|
5
41
|
"version": "0.3.5",
|
|
6
42
|
"date": "2026-10-25",
|