@soyfri/shared-library 2.0.0-beta.0 → 2.0.0-beta.1
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/build.js +75 -38
- package/package.json +1 -1
package/build.js
CHANGED
|
@@ -15,79 +15,117 @@ const readmePath = join(projectRoot, 'README.md');
|
|
|
15
15
|
// Leer el package.json original
|
|
16
16
|
const originalPackageJson = JSON.parse(readFileSync(originalPackageJsonPath, 'utf8'));
|
|
17
17
|
|
|
18
|
-
// Inicializar el nuevo objeto exports
|
|
19
|
-
|
|
18
|
+
// Inicializar el nuevo objeto exports.
|
|
19
|
+
// IMPORTANTE: el workflow publica con `working-directory: dist`, por lo que
|
|
20
|
+
// `dist/` es la RAÍZ del paquete publicado. Todos los paths acá son relativos
|
|
21
|
+
// a dist/ (es decir, sin el prefijo "./dist/").
|
|
22
|
+
const newExports = {
|
|
20
23
|
".": {
|
|
24
|
+
"types": "./index.d.ts",
|
|
21
25
|
"import": "./index.js",
|
|
22
|
-
"require": "./index.cjs"
|
|
23
|
-
|
|
26
|
+
"require": "./index.cjs"
|
|
27
|
+
},
|
|
28
|
+
"./styles.css": "./styles.css",
|
|
29
|
+
"./mui": {
|
|
30
|
+
"types": "./mui.d.ts"
|
|
24
31
|
},
|
|
25
32
|
"./package.json": "./package.json"
|
|
26
33
|
};
|
|
27
34
|
|
|
28
|
-
// Función para procesar directorios
|
|
29
|
-
|
|
35
|
+
// Función para procesar directorios y crear entradas en exports.
|
|
36
|
+
//
|
|
37
|
+
// Nota sobre los archivos generados por vite (según `vite.config.js`):
|
|
38
|
+
// - Runtime: components/<Name>/<Name>.js y .cjs
|
|
39
|
+
// - Types barrel components/<Name>/index.d.ts (el archivo barrel de src/components/<Name>/index.ts)
|
|
40
|
+
// - Types comp.: components/<Name>/<Name>.d.ts (el archivo del componente src/components/<Name>/<Name>.tsx)
|
|
41
|
+
//
|
|
42
|
+
// Para el consumer, el import `@soyfri/shared-library/components/<Name>` debe
|
|
43
|
+
// resolver al BARREL, por lo tanto:
|
|
44
|
+
// - types → ./components/<Name>/index.d.ts (barrel types)
|
|
45
|
+
// - import → ./components/<Name>/<Name>.js (barrel runtime)
|
|
46
|
+
// - require→ ./components/<Name>/<Name>.cjs (barrel runtime)
|
|
47
|
+
const processDirectories = (sourceDir, distSubDir, exportPrefix) => {
|
|
30
48
|
if (!existsSync(sourceDir)) {
|
|
31
49
|
console.log(`Directorio no encontrado: ${sourceDir}. Saltando.`);
|
|
32
50
|
return;
|
|
33
51
|
}
|
|
34
|
-
|
|
35
|
-
if (!existsSync(
|
|
36
|
-
mkdirSync(
|
|
52
|
+
|
|
53
|
+
if (!existsSync(distSubDir)) {
|
|
54
|
+
mkdirSync(distSubDir, { recursive: true });
|
|
37
55
|
}
|
|
38
56
|
|
|
39
|
-
const
|
|
40
|
-
|
|
57
|
+
const moduleDirs = sync(`${sourceDir}/*/`);
|
|
58
|
+
|
|
41
59
|
console.log(`Buscando módulos en: ${sourceDir}`);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
//
|
|
47
|
-
if (!/^[A-Z]/.test(
|
|
48
|
-
console.log(` - Saltando '${
|
|
49
|
-
return;
|
|
60
|
+
|
|
61
|
+
moduleDirs.forEach(moduleDirPath => {
|
|
62
|
+
const moduleName = basename(moduleDirPath);
|
|
63
|
+
|
|
64
|
+
// Saltar módulos privados (_shared, _utils, etc.) y los que no empiezan con mayúscula.
|
|
65
|
+
if (!/^[A-Z]/.test(moduleName)) {
|
|
66
|
+
console.log(` - Saltando '${moduleName}' porque no empieza con mayúscula.`);
|
|
67
|
+
return;
|
|
50
68
|
}
|
|
51
69
|
|
|
52
|
-
console.log(` - Módulo encontrado: ${
|
|
53
|
-
|
|
54
|
-
//
|
|
55
|
-
|
|
70
|
+
console.log(` - Módulo encontrado: ${moduleName}`);
|
|
71
|
+
|
|
72
|
+
// Asegurar que exista la carpeta en dist (vite ya la debería haber creado,
|
|
73
|
+
// pero esto es idempotente).
|
|
74
|
+
const distModuleFolder = join(distSubDir, moduleName);
|
|
56
75
|
if (!existsSync(distModuleFolder)) {
|
|
57
76
|
mkdirSync(distModuleFolder, { recursive: true });
|
|
58
77
|
}
|
|
59
78
|
|
|
60
|
-
|
|
61
|
-
const exportPath = `./${exportPrefix}/${componentName}`;
|
|
79
|
+
const exportPath = `./${exportPrefix}/${moduleName}`;
|
|
62
80
|
newExports[exportPath] = {
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
81
|
+
"types": `./${exportPrefix}/${moduleName}/index.d.ts`,
|
|
82
|
+
"import": `./${exportPrefix}/${moduleName}/${moduleName}.js`,
|
|
83
|
+
"require": `./${exportPrefix}/${moduleName}/${moduleName}.cjs`
|
|
66
84
|
};
|
|
67
85
|
});
|
|
68
86
|
};
|
|
69
87
|
|
|
70
|
-
// Procesar componentes
|
|
88
|
+
// Procesar componentes y hooks.
|
|
71
89
|
processDirectories(srcComponentsDir, distComponentsDir, 'components');
|
|
72
|
-
|
|
73
|
-
// Procesar hooks
|
|
74
90
|
processDirectories(srcHooksDir, distHooksDir, 'hooks');
|
|
75
91
|
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
92
|
+
// Construir el package.json de dist/ partiendo del original, pero corrigiendo
|
|
93
|
+
// los paths de `main`, `module` y `types` para que sean flat (sin prefijo "dist/")
|
|
94
|
+
// porque dist/ ES la raíz del paquete publicado.
|
|
95
|
+
const distPackageJson = {
|
|
96
|
+
...originalPackageJson,
|
|
97
|
+
main: "./index.cjs",
|
|
98
|
+
module: "./index.js",
|
|
99
|
+
types: "./index.d.ts",
|
|
100
|
+
exports: newExports,
|
|
101
|
+
// Declarar qué archivos forman parte del tarball.
|
|
102
|
+
files: [
|
|
103
|
+
"index.js",
|
|
104
|
+
"index.cjs",
|
|
105
|
+
"index.d.ts",
|
|
106
|
+
"index.js.map",
|
|
107
|
+
"index.cjs.map",
|
|
108
|
+
"mui.d.ts",
|
|
109
|
+
"styles.css",
|
|
110
|
+
"components",
|
|
111
|
+
"hooks",
|
|
112
|
+
"theme"
|
|
113
|
+
],
|
|
114
|
+
// Side effects: el CSS tiene side effects, el resto es tree-shakeable.
|
|
115
|
+
sideEffects: ["**/*.css"]
|
|
116
|
+
};
|
|
79
117
|
|
|
80
|
-
// Eliminar propiedades innecesarias
|
|
118
|
+
// Eliminar propiedades innecesarias para el paquete publicado.
|
|
81
119
|
delete distPackageJson.scripts;
|
|
82
120
|
delete distPackageJson.devDependencies;
|
|
83
121
|
delete distPackageJson.private;
|
|
122
|
+
delete distPackageJson.overrides;
|
|
84
123
|
|
|
85
|
-
// Asegurarse de que el directorio 'dist' exista
|
|
86
124
|
if (!existsSync(distDir)) {
|
|
87
125
|
mkdirSync(distDir, { recursive: true });
|
|
88
126
|
}
|
|
89
127
|
|
|
90
|
-
// Copiar README.md a la carpeta dist
|
|
128
|
+
// Copiar README.md a la carpeta dist.
|
|
91
129
|
if (existsSync(readmePath)) {
|
|
92
130
|
copyFileSync(readmePath, join(distDir, 'README.md'));
|
|
93
131
|
console.log('Copiando README.md a la carpeta dist.');
|
|
@@ -95,7 +133,6 @@ if (existsSync(readmePath)) {
|
|
|
95
133
|
console.log('No se encontró README.md en la raíz del proyecto. Saltando.');
|
|
96
134
|
}
|
|
97
135
|
|
|
98
|
-
// Escribir el nuevo package.json en dist/
|
|
99
136
|
writeFileSync(distPackageJsonPath, JSON.stringify(distPackageJson, null, 2), 'utf8');
|
|
100
137
|
|
|
101
138
|
console.log(`\n'package.json' generado exitosamente en: ${distPackageJsonPath}`);
|