codecrypto-cli 1.0.0
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/.claude/settings.local.json +11 -0
- package/PUBLISHING.md +156 -0
- package/README.md +551 -0
- package/codecrypto-cli-1.0.0.tgz +0 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +55 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/database.d.ts +3 -0
- package/dist/commands/database.d.ts.map +1 -0
- package/dist/commands/database.js +94 -0
- package/dist/commands/database.js.map +1 -0
- package/dist/commands/deploy.d.ts +3 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +46 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/user.d.ts +3 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +112 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/package.json +37 -0
- package/src/commands/config.ts +55 -0
- package/src/commands/database.ts +105 -0
- package/src/commands/deploy.ts +49 -0
- package/src/commands/user.ts +122 -0
- package/src/index.ts +22 -0
- package/tsconfig.json +19 -0
package/PUBLISHING.md
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Guía de Publicación a NPM
|
|
2
|
+
|
|
3
|
+
## Solución al Error 403 (2FA Requerido)
|
|
4
|
+
|
|
5
|
+
Tienes dos opciones:
|
|
6
|
+
|
|
7
|
+
### Opción 1: Habilitar 2FA en tu cuenta NPM (Recomendado)
|
|
8
|
+
|
|
9
|
+
1. **Ve a npmjs.com y habilita 2FA:**
|
|
10
|
+
- Visita: https://www.npmjs.com/settings/YOUR_USERNAME/profile
|
|
11
|
+
- Ve a la sección "Two-Factor Authentication"
|
|
12
|
+
- Elige "Authorization and Publishing" o "Authorization only"
|
|
13
|
+
- Escanea el código QR con una app como Google Authenticator o Authy
|
|
14
|
+
|
|
15
|
+
2. **Publica con código 2FA:**
|
|
16
|
+
```bash
|
|
17
|
+
npm publish --otp=123456
|
|
18
|
+
```
|
|
19
|
+
(Reemplaza 123456 con el código de tu app de autenticación)
|
|
20
|
+
|
|
21
|
+
### Opción 2: Usar un Access Token con permisos especiales
|
|
22
|
+
|
|
23
|
+
1. **Crear un token de automatización:**
|
|
24
|
+
- Ve a: https://www.npmjs.com/settings/YOUR_USERNAME/tokens
|
|
25
|
+
- Click en "Generate New Token"
|
|
26
|
+
- Selecciona "Automation" (este tipo puede publicar sin 2FA)
|
|
27
|
+
- Copia el token generado
|
|
28
|
+
|
|
29
|
+
2. **Configurar el token localmente:**
|
|
30
|
+
```bash
|
|
31
|
+
npm logout
|
|
32
|
+
npm login
|
|
33
|
+
# En "Username": Deja el campo vacío y presiona Enter
|
|
34
|
+
# En "Password": Pega tu token
|
|
35
|
+
# En "Email": Tu email de NPM
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
3. **O configurar directamente en .npmrc:**
|
|
39
|
+
```bash
|
|
40
|
+
npm config set //registry.npmjs.org/:_authToken YOUR_TOKEN_HERE
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Pasos Completos para Publicar
|
|
44
|
+
|
|
45
|
+
### 1. Verificar login
|
|
46
|
+
```bash
|
|
47
|
+
npm whoami
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. Verificar que el paquete esté listo
|
|
51
|
+
```bash
|
|
52
|
+
npm run build
|
|
53
|
+
npm pack --dry-run
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. Publicar
|
|
57
|
+
|
|
58
|
+
**Con 2FA habilitado:**
|
|
59
|
+
```bash
|
|
60
|
+
npm publish --access public --otp=123456
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Con token de automatización:**
|
|
64
|
+
```bash
|
|
65
|
+
npm publish --access public
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Alternativa: Cambiar el nombre del paquete
|
|
69
|
+
|
|
70
|
+
Si "codecrypto-cli" ya está ocupado o quieres usar un nombre único:
|
|
71
|
+
|
|
72
|
+
1. **Edita package.json:**
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"name": "@tu-usuario/codecrypto-cli",
|
|
76
|
+
...
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
2. **Publica con scope:**
|
|
81
|
+
```bash
|
|
82
|
+
npm publish --access public
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
3. **Los usuarios lo usarán así:**
|
|
86
|
+
```bash
|
|
87
|
+
npx @tu-usuario/codecrypto-cli --help
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Verificar después de publicar
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Ver en NPM
|
|
94
|
+
open https://www.npmjs.com/package/codecrypto-cli
|
|
95
|
+
|
|
96
|
+
# Probar instalación
|
|
97
|
+
npx codecrypto-cli@latest --help
|
|
98
|
+
|
|
99
|
+
# Ver información del paquete
|
|
100
|
+
npm view codecrypto-cli
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Actualizar versiones futuras
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Incrementar versión
|
|
107
|
+
npm version patch # 1.0.0 -> 1.0.1
|
|
108
|
+
npm version minor # 1.0.0 -> 1.1.0
|
|
109
|
+
npm version major # 1.0.0 -> 2.0.0
|
|
110
|
+
|
|
111
|
+
# Publicar nueva versión (con 2FA)
|
|
112
|
+
npm publish --otp=123456
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Troubleshooting
|
|
116
|
+
|
|
117
|
+
### Error: "You must verify your email"
|
|
118
|
+
```bash
|
|
119
|
+
# Revisa tu correo y verifica la cuenta NPM
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Error: "Package name already exists"
|
|
123
|
+
```bash
|
|
124
|
+
# Cambia el nombre en package.json a algo único
|
|
125
|
+
# O usa un scoped package: @tu-usuario/nombre
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Error: "Invalid token"
|
|
129
|
+
```bash
|
|
130
|
+
# Logout y login de nuevo
|
|
131
|
+
npm logout
|
|
132
|
+
npm login
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Ver logs completos de errores
|
|
136
|
+
```bash
|
|
137
|
+
cat ~/.npm/_logs/*-debug-0.log
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Recomendación
|
|
141
|
+
|
|
142
|
+
Para uso profesional, usa **Opción 1 (2FA)** por seguridad. Guarda los códigos de respaldo en un lugar seguro.
|
|
143
|
+
|
|
144
|
+
## Comandos Rápidos
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Setup completo
|
|
148
|
+
npm login # Login
|
|
149
|
+
npm whoami # Verificar usuario
|
|
150
|
+
npm run build # Compilar
|
|
151
|
+
npm publish --access public --otp=CODE # Publicar con 2FA
|
|
152
|
+
|
|
153
|
+
# Verificar
|
|
154
|
+
npx codecrypto-cli --help # Probar
|
|
155
|
+
npm view codecrypto-cli # Ver info
|
|
156
|
+
```
|
package/README.md
ADDED
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
# CodeCrypto CLI
|
|
2
|
+
|
|
3
|
+
CLI tool for CodeCrypto operations - Deploy, manage users, configure settings, and handle database operations.
|
|
4
|
+
|
|
5
|
+
## Instalación
|
|
6
|
+
|
|
7
|
+
### Usando NPX (sin instalación)
|
|
8
|
+
```bash
|
|
9
|
+
npx codecrypto-cli [command]
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Instalación Global
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g codecrypto-cli
|
|
15
|
+
codecrypto [command]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Instalación Local (desarrollo)
|
|
19
|
+
```bash
|
|
20
|
+
git clone <repository>
|
|
21
|
+
cd cli-cc
|
|
22
|
+
npm install
|
|
23
|
+
npm run build
|
|
24
|
+
npm link
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Comandos Disponibles
|
|
28
|
+
|
|
29
|
+
### 📦 Deploy
|
|
30
|
+
|
|
31
|
+
Despliega tu aplicación en diferentes entornos.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Despliegue básico
|
|
35
|
+
codecrypto deploy
|
|
36
|
+
|
|
37
|
+
# Despliegue con opciones
|
|
38
|
+
codecrypto deploy --env prod --branch main --region us-west-2
|
|
39
|
+
|
|
40
|
+
# Despliegue sin tests
|
|
41
|
+
codecrypto deploy --skip-tests
|
|
42
|
+
|
|
43
|
+
# Simulación (dry-run)
|
|
44
|
+
codecrypto deploy --dry-run
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Opciones:**
|
|
48
|
+
- `-e, --env <environment>` - Entorno (dev, staging, prod). Default: `dev`
|
|
49
|
+
- `-b, --branch <branch>` - Rama de Git. Default: `main`
|
|
50
|
+
- `-r, --region <region>` - Región AWS. Default: `us-east-1`
|
|
51
|
+
- `--skip-tests` - Omitir tests antes del deployment
|
|
52
|
+
- `--dry-run` - Simular sin ejecutar
|
|
53
|
+
|
|
54
|
+
**Ejemplos:**
|
|
55
|
+
```bash
|
|
56
|
+
# Desplegar a producción desde rama release
|
|
57
|
+
codecrypto deploy -e prod -b release
|
|
58
|
+
|
|
59
|
+
# Desplegar a staging sin tests
|
|
60
|
+
codecrypto deploy -e staging --skip-tests
|
|
61
|
+
|
|
62
|
+
# Simular despliegue a producción
|
|
63
|
+
codecrypto deploy -e prod --dry-run
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### 👤 User
|
|
69
|
+
|
|
70
|
+
Gestiona usuarios en el sistema.
|
|
71
|
+
|
|
72
|
+
#### Crear Usuario
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Modo interactivo
|
|
76
|
+
codecrypto user create --interactive
|
|
77
|
+
|
|
78
|
+
# Con parámetros
|
|
79
|
+
codecrypto user create -u john_doe -e john@example.com -r admin
|
|
80
|
+
|
|
81
|
+
# Modo mixto (parámetros + interactivo)
|
|
82
|
+
codecrypto user create -u john_doe --interactive
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Opciones:**
|
|
86
|
+
- `-u, --username <username>` - Nombre de usuario
|
|
87
|
+
- `-e, --email <email>` - Correo electrónico
|
|
88
|
+
- `-r, --role <role>` - Rol (admin, user, guest). Default: `user`
|
|
89
|
+
- `--interactive` - Modo interactivo
|
|
90
|
+
|
|
91
|
+
**Ejemplos:**
|
|
92
|
+
```bash
|
|
93
|
+
# Crear admin
|
|
94
|
+
codecrypto user create -u admin_user -e admin@company.com -r admin
|
|
95
|
+
|
|
96
|
+
# Crear usuario guest
|
|
97
|
+
codecrypto user create -u guest01 -e guest@example.com -r guest
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### Listar Usuarios
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Listar todos
|
|
104
|
+
codecrypto user list
|
|
105
|
+
|
|
106
|
+
# Filtrar por rol
|
|
107
|
+
codecrypto user list -r admin
|
|
108
|
+
|
|
109
|
+
# Limitar resultados
|
|
110
|
+
codecrypto user list -l 5
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Opciones:**
|
|
114
|
+
- `-r, --role <role>` - Filtrar por rol
|
|
115
|
+
- `-l, --limit <number>` - Límite de resultados. Default: `10`
|
|
116
|
+
|
|
117
|
+
#### Eliminar Usuario
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Con confirmación
|
|
121
|
+
codecrypto user delete 123
|
|
122
|
+
|
|
123
|
+
# Sin confirmación (forzar)
|
|
124
|
+
codecrypto user delete 123 --force
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Opciones:**
|
|
128
|
+
- `-f, --force` - Omitir confirmación
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### ⚙️ Config
|
|
133
|
+
|
|
134
|
+
Gestiona la configuración del CLI.
|
|
135
|
+
|
|
136
|
+
#### Set (Establecer valor)
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Configuración local
|
|
140
|
+
codecrypto config set api.url https://api.example.com
|
|
141
|
+
|
|
142
|
+
# Configuración global
|
|
143
|
+
codecrypto config set api.token my-secret-token --global
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Opciones:**
|
|
147
|
+
- `-g, --global` - Configuración global
|
|
148
|
+
|
|
149
|
+
**Ejemplos:**
|
|
150
|
+
```bash
|
|
151
|
+
codecrypto config set default.region us-west-2
|
|
152
|
+
codecrypto config set api.timeout 5000 --global
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### Get (Obtener valor)
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
codecrypto config get api.url
|
|
159
|
+
codecrypto config get default.region
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### List (Listar configuración)
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Configuración local
|
|
166
|
+
codecrypto config list
|
|
167
|
+
|
|
168
|
+
# Configuración global
|
|
169
|
+
codecrypto config list --global
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Opciones:**
|
|
173
|
+
- `-g, --global` - Mostrar configuración global
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### 💾 Database (db)
|
|
178
|
+
|
|
179
|
+
Operaciones de base de datos.
|
|
180
|
+
|
|
181
|
+
#### Migraciones
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
# Ejecutar migraciones
|
|
185
|
+
codecrypto db migrate
|
|
186
|
+
|
|
187
|
+
# Ejecutar en producción
|
|
188
|
+
codecrypto db migrate -e prod
|
|
189
|
+
|
|
190
|
+
# Rollback última migración
|
|
191
|
+
codecrypto db migrate --rollback
|
|
192
|
+
|
|
193
|
+
# Rollback 3 migraciones
|
|
194
|
+
codecrypto db migrate --rollback --steps 3
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Opciones:**
|
|
198
|
+
- `-e, --env <environment>` - Entorno. Default: `dev`
|
|
199
|
+
- `--rollback` - Revertir migración
|
|
200
|
+
- `--steps <number>` - Número de migraciones. Default: `all`
|
|
201
|
+
|
|
202
|
+
#### Seed (Poblar datos)
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
# Seed básico
|
|
206
|
+
codecrypto db seed
|
|
207
|
+
|
|
208
|
+
# Limpiar y seed
|
|
209
|
+
codecrypto db seed --clear
|
|
210
|
+
|
|
211
|
+
# Seed archivo específico
|
|
212
|
+
codecrypto db seed -f users.sql
|
|
213
|
+
|
|
214
|
+
# Seed en staging
|
|
215
|
+
codecrypto db seed -e staging
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Opciones:**
|
|
219
|
+
- `-e, --env <environment>` - Entorno. Default: `dev`
|
|
220
|
+
- `-f, --file <file>` - Archivo seed específico
|
|
221
|
+
- `--clear` - Limpiar datos existentes
|
|
222
|
+
|
|
223
|
+
#### Backup
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# Crear backup
|
|
227
|
+
codecrypto db backup my-backup
|
|
228
|
+
|
|
229
|
+
# Backup de producción
|
|
230
|
+
codecrypto db backup prod-backup -e prod
|
|
231
|
+
|
|
232
|
+
# Backup sin comprimir
|
|
233
|
+
codecrypto db backup test-backup --compress false
|
|
234
|
+
|
|
235
|
+
# Especificar directorio
|
|
236
|
+
codecrypto db backup daily-backup -o /backups/daily
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Opciones:**
|
|
240
|
+
- `-e, --env <environment>` - Entorno origen. Default: `prod`
|
|
241
|
+
- `-o, --output <path>` - Directorio de salida. Default: `./backups`
|
|
242
|
+
- `--compress` - Comprimir archivo. Default: `true`
|
|
243
|
+
|
|
244
|
+
#### Restore
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# Restaurar en dev
|
|
248
|
+
codecrypto db restore backup_2024-01-15.sql.gz
|
|
249
|
+
|
|
250
|
+
# Restaurar en staging
|
|
251
|
+
codecrypto db restore backup.sql -e staging
|
|
252
|
+
|
|
253
|
+
# Restaurar en prod (requiere --force)
|
|
254
|
+
codecrypto db restore backup.sql -e prod --force
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**Opciones:**
|
|
258
|
+
- `-e, --env <environment>` - Entorno destino. Default: `dev`
|
|
259
|
+
- `--force` - Omitir confirmación (requerido para prod)
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Ayuda
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Ayuda general
|
|
267
|
+
codecrypto --help
|
|
268
|
+
|
|
269
|
+
# Ayuda de comando específico
|
|
270
|
+
codecrypto deploy --help
|
|
271
|
+
codecrypto user --help
|
|
272
|
+
codecrypto user create --help
|
|
273
|
+
codecrypto db --help
|
|
274
|
+
codecrypto db migrate --help
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Ejemplos de Uso Completo
|
|
278
|
+
|
|
279
|
+
### Workflow de Deployment
|
|
280
|
+
```bash
|
|
281
|
+
# 1. Configurar ambiente
|
|
282
|
+
codecrypto config set api.url https://api.myapp.com
|
|
283
|
+
codecrypto config set default.region us-east-1
|
|
284
|
+
|
|
285
|
+
# 2. Ejecutar migraciones
|
|
286
|
+
codecrypto db migrate -e staging
|
|
287
|
+
|
|
288
|
+
# 3. Deploy a staging
|
|
289
|
+
codecrypto deploy -e staging -b develop
|
|
290
|
+
|
|
291
|
+
# 4. Si todo OK, deploy a producción
|
|
292
|
+
codecrypto deploy -e prod -b main
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Setup Inicial de DB
|
|
296
|
+
```bash
|
|
297
|
+
# 1. Crear backup de seguridad
|
|
298
|
+
codecrypto db backup safety-backup -e prod
|
|
299
|
+
|
|
300
|
+
# 2. Ejecutar migraciones
|
|
301
|
+
codecrypto db migrate -e dev
|
|
302
|
+
|
|
303
|
+
# 3. Poblar datos de prueba
|
|
304
|
+
codecrypto db seed --clear
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Gestión de Usuarios
|
|
308
|
+
```bash
|
|
309
|
+
# Crear varios usuarios
|
|
310
|
+
codecrypto user create -u admin -e admin@co.com -r admin
|
|
311
|
+
codecrypto user create -u user1 -e user1@co.com -r user
|
|
312
|
+
codecrypto user create -u guest1 -e guest1@co.com -r guest
|
|
313
|
+
|
|
314
|
+
# Listar usuarios admin
|
|
315
|
+
codecrypto user list -r admin
|
|
316
|
+
|
|
317
|
+
# Eliminar usuario
|
|
318
|
+
codecrypto user delete 5 --force
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Desarrollo
|
|
322
|
+
|
|
323
|
+
### Estructura del Proyecto
|
|
324
|
+
```
|
|
325
|
+
cli-cc/
|
|
326
|
+
├── src/
|
|
327
|
+
│ ├── index.ts # Punto de entrada
|
|
328
|
+
│ └── commands/
|
|
329
|
+
│ ├── deploy.ts # Comando deploy
|
|
330
|
+
│ ├── user.ts # Comando user
|
|
331
|
+
│ ├── config.ts # Comando config
|
|
332
|
+
│ └── database.ts # Comando db
|
|
333
|
+
├── dist/ # Build output
|
|
334
|
+
├── package.json
|
|
335
|
+
├── tsconfig.json
|
|
336
|
+
└── README.md
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Scripts de Desarrollo
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# Instalar dependencias
|
|
343
|
+
npm install
|
|
344
|
+
|
|
345
|
+
# Desarrollo (ejecutar sin compilar)
|
|
346
|
+
npm run dev -- deploy --help
|
|
347
|
+
|
|
348
|
+
# Compilar
|
|
349
|
+
npm run build
|
|
350
|
+
|
|
351
|
+
# Probar compilado
|
|
352
|
+
npm run test
|
|
353
|
+
|
|
354
|
+
# Testear localmente con npm link
|
|
355
|
+
npm link
|
|
356
|
+
codecrypto --help
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Compilar y Probar
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
# Build
|
|
363
|
+
npm run build
|
|
364
|
+
|
|
365
|
+
# Probar comando compilado
|
|
366
|
+
node dist/index.js --help
|
|
367
|
+
node dist/index.js deploy --dry-run
|
|
368
|
+
node dist/index.js user create --interactive
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
## Publicación a NPM
|
|
372
|
+
|
|
373
|
+
### 1. Preparación
|
|
374
|
+
|
|
375
|
+
Asegúrate de tener una cuenta en [npmjs.com](https://www.npmjs.com/) y estar logueado:
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
npm login
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### 2. Actualizar package.json
|
|
382
|
+
|
|
383
|
+
Verifica que tu `package.json` tenga:
|
|
384
|
+
- `name`: Nombre único en NPM (verifica disponibilidad en npmjs.com)
|
|
385
|
+
- `version`: Versión semántica (ej: 1.0.0)
|
|
386
|
+
- `description`: Descripción clara
|
|
387
|
+
- `keywords`: Para búsquedas
|
|
388
|
+
- `author`: Tu información
|
|
389
|
+
- `license`: Tipo de licencia
|
|
390
|
+
- `bin`: Configurado correctamente
|
|
391
|
+
- `files`: Archivos a incluir (opcional)
|
|
392
|
+
|
|
393
|
+
```json
|
|
394
|
+
{
|
|
395
|
+
"name": "codecrypto-cli",
|
|
396
|
+
"version": "1.0.0",
|
|
397
|
+
"files": ["dist", "README.md"],
|
|
398
|
+
...
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### 3. Verificar el nombre
|
|
403
|
+
|
|
404
|
+
```bash
|
|
405
|
+
# Verificar si el nombre está disponible
|
|
406
|
+
npm search codecrypto-cli
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Si está ocupado, cambia el nombre en `package.json`:
|
|
410
|
+
```json
|
|
411
|
+
{
|
|
412
|
+
"name": "@tu-usuario/codecrypto-cli"
|
|
413
|
+
}
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### 4. Build Final
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
npm run build
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### 5. Probar el paquete localmente
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
# Simular publicación (ver qué archivos se incluirán)
|
|
426
|
+
npm pack
|
|
427
|
+
|
|
428
|
+
# Esto crea un archivo .tgz que puedes inspeccionar
|
|
429
|
+
# Descomprímelo y verifica el contenido
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### 6. Publicar
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
# Publicación pública
|
|
436
|
+
npm publish
|
|
437
|
+
|
|
438
|
+
# Si usas scoped package (@usuario/nombre)
|
|
439
|
+
npm publish --access public
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### 7. Verificar
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
# Probar instalación
|
|
446
|
+
npx codecrypto-cli@latest --help
|
|
447
|
+
|
|
448
|
+
# O con el nombre real de tu paquete
|
|
449
|
+
npx tu-paquete --help
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### 8. Actualizar Versiones
|
|
453
|
+
|
|
454
|
+
Cuando hagas cambios:
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
# Patch (1.0.0 -> 1.0.1) - bug fixes
|
|
458
|
+
npm version patch
|
|
459
|
+
|
|
460
|
+
# Minor (1.0.0 -> 1.1.0) - nuevas features
|
|
461
|
+
npm version minor
|
|
462
|
+
|
|
463
|
+
# Major (1.0.0 -> 2.0.0) - breaking changes
|
|
464
|
+
npm version major
|
|
465
|
+
|
|
466
|
+
# Publicar nueva versión
|
|
467
|
+
npm publish
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### Workflow Completo de Publicación
|
|
471
|
+
|
|
472
|
+
```bash
|
|
473
|
+
# 1. Asegurarte que todo funciona
|
|
474
|
+
npm run build
|
|
475
|
+
npm run test
|
|
476
|
+
|
|
477
|
+
# 2. Login a NPM
|
|
478
|
+
npm login
|
|
479
|
+
|
|
480
|
+
# 3. Verificar nombre disponible
|
|
481
|
+
npm search codecrypto-cli
|
|
482
|
+
|
|
483
|
+
# 4. Publicar
|
|
484
|
+
npm publish --access public
|
|
485
|
+
|
|
486
|
+
# 5. Verificar
|
|
487
|
+
npx codecrypto-cli --help
|
|
488
|
+
|
|
489
|
+
# 6. Para actualizaciones futuras
|
|
490
|
+
npm version patch
|
|
491
|
+
npm publish
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### Despublicar (si es necesario)
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
# Solo dentro de las primeras 72 horas
|
|
498
|
+
npm unpublish codecrypto-cli@1.0.0
|
|
499
|
+
|
|
500
|
+
# Despublicar todas las versiones (usar con cuidado)
|
|
501
|
+
npm unpublish codecrypto-cli --force
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
## Mejores Prácticas
|
|
505
|
+
|
|
506
|
+
1. **Versionado Semántico**: Usa [semver](https://semver.org/)
|
|
507
|
+
- MAJOR: Cambios incompatibles
|
|
508
|
+
- MINOR: Nuevas funcionalidades compatibles
|
|
509
|
+
- PATCH: Bug fixes
|
|
510
|
+
|
|
511
|
+
2. **README**: Mantén documentación actualizada
|
|
512
|
+
|
|
513
|
+
3. **CHANGELOG**: Documenta cambios en cada versión
|
|
514
|
+
|
|
515
|
+
4. **Testing**: Prueba antes de publicar
|
|
516
|
+
|
|
517
|
+
5. **Git Tags**: Crea tags para cada versión
|
|
518
|
+
```bash
|
|
519
|
+
git tag v1.0.0
|
|
520
|
+
git push --tags
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
## Troubleshooting
|
|
524
|
+
|
|
525
|
+
### Error: "command not found"
|
|
526
|
+
- Verifica que `bin` en package.json apunte a `dist/index.js`
|
|
527
|
+
- El archivo debe tener shebang: `#!/usr/bin/env node`
|
|
528
|
+
- Asegúrate de compilar: `npm run build`
|
|
529
|
+
|
|
530
|
+
### Error: "permission denied"
|
|
531
|
+
```bash
|
|
532
|
+
# Linux/Mac
|
|
533
|
+
chmod +x dist/index.js
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### Error al publicar
|
|
537
|
+
- Verifica que estés logueado: `npm whoami`
|
|
538
|
+
- El nombre no existe: Cambia el nombre en package.json
|
|
539
|
+
- Necesitas acceso: Usa `--access public` para scoped packages
|
|
540
|
+
|
|
541
|
+
## Recursos
|
|
542
|
+
|
|
543
|
+
- [Commander.js](https://github.com/tj/commander.js) - Framework CLI
|
|
544
|
+
- [Chalk](https://github.com/chalk/chalk) - Colores en terminal
|
|
545
|
+
- [Inquirer](https://github.com/SBoudrias/Inquirer.js) - Prompts interactivos
|
|
546
|
+
- [Ora](https://github.com/sindresorhus/ora) - Spinners
|
|
547
|
+
- [NPM Publishing Guide](https://docs.npmjs.com/cli/v10/commands/npm-publish)
|
|
548
|
+
|
|
549
|
+
## Licencia
|
|
550
|
+
|
|
551
|
+
MIT
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,aAAa,SACgB,CAAC"}
|