responsive-system 1.1.1 → 1.1.3
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/package.json +1 -1
- package/scripts/postinstall.js +80 -57
package/package.json
CHANGED
package/scripts/postinstall.js
CHANGED
|
@@ -19,13 +19,24 @@ const __dirname = path.dirname(__filename)
|
|
|
19
19
|
const projectRoot = process.cwd()
|
|
20
20
|
const packageJsonPath = path.join(projectRoot, 'package.json')
|
|
21
21
|
|
|
22
|
+
console.log('')
|
|
23
|
+
console.log('📦 responsive-system: Iniciando postinstall...')
|
|
24
|
+
console.log(` Directorio: ${projectRoot}`)
|
|
25
|
+
console.log('')
|
|
26
|
+
|
|
22
27
|
// Verificar si package.json existe
|
|
23
28
|
if (!fs.existsSync(packageJsonPath)) {
|
|
24
|
-
console.log('
|
|
29
|
+
console.log('⚠️ responsive-system: No se encontró package.json, saltando postinstall')
|
|
25
30
|
process.exit(0)
|
|
26
31
|
}
|
|
27
32
|
|
|
28
|
-
|
|
33
|
+
let packageJson
|
|
34
|
+
try {
|
|
35
|
+
packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error('❌ responsive-system: Error al leer package.json:', error.message)
|
|
38
|
+
process.exit(1)
|
|
39
|
+
}
|
|
29
40
|
|
|
30
41
|
// Verificar si el proyecto está vacío (solo tiene responsive-system)
|
|
31
42
|
const isProjectEmpty = !packageJson.dependencies ||
|
|
@@ -33,7 +44,6 @@ const isProjectEmpty = !packageJson.dependencies ||
|
|
|
33
44
|
(Object.keys(packageJson.dependencies).length === 1 && packageJson.dependencies['responsive-system'])
|
|
34
45
|
|
|
35
46
|
// Verificar qué está instalado SOLO en package.json (no en node_modules)
|
|
36
|
-
// Esto asegura que se agreguen al package.json aunque estén como dependencias transitivas
|
|
37
47
|
const hasReact = (packageJson.dependencies && packageJson.dependencies.react) ||
|
|
38
48
|
(packageJson.devDependencies && packageJson.devDependencies.react)
|
|
39
49
|
|
|
@@ -42,62 +52,83 @@ const hasVite = packageJson.devDependencies && packageJson.devDependencies.vite
|
|
|
42
52
|
const tailwindInDevDeps = packageJson.devDependencies && packageJson.devDependencies.tailwindcss
|
|
43
53
|
const typescriptInDevDeps = packageJson.devDependencies && packageJson.devDependencies.typescript
|
|
44
54
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
55
|
+
let needsUpdate = false
|
|
56
|
+
|
|
57
|
+
// ESTRATEGIA: Modificar directamente el package.json primero, luego instalar
|
|
58
|
+
console.log('📦 responsive-system: Verificando dependencias...')
|
|
48
59
|
|
|
49
|
-
// React
|
|
60
|
+
// Agregar React a dependencies
|
|
50
61
|
if (!hasReact) {
|
|
51
|
-
|
|
62
|
+
console.log(' ➕ Agregando React a dependencies...')
|
|
63
|
+
if (!packageJson.dependencies) {
|
|
64
|
+
packageJson.dependencies = {}
|
|
65
|
+
}
|
|
66
|
+
packageJson.dependencies['react'] = '^19.1.1'
|
|
67
|
+
packageJson.dependencies['react-dom'] = '^19.1.1'
|
|
68
|
+
needsUpdate = true
|
|
52
69
|
}
|
|
53
70
|
|
|
54
|
-
// Vite
|
|
71
|
+
// Agregar Vite si el proyecto está vacío
|
|
55
72
|
if (isProjectEmpty && !hasVite) {
|
|
56
|
-
|
|
73
|
+
console.log(' ➕ Agregando Vite a devDependencies...')
|
|
74
|
+
if (!packageJson.devDependencies) {
|
|
75
|
+
packageJson.devDependencies = {}
|
|
76
|
+
}
|
|
77
|
+
packageJson.devDependencies['vite'] = '^7.1.7'
|
|
78
|
+
packageJson.devDependencies['@vitejs/plugin-react'] = '^5.0.4'
|
|
79
|
+
needsUpdate = true
|
|
57
80
|
}
|
|
58
81
|
|
|
59
|
-
// TypeScript y Tailwind
|
|
82
|
+
// Agregar TypeScript y Tailwind a devDependencies
|
|
60
83
|
if (!tailwindInDevDeps) {
|
|
61
|
-
|
|
84
|
+
console.log(' ➕ Agregando Tailwind a devDependencies...')
|
|
85
|
+
if (!packageJson.devDependencies) {
|
|
86
|
+
packageJson.devDependencies = {}
|
|
87
|
+
}
|
|
88
|
+
packageJson.devDependencies['tailwindcss'] = '^4.1.14'
|
|
89
|
+
packageJson.devDependencies['postcss'] = '^8.5.6'
|
|
90
|
+
packageJson.devDependencies['autoprefixer'] = '^10.4.21'
|
|
91
|
+
needsUpdate = true
|
|
62
92
|
}
|
|
63
93
|
|
|
64
94
|
if (!typescriptInDevDeps) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
// Instalar React como dependencies (se necesita en runtime)
|
|
69
|
-
// Usar --save explícitamente para asegurar que se agregue al package.json
|
|
70
|
-
if (reactPackages.length > 0) {
|
|
71
|
-
console.log('📦 responsive-system: Instalando React...')
|
|
72
|
-
console.log(` Instalando: ${reactPackages.join(', ')}`)
|
|
73
|
-
try {
|
|
74
|
-
execSync(`npm install ${reactPackages.join(' ')} --save`, {
|
|
75
|
-
stdio: 'inherit',
|
|
76
|
-
cwd: projectRoot
|
|
77
|
-
})
|
|
78
|
-
console.log('✅ responsive-system: React instalado correctamente')
|
|
79
|
-
} catch (error) {
|
|
80
|
-
console.warn('⚠️ responsive-system: Error al instalar React')
|
|
95
|
+
console.log(' ➕ Agregando TypeScript a devDependencies...')
|
|
96
|
+
if (!packageJson.devDependencies) {
|
|
97
|
+
packageJson.devDependencies = {}
|
|
81
98
|
}
|
|
99
|
+
packageJson.devDependencies['typescript'] = '~5.9.3'
|
|
100
|
+
packageJson.devDependencies['@types/react'] = '^19.1.16'
|
|
101
|
+
packageJson.devDependencies['@types/react-dom'] = '^19.1.9'
|
|
102
|
+
needsUpdate = true
|
|
82
103
|
}
|
|
83
104
|
|
|
84
|
-
//
|
|
85
|
-
if (
|
|
86
|
-
console.log('
|
|
87
|
-
console.log(
|
|
105
|
+
// Escribir package.json modificado
|
|
106
|
+
if (needsUpdate) {
|
|
107
|
+
console.log('')
|
|
108
|
+
console.log('📝 responsive-system: Actualizando package.json...')
|
|
109
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2))
|
|
110
|
+
console.log('✅ responsive-system: package.json actualizado')
|
|
111
|
+
console.log('')
|
|
112
|
+
|
|
113
|
+
// Ahora instalar las dependencias
|
|
114
|
+
console.log('📦 responsive-system: Instalando dependencias...')
|
|
88
115
|
try {
|
|
89
|
-
execSync(
|
|
116
|
+
execSync('npm install', {
|
|
90
117
|
stdio: 'inherit',
|
|
91
118
|
cwd: projectRoot
|
|
92
119
|
})
|
|
93
|
-
console.log('✅ responsive-system: Dependencias
|
|
120
|
+
console.log('✅ responsive-system: Dependencias instaladas correctamente')
|
|
94
121
|
} catch (error) {
|
|
95
|
-
console.
|
|
122
|
+
console.error('❌ responsive-system: Error al instalar dependencias:', error.message)
|
|
123
|
+
console.log('⚠️ responsive-system: Las dependencias están en package.json, ejecuta "npm install" manualmente')
|
|
96
124
|
}
|
|
125
|
+
} else {
|
|
126
|
+
console.log('✅ responsive-system: Todas las dependencias ya están en package.json')
|
|
97
127
|
}
|
|
98
128
|
|
|
99
129
|
// Si el proyecto está vacío, crear estructura base
|
|
100
130
|
if (isProjectEmpty) {
|
|
131
|
+
console.log('')
|
|
101
132
|
console.log('📦 responsive-system: Proyecto vacío detectado, creando estructura base...')
|
|
102
133
|
|
|
103
134
|
// Crear estructura de directorios
|
|
@@ -106,6 +137,7 @@ if (isProjectEmpty) {
|
|
|
106
137
|
const dirPath = path.join(projectRoot, dir)
|
|
107
138
|
if (!fs.existsSync(dirPath)) {
|
|
108
139
|
fs.mkdirSync(dirPath, { recursive: true })
|
|
140
|
+
console.log(` ✅ Creado: ${dir}/`)
|
|
109
141
|
}
|
|
110
142
|
})
|
|
111
143
|
|
|
@@ -114,14 +146,13 @@ if (isProjectEmpty) {
|
|
|
114
146
|
if (!fs.existsSync(viteConfigPath)) {
|
|
115
147
|
const viteConfig = `import { defineConfig } from 'vite'
|
|
116
148
|
import react from '@vitejs/plugin-react'
|
|
117
|
-
import responsiveScalePlugin from 'responsive-system/plugin'
|
|
118
149
|
|
|
119
150
|
export default defineConfig({
|
|
120
151
|
plugins: [react()],
|
|
121
152
|
})
|
|
122
153
|
`
|
|
123
154
|
fs.writeFileSync(viteConfigPath, viteConfig)
|
|
124
|
-
console.log('✅
|
|
155
|
+
console.log(' ✅ Creado: vite.config.ts')
|
|
125
156
|
}
|
|
126
157
|
|
|
127
158
|
// Crear tailwind.config.js
|
|
@@ -163,7 +194,7 @@ export default {
|
|
|
163
194
|
}
|
|
164
195
|
`
|
|
165
196
|
fs.writeFileSync(tailwindConfigPath, tailwindConfig)
|
|
166
|
-
console.log('✅
|
|
197
|
+
console.log(' ✅ Creado: tailwind.config.js')
|
|
167
198
|
}
|
|
168
199
|
|
|
169
200
|
// Crear postcss.config.js
|
|
@@ -177,7 +208,7 @@ export default {
|
|
|
177
208
|
}
|
|
178
209
|
`
|
|
179
210
|
fs.writeFileSync(postcssConfigPath, postcssConfig)
|
|
180
|
-
console.log('✅
|
|
211
|
+
console.log(' ✅ Creado: postcss.config.js')
|
|
181
212
|
}
|
|
182
213
|
|
|
183
214
|
// Crear tsconfig.json
|
|
@@ -206,7 +237,7 @@ export default {
|
|
|
206
237
|
}
|
|
207
238
|
`
|
|
208
239
|
fs.writeFileSync(tsconfigPath, tsconfig)
|
|
209
|
-
console.log('✅
|
|
240
|
+
console.log(' ✅ Creado: tsconfig.json')
|
|
210
241
|
}
|
|
211
242
|
|
|
212
243
|
// Crear tsconfig.node.json
|
|
@@ -224,6 +255,7 @@ export default {
|
|
|
224
255
|
}
|
|
225
256
|
`
|
|
226
257
|
fs.writeFileSync(tsconfigNodePath, tsconfigNode)
|
|
258
|
+
console.log(' ✅ Creado: tsconfig.node.json')
|
|
227
259
|
}
|
|
228
260
|
|
|
229
261
|
// Crear index.html
|
|
@@ -244,7 +276,7 @@ export default {
|
|
|
244
276
|
</html>
|
|
245
277
|
`
|
|
246
278
|
fs.writeFileSync(indexHtmlPath, indexHtml)
|
|
247
|
-
console.log('✅
|
|
279
|
+
console.log(' ✅ Creado: index.html')
|
|
248
280
|
}
|
|
249
281
|
|
|
250
282
|
// Crear src/main.tsx
|
|
@@ -267,7 +299,7 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
|
267
299
|
)
|
|
268
300
|
`
|
|
269
301
|
fs.writeFileSync(mainTsxPath, mainTsx)
|
|
270
|
-
console.log('✅
|
|
302
|
+
console.log(' ✅ Creado: src/main.tsx')
|
|
271
303
|
}
|
|
272
304
|
|
|
273
305
|
// Crear src/index.css
|
|
@@ -278,7 +310,7 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
|
278
310
|
@tailwind utilities;
|
|
279
311
|
`
|
|
280
312
|
fs.writeFileSync(indexCssPath, indexCss)
|
|
281
|
-
console.log('✅
|
|
313
|
+
console.log(' ✅ Creado: src/index.css')
|
|
282
314
|
}
|
|
283
315
|
|
|
284
316
|
// Crear src/App.tsx con página de ejemplo
|
|
@@ -348,7 +380,7 @@ function App() {
|
|
|
348
380
|
export default App
|
|
349
381
|
`
|
|
350
382
|
fs.writeFileSync(appTsxPath, appTsx)
|
|
351
|
-
console.log('✅
|
|
383
|
+
console.log(' ✅ Creado: src/App.tsx con página de ejemplo')
|
|
352
384
|
}
|
|
353
385
|
|
|
354
386
|
// Actualizar package.json con scripts
|
|
@@ -366,7 +398,7 @@ export default App
|
|
|
366
398
|
}
|
|
367
399
|
|
|
368
400
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2))
|
|
369
|
-
console.log('✅
|
|
401
|
+
console.log(' ✅ Actualizado: package.json con scripts')
|
|
370
402
|
|
|
371
403
|
console.log('')
|
|
372
404
|
console.log('🎉 responsive-system: Proyecto inicializado correctamente!')
|
|
@@ -377,15 +409,6 @@ export default App
|
|
|
377
409
|
console.log('')
|
|
378
410
|
}
|
|
379
411
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
// Verificar si tailwind.config.js existe (solo si no es proyecto vacío)
|
|
385
|
-
if (!isProjectEmpty) {
|
|
386
|
-
const tailwindConfigPath = path.join(projectRoot, 'tailwind.config.js')
|
|
387
|
-
if (!fs.existsSync(tailwindConfigPath)) {
|
|
388
|
-
console.log('💡 responsive-system: No se encontró tailwind.config.js')
|
|
389
|
-
console.log(' Ejecuta: npx tailwindcss init -p')
|
|
390
|
-
}
|
|
391
|
-
}
|
|
412
|
+
console.log('')
|
|
413
|
+
console.log('✅ responsive-system: postinstall completado')
|
|
414
|
+
console.log('')
|