56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* `ng-packagr` (el `build`/`package` de `ui`) solo empaqueta lo alcanzable
|
|
* desde `src/index.ts` — los generadores (`src/generators/`) son Node/Nx
|
|
* plugin, no Angular, así que ng-packagr los ignora por completo. Este script
|
|
* los deja listos en `dist/libs/ui/` (ya compilados por
|
|
* `tsc -p tsconfig.generators.json`, que corre antes que este script) para
|
|
* que `generators.json` publicado apunte a ficheros que de verdad existen en
|
|
* el tarball — si no, `nx g @pi/ui:theme` funcionaría dentro de este
|
|
* monorepo pero fallaría para quien instale el paquete desde el registry.
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const libRoot = path.join(__dirname, '..');
|
|
const distRoot = path.join(libRoot, '..', '..', 'dist', 'libs', 'ui');
|
|
|
|
const sourceManifest = JSON.parse(
|
|
fs.readFileSync(path.join(libRoot, 'generators.json'), 'utf8'),
|
|
);
|
|
|
|
/** `./src/generators/theme/generator.cts` (fuente) -> `./generators/theme/generator.cjs` (dist). */
|
|
function toDistPath(sourcePath) {
|
|
return sourcePath.replace('./src/generators/', './generators/').replace(/\.cts$/, '.cjs');
|
|
}
|
|
|
|
const distManifest = {
|
|
...sourceManifest,
|
|
generators: Object.fromEntries(
|
|
Object.entries(sourceManifest.generators).map(([name, config]) => [
|
|
name,
|
|
{
|
|
...config,
|
|
factory: toDistPath(config.factory),
|
|
schema: toDistPath(config.schema),
|
|
},
|
|
]),
|
|
),
|
|
};
|
|
|
|
fs.writeFileSync(
|
|
path.join(distRoot, 'generators.json'),
|
|
JSON.stringify(distManifest, null, 2) + '\n',
|
|
);
|
|
|
|
for (const { schema } of Object.values(sourceManifest.generators)) {
|
|
const sourceSchemaPath = path.join(libRoot, schema);
|
|
const destSchemaPath = path.join(distRoot, toDistPath(schema));
|
|
fs.mkdirSync(path.dirname(destSchemaPath), { recursive: true });
|
|
fs.copyFileSync(sourceSchemaPath, destSchemaPath);
|
|
}
|
|
|
|
console.log('✔ generators.json + schemas listos en dist/libs/ui/');
|