odoro 0.1.3 → 0.1.5
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/dist/{build-SQAC7ORR.js → build-I27VUYCK.js} +1 -1
- package/dist/{chunk-FTMPTVGL.js → chunk-RSKKKNAM.js} +49 -6
- package/dist/cli.js +2 -2
- package/dist/index.js +1 -1
- package/dist/{package-AHYI62K6.js → package-N4PY2QRI.js} +1 -1
- package/package.json +1 -1
- package/templates/react-ts/README.md +5 -6
|
@@ -3,8 +3,10 @@ import { extractEntries, applyAlias, isBareSpecifier } from './chunk-G5QXVBYT.js
|
|
|
3
3
|
import { info, colors, size, success, duration } from './chunk-JMEHF3KN.js';
|
|
4
4
|
import { existsSync } from 'fs';
|
|
5
5
|
import { readFile, rm, mkdir, writeFile, cp, stat } from 'fs/promises';
|
|
6
|
-
import { join, basename, resolve, relative, sep } from 'path';
|
|
6
|
+
import { join, basename, resolve, relative, sep, dirname } from 'path';
|
|
7
7
|
import { build } from 'esbuild';
|
|
8
|
+
import { createRequire } from 'module';
|
|
9
|
+
import { pathToFileURL } from 'url';
|
|
8
10
|
|
|
9
11
|
// src/build/elaguer.ts
|
|
10
12
|
var GROUPES = /* @__PURE__ */ new Set(["media", "supports", "layer", "container", "scope"]);
|
|
@@ -185,6 +187,28 @@ function decouperSelecteurs(selecteur) {
|
|
|
185
187
|
parts.push(selecteur.slice(debut).trim());
|
|
186
188
|
return parts.filter((p) => p.length > 0);
|
|
187
189
|
}
|
|
190
|
+
var PAQUET = "@odoro-cli/libs";
|
|
191
|
+
var SOUS_CHEMIN = "./generateur";
|
|
192
|
+
function fichierDe(entree) {
|
|
193
|
+
if (entree === void 0) return void 0;
|
|
194
|
+
if (typeof entree === "string") return entree;
|
|
195
|
+
return entree.import ?? entree.default;
|
|
196
|
+
}
|
|
197
|
+
async function fournisseurDe(root) {
|
|
198
|
+
try {
|
|
199
|
+
const exiger = createRequire(join(root, "package.json"));
|
|
200
|
+
const manifeste = exiger.resolve(`${PAQUET}/package.json`);
|
|
201
|
+
const dossier = dirname(manifeste);
|
|
202
|
+
const contenu = JSON.parse(await readFile(manifeste, "utf8"));
|
|
203
|
+
const relatif = fichierDe(contenu.exports?.[SOUS_CHEMIN]);
|
|
204
|
+
if (relatif === void 0) return void 0;
|
|
205
|
+
const module_ = await import(pathToFileURL(resolve(dossier, relatif)).href);
|
|
206
|
+
if (typeof module_.renderUtilitairesPour !== "function") return void 0;
|
|
207
|
+
return { renderUtilitairesPour: module_.renderUtilitairesPour };
|
|
208
|
+
} catch {
|
|
209
|
+
return void 0;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
188
212
|
|
|
189
213
|
// src/build/build.ts
|
|
190
214
|
function toPosix(path) {
|
|
@@ -215,7 +239,7 @@ function outputsForEntry(result, entry, outDir, root) {
|
|
|
215
239
|
}
|
|
216
240
|
return { script: void 0, styles: [] };
|
|
217
241
|
}
|
|
218
|
-
async function
|
|
242
|
+
async function taillerFeuilles(result, config, html) {
|
|
219
243
|
const produits = Object.keys(result.metafile.outputs).map((f) => resolve(config.root, f));
|
|
220
244
|
const feuilles = produits.filter((f) => f.endsWith(".css"));
|
|
221
245
|
if (feuilles.length === 0) return;
|
|
@@ -223,12 +247,31 @@ async function elaguerFeuilles(result, config, html) {
|
|
|
223
247
|
for (const fichier of produits) {
|
|
224
248
|
if (fichier.endsWith(".js")) sources.push(await readFile(fichier, "utf8"));
|
|
225
249
|
}
|
|
250
|
+
const fournisseur = await fournisseurDe(config.root);
|
|
251
|
+
const employes = /* @__PURE__ */ new Set();
|
|
252
|
+
if (fournisseur !== void 0) {
|
|
253
|
+
for (const source of sources) for (const mot of motsDe(source)) employes.add(mot);
|
|
254
|
+
for (const garde of config.build.safelist) {
|
|
255
|
+
if (typeof garde === "string") employes.add(garde);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
226
258
|
for (const feuille of feuilles) {
|
|
227
259
|
const avant = await readFile(feuille, "utf8");
|
|
228
|
-
|
|
229
|
-
|
|
260
|
+
if (fournisseur === void 0) {
|
|
261
|
+
const rapport = elaguer(avant, sources, { sauvegarde: config.build.safelist });
|
|
262
|
+
await writeFile(feuille, rapport.css, "utf8");
|
|
263
|
+
info(
|
|
264
|
+
` ${colors.dim("elagage")} ${basename(feuille)} ${size(rapport.octetsAvant)} \u2192 ${size(rapport.octetsApres)} ${colors.dim(`${String(rapport.gardees)} classes gardees`)}`
|
|
265
|
+
);
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
const socle = elaguer(avant, [], {}).css;
|
|
269
|
+
const utilitaires = fournisseur.renderUtilitairesPour(employes);
|
|
270
|
+
const apres = `${socle}
|
|
271
|
+
${utilitaires}`;
|
|
272
|
+
await writeFile(feuille, apres, "utf8");
|
|
230
273
|
info(
|
|
231
|
-
` ${colors.dim("
|
|
274
|
+
` ${colors.dim("generation")} ${basename(feuille)} ${size(Buffer.byteLength(avant))} \u2192 ${size(Buffer.byteLength(apres))}`
|
|
232
275
|
);
|
|
233
276
|
}
|
|
234
277
|
}
|
|
@@ -305,7 +348,7 @@ async function buildProject(config) {
|
|
|
305
348
|
}
|
|
306
349
|
]
|
|
307
350
|
});
|
|
308
|
-
if (config.build.elaguer) await
|
|
351
|
+
if (config.build.elaguer) await taillerFeuilles(result, config, html);
|
|
309
352
|
let output = html;
|
|
310
353
|
for (const entry of entries) {
|
|
311
354
|
const { script, styles } = outputsForEntry(
|
package/dist/cli.js
CHANGED
|
@@ -130,7 +130,7 @@ function rootFrom(flags, positional) {
|
|
|
130
130
|
async function run(argv) {
|
|
131
131
|
const { command, positional, flags } = parseArgs(argv);
|
|
132
132
|
if (flags["version"] === true) {
|
|
133
|
-
const manifest = await import('./package-
|
|
133
|
+
const manifest = await import('./package-N4PY2QRI.js');
|
|
134
134
|
console.log(manifest.default.version);
|
|
135
135
|
return 0;
|
|
136
136
|
}
|
|
@@ -160,7 +160,7 @@ async function run(argv) {
|
|
|
160
160
|
return new Promise(() => void 0);
|
|
161
161
|
}
|
|
162
162
|
case "build": {
|
|
163
|
-
const { buildProject, reportBuild } = await import('./build-
|
|
163
|
+
const { buildProject, reportBuild } = await import('./build-I27VUYCK.js');
|
|
164
164
|
const config = await loadConfig(rootFrom(flags, positional), overridesFrom(flags));
|
|
165
165
|
const output = await buildProject(config);
|
|
166
166
|
reportBuild(output, process.cwd());
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
export { defineConfig, loadConfig } from './chunk-Q35CGY2Z.js';
|
|
3
3
|
import './chunk-T6RLHSCW.js';
|
|
4
|
-
export { buildProject, reportBuild } from './chunk-
|
|
4
|
+
export { buildProject, reportBuild } from './chunk-RSKKKNAM.js';
|
|
5
5
|
export { ModuleGraph, depFileName, detectSelfAccepting, optimizeDeps, scanDependencies, startDevServer } from './chunk-G5QXVBYT.js';
|
|
6
6
|
export { startPreviewServer } from './chunk-2YDI5NKV.js';
|
|
7
7
|
import './chunk-JMEHF3KN.js';
|
package/package.json
CHANGED
|
@@ -34,13 +34,12 @@ Toutes les valeurs visuelles passent par des variables CSS. Surcharger
|
|
|
34
34
|
`--o-palette-brand-600` dans `src/styles.css` retheme l'application **et** les
|
|
35
35
|
composants de la librairie, sans toucher a leur code.
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Une seule feuille de style : `@odoro-cli/libs/styles.css`, a importer une fois
|
|
38
|
+
a la racine de l'application.
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Importer l'une **ou** l'autre, jamais les deux.
|
|
40
|
+
Elle pese 1,7 Mo sur le disque, mais ce n'est pas ce que vos visiteurs
|
|
41
|
+
telechargent : la compilation n'en garde que les classes que votre code
|
|
42
|
+
emploie reellement — quelques dizaines de kilooctets en pratique.
|
|
44
43
|
|
|
45
44
|
## Rechargement a chaud
|
|
46
45
|
|