Publicar en npm y versionado semántico
Automatizar publicaciones con changesets o semantic-release y publicar paquetes con ámbito en el registro de npm
Publicar en npm y versionado semántico es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
npm publish --dry-run
Antes de publicar, ejecute siempre npm publish --dry-run. Esto simula la publicación sin subir nada realmente y le muestra exactamente qué archivos se incluirían, sus tamaños y el contenido del tarball del paquete. Permite detectar errores comunes, como incluir accidentalmente archivos de origen u omitir el directorio dist.
Control de los archivos publicados
Controle lo que se publica mediante el campo files de package.json: "files": ["dist", "README.md"]. Este enfoque de lista blanca es más seguro que .npmignore (que funciona como una lista negra y puede exponer archivos confidenciales si olvida añadirlos). Incluya siempre dist, las declaraciones de tipos y la documentación. No incluya nunca src, tests ni node_modules.
Conceptos básicos del versionado semántico
Los paquetes de npm siguen el versionado semántico (semver): MAJOR.MINOR.PATCH. Incremente MAJOR cuando haya cambios incompatibles (eliminar props o cambiar firmas de la API). Incremente MINOR para nuevas funcionalidades compatibles con versiones anteriores (nuevos componentes o nuevas props opcionales). Incremente PATCH para correcciones de errores compatibles con versiones anteriores. La versión 0.x.x se considera preestable: cualquier elemento puede sufrir cambios incompatibles.
Versiones preliminares
Los identificadores de versión preliminar indican que una versión aún no está lista para producción: 1.0.0-alpha.1 para compilaciones experimentales iniciales, 1.0.0-beta.2 para versiones con todas las funcionalidades, pero que aún pueden contener errores, y 1.0.0-rc.1 (candidato a versión final) para versiones listas para las pruebas finales. Publique las versiones preliminares con npm publish --tag beta para que no se conviertan en la instalación predeterminada.
La herramienta Changesets
Changesets es la herramienta estándar para gestionar el versionado de paquetes y los registros de cambios en bibliotecas de componentes. Flujo de trabajo: los colaboradores ejecutan yarn changeset add para registrar qué ha cambiado y el tipo de cambio (major/minor/patch). CI ejecuta yarn changeset version para actualizar las versiones de los paquetes. La publicación ejecuta yarn changeset publish para subirlos a npm.
Generación automática de CHANGELOG
Changesets genera y mantiene automáticamente CHANGELOG.md a partir de los archivos de changeset confirmados por los colaboradores. Cada entrada incluye el número de versión, la fecha de publicación y las descripciones de los cambios. Así se crea un historial legible de cada versión sin tener que mantener manualmente el registro de cambios.
semantic-release como alternativa
semantic-release es una herramienta de versionado totalmente automatizada que determina la siguiente versión a partir de mensajes de commit convencionales (feat: → minor, fix: → patch, BREAKING CHANGE: → major). Actualiza la versión, genera el registro de cambios y publica en npm; todo se activa mediante CI al fusionar cambios en main. No requiere gestionar versiones manualmente.
Acceso de npm: público frente a restringido
Los paquetes sin ámbito (my-component) son siempre públicos. Los paquetes con ámbito (@myorg/my-component) tienen acceso restringido (privado) de forma predeterminada; publíquelos como públicos con npm publish --access public. Los paquetes restringidos requieren una cuenta de pago de npm o una organización. Confirme la configuración de acceso antes de realizar su primera publicación.
Provenance de npm
La provenance de npm vincula su paquete publicado con su commit específico de git de forma verificable. Actívela con npm publish --provenance en GitHub Actions. Los consumidores pueden comprobar que el paquete instalado se compiló a partir del commit exacto del código fuente que aparece en la página del registro de npm. Esto mejora considerablemente la seguridad de la cadena de suministro.
Retirada de versiones antiguas
Cuando una versión contiene un error crítico o un cambio incompatible, retírela: npm deprecate your-package@1.2.3 "Security vulnerability, upgrade to 1.2.4". npm muestra una advertencia de retirada a cualquiera que instale esa versión. Esto no elimina la versión (npm no borra de forma predeterminada las versiones publicadas), sino que avisa a los usuarios para que actualicen.
Nombres de paquetes con ámbito
Los paquetes con ámbito usan el formato @scope/package-name. El ámbito suele ser su nombre de usuario de npm o el nombre de su organización. Los paquetes con ámbito dejan claro quién mantiene el paquete y evitan conflictos de nombres con los paquetes sin ámbito. Use paquetes con ámbito para paquetes privados y para paquetes de código abierto asociados con su organización.
Versionado semántico: MAJOR frente a MINOR
Según el versionado semántico, ¿cuándo debe incrementarse el número de versión MAJOR?
Resumen de la lección: publicación y versionado
Use npm publish --dry-run para obtener una vista previa y el campo files para controlar lo que se publica. Versionado semántico: MAJOR para cambios incompatibles, MINOR para nuevas funcionalidades y PATCH para correcciones. Las versiones preliminares usan las etiquetas -alpha/-beta/-rc. Changesets automatiza el versionado y la generación de CHANGELOG en bibliotecas colaborativas. semantic-release automatiza el proceso a partir de commits convencionales. Active --provenance para mejorar la seguridad de la cadena de suministro. Retire las versiones con errores mediante npm deprecate.
Preguntas frecuentes
¿La lección «Publicar en npm y versionado semántico» es gratis?
Sí — el texto completo de «Publicar en npm y versionado semántico» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Publicar en npm y versionado semántico»?
Automatizar publicaciones con changesets o semantic-release y publicar paquetes con ámbito en el registro de npm Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Publicar en npm y versionado semántico»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Crear bundles con Rollup y tsup para bibliotecas
- Salida dual de paquetes ESM y CJS
- Dependencias peer y tree shaking
- Publicar en npm y versionado semántico