1. Crear un nuevo proyecto con NestJs
nest new nest-library
2. Agregar nuestro código
Puede ser tan simple o tan complejo como queramos, en este caso solo serán 3 funciones
3. Modificar el archivo main.ts
Para exportar todo lo que tengamos en nuestro archivo test.ts
4. Crear el repositorio en GitHub
Nota:
5. Modificar el archivo package.json
"name": "@mecvxd/nest-library",
"version": "0.0.1",
"description": "NestJS npm package test",
"author": "Mauricio Covarrubias <mauricioecovarrubias@hotmail.com>",
"private": false,
"license": "MIT",
"readmeFilename": "README.md",
"main": "dist/test.js",
"files": [
"dist/**/*",
"*.md"
],
name:Â Â @usuario-GitHub/nombre-modulo
version: Version del modulo*
private:Â false
*Importante cambiarlo cuando hagamos una nueva version, sino marcará un error
5. Modificar el archivo package.json
"repository": "https://github.com/MECVxD/nest-library",
"publishConfig": {
"registry": "https://npm.pkg.github.com"
},
Esta linea se copia tal cual
Aquà agregamos la liga a nuestro repo de GutHub
5. Modificar el archivo package.json
QuedarÃa de la siguiente manera
6. Generar el token de acceso en GitHub
Settings>Developer settings>Personal access tokens> Generate new token
Agregamos un nombre y seleccionamos las siguientes opciones:
Este nos permitirá trabajar con módulos npm en GitHub, tanto para subirlos como para usarlos en proyectos
7. Agregar el archivo .npmrc al proyecto
Finalmente no olvides agregar el archivo .npmrc al .gitignore ya que contiene el token de acceso.
registry=https://npm.pkg.github.com/OWNER
//npm.pkg.github.com/:_authToken=GITHUB_TOKEN
Ahora subimos cambios al repo remoto y en la consola de nuestro proyecto ejecutamos el siguiente comando
npm publish
Si todo sale correctamente te saldrá un mensaje de que el paquete fue publicado con éxito.
Despues de unos minutos podras visualizar el paquete en tu repositorio de GitHub
Y estará lista para instalar en cualquier proyecto que use NodeJs
Â
No olvides agregar el archivo .npmrc, al proyecto donde quieras usar la librerÃa, ya que sin el no podrás instalar ningún paquete npm que este alojado en GitHub Packages
En caso de que el modulo no sea de tu propiedad deberas cambiar el nombre de usuario por el nombre de usuario del dueño del paquete
Una vez instalado podrás verlo en las dependencias del package.json
Â
Finalmente podrás invocarlo como cualquier otro paquete npm.
Â
Algunas consideraciones que debes tener el cuenta:
Â
1. El proceso se puede automatizar con GitHub Actions
Â
2. Puedes usar dependencias sin problemas ya que al instalar la libreria, esta instalara tambien sus dependencias
Â
3. Debido a lo anterior podrÃan presentarse problemas si las dependencias están deprecadas.
Â
4. En la documentación de NestJS, se explica que puedes generar librerÃas y exportarlas como módulos npm, sin embargo no explica como hacerlo
Link al repo donde podrás ver los archivos y código de esta presentacion.
Â
https://github.com/MECVxD/nest-library
Â
En el README.md dejaré la información que me fue útil para hacer la librerÃa, esta en una versión antigua de nest pero igual te puede servir.