flurix-developer
Version:
Generador de documentación desde comentarios en JS/TS/PY usando Python
261 lines (217 loc) • 5.28 kB
Markdown
# Guía para Crear y Publicar Paquetes NPM
## Índice
1. [Preparación del Entorno](#preparación-del-entorno)
2. [Estructura del Proyecto](#estructura-del-proyecto)
3. [Configuración del Paquete](#configuración-del-paquete)
4. [Desarrollo](#desarrollo)
5. [Pruebas](#pruebas)
6. [Publicación](#publicación)
7. [Mantenimiento](#mantenimiento)
## Preparación del Entorno
### Requisitos Previos
- Node.js instalado (versión LTS recomendada)
- Cuenta en npm (registro en [npmjs.com](https://www.npmjs.com))
- Git instalado
- Editor de código (VS Code recomendado)
### Configuración Inicial
```bash
# Verificar versiones instaladas
node --version
npm --version
# Configurar npm (si es primera vez)
npm login
npm config set init-author-name "Tu Nombre"
npm config set init-author-email "tu@email.com"
npm config set init-license "MIT"
```
## Estructura del Proyecto
### Estructura Básica Recomendada
```
mi-paquete/
├── src/ # Código fuente
│ ├── index.js # Punto de entrada principal
│ └── utils/ # Utilidades y helpers
├── tests/ # Pruebas unitarias
├── examples/ # Ejemplos de uso
├── .gitignore # Archivos ignorados por git
├── .npmignore # Archivos ignorados por npm
├── package.json # Configuración del paquete
├── README.md # Documentación principal
└── LICENSE # Licencia del proyecto
```
### Archivos de Configuración
#### .gitignore
```gitignore
node_modules/
.DS_Store
coverage/
.env
*.log
```
#### .npmignore
```gitignore
tests/
examples/
.git/
.github/
coverage/
.env
*.log
```
## Configuración del Paquete
### Inicialización
```bash
# Crear directorio del proyecto
mkdir mi-paquete
cd mi-paquete
# Inicializar proyecto npm
npm init
```
### package.json Básico
```json
{
"name": "mi-paquete",
"version": "1.0.0",
"description": "Descripción de mi paquete",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "tsc",
"test": "jest",
"lint": "eslint src/**/*.ts",
"prepare": "npm run build"
},
"keywords": ["keyword1", "keyword2"],
"author": "Tu Nombre",
"license": "MIT",
"devDependencies": {
"@types/node": "^16.0.0",
"typescript": "^4.5.0",
"jest": "^27.0.0",
"@types/jest": "^27.0.0",
"ts-jest": "^27.0.0"
}
}
```
## Desarrollo
### Configuración de TypeScript
```json
// tsconfig.json
{
"compilerOptions": {
"target": "es2018",
"module": "commonjs",
"declaration": true,
"outDir": "./dist",
"strict": true,
"esModuleInterop": true
},
"include": ["src"],
"exclude": ["node_modules", "tests"]
}
```
### Estructura de Código
```typescript
// src/index.ts
export interface Config {
// Define la interfaz de configuración
}
export class MiClase {
constructor(private config: Config) {}
public metodo(): void {
// Implementación
}
}
```
## Pruebas
### Configuración de Jest
```javascript
// jest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/tests/**/*.test.ts'],
collectCoverage: true,
coverageDirectory: 'coverage'
};
```
### Ejemplo de Prueba
```typescript
// tests/index.test.ts
import { MiClase } from '../src';
describe('MiClase', () => {
it('debería funcionar correctamente', () => {
const instancia = new MiClase({});
expect(instancia.metodo()).toBeDefined();
});
});
```
### Ejecutar Pruebas
```bash
# Ejecutar pruebas
npm test
# Ejecutar pruebas con cobertura
npm test -- --coverage
```
## Publicación
### Preparación para Publicación
1. Actualizar versión en package.json
2. Asegurar que todas las pruebas pasan
3. Verificar que la documentación está actualizada
4. Revisar que .npmignore está configurado correctamente
### Comandos de Publicación
```bash
# Verificar estado del paquete
npm pack
# Publicar versión
npm publish
# Publicar versión beta
npm publish --tag beta
```
### Control de Versiones
```bash
# Actualizar versión patch (1.0.0 -> 1.0.1)
npm version patch
# Actualizar versión minor (1.0.0 -> 1.1.0)
npm version minor
# Actualizar versión major (1.0.0 -> 2.0.0)
npm version major
```
## Mantenimiento
### Buenas Prácticas
1. Mantener documentación actualizada
2. Responder issues y pull requests
3. Mantener dependencias actualizadas
4. Seguir semver para versiones
### Actualización de Dependencias
```bash
# Verificar dependencias desactualizadas
npm outdated
# Actualizar dependencias
npm update
# Actualizar a última versión
npm install package@latest
```
### Monitoreo
```bash
# Ver estadísticas del paquete
npm stats
# Ver dependencias
npm ls
```
## Diagrama de Flujo de Publicación
```mermaid
graph TD
A[Desarrollo] --> B[Pruebas]
B --> C{¿Pasan las pruebas?}
C -->|No| A
C -->|Sí| D[Actualizar Versión]
D --> E[Publicar]
E --> F[Verificar Publicación]
F --> G[Monitorear]
```
## Recursos Adicionales
- [Documentación oficial de npm](https://docs.npmjs.com/)
- [Guía de TypeScript](https://www.typescriptlang.org/docs/)
- [Documentación de Jest](https://jestjs.io/docs/getting-started)
- [Semantic Versioning](https://semver.org/)