@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.
Files changed (2) hide show
  1. package/build.js +75 -38
  2. 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
- let newExports = {
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
- "types": "./index.d.ts"
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 de forma condicional y crear entradas en exports
29
- const processDirectories = (sourceDir, distDir, exportPrefix) => {
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(distDir)) {
36
- mkdirSync(distDir, { recursive: true });
52
+
53
+ if (!existsSync(distSubDir)) {
54
+ mkdirSync(distSubDir, { recursive: true });
37
55
  }
38
56
 
39
- const componentDirs = sync(`${sourceDir}/*/`);
40
-
57
+ const moduleDirs = sync(`${sourceDir}/*/`);
58
+
41
59
  console.log(`Buscando módulos en: ${sourceDir}`);
42
-
43
- componentDirs.forEach(componentDirPath => {
44
- const componentName = basename(componentDirPath);
45
-
46
- // Verificar si el nombre de la carpeta tiene la inicial en mayúscula
47
- if (!/^[A-Z]/.test(componentName)) {
48
- console.log(` - Saltando '${componentName}' porque su carpeta no empieza con mayúscula.`);
49
- return; // Saltar este componente
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: ${componentName}`);
53
-
54
- // Crear carpeta en dist
55
- const distModuleFolder = join(distDir, componentName);
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
- // Agregar entrada al objeto exports
61
- const exportPath = `./${exportPrefix}/${componentName}`;
79
+ const exportPath = `./${exportPrefix}/${moduleName}`;
62
80
  newExports[exportPath] = {
63
- "import": `./${exportPrefix}/${componentName}/${componentName}.js`,
64
- "require": `./${exportPrefix}/${componentName}/${componentName}.cjs`,
65
- "types": `./${exportPrefix}/${componentName}/${componentName}.d.ts`
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
- // Crear una copia del package.json original para dist
77
- const distPackageJson = { ...originalPackageJson };
78
- distPackageJson.exports = newExports;
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}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soyfri/shared-library",
3
- "version": "2.0.0-beta.0",
3
+ "version": "2.0.0-beta.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",