Y comparte código con tu equipo interno.
Esta es una receta para usar git y npm para distribuir su codigo con equipos internos.
Se debe conocer acerca de Git, Tags, NPM y sus archivos de configuración.
Contexto
NPM ayuda a distribuir y compartir codigo entre desarrolladores, usualmente la forma de compartir codigo es creando un package.json y con npm publish se puede facilmente compartir codigo con el mundo, pero que pasa en caso de querer compartir el código solo con un pequeño grupo de personas? en mi poca experiencia hay dos formas de hacerlo.
- Utilizando ‘scope packages’ o
- Utilizando Git con tags
Para la solución 1, tiene que pagar por el servicio y se puede documentar acercar del servicio en https://docs.npmjs.com/creating-and-publishing-private-packages.
Como alternativa se puede utilizar un repositorio Git sin importar su ubicación (Github, bitbucket, su propio servidor, etc) y usando NPM se puede distribuir el codigo. En este caso solo personas con el acceso al repositorio puede instalar y actualizar el paquete.
La implementación que vamos a revisar, es acerca de esta segunda.
Implementación
Configurar el Repositorio Git
No hay nada de especial en este paso, solo se necesita crear un repositorio de Git en el lugar que considere adecuado ejemplo Githb, Bitbucket, etc, pero el concepto principal aqui, es la seguridad, recuerde que si una persona tiene acceso al repo, esa persona podra instalar el paquete.
Crear un package.json
Es realmente facil crear un package.json, el archivo se puede crear manualmente con la estructura correspondiente o aun mas facil, simplemente ejecutando el siguiente comando
> npm init
Será guiado paso a paso con preguntas tales como el nombre del proyecto, el punto de entrada, etc.
Acerca del Versionamiento del Paquete
Una vez tenga el package.json y revise el contenido, notará que hay un attributo particular llamado “version”, esta versión tiene que seguir el formato semver y luce como 1.0.0, puede obtener mas información en https://semver.org/
Esta “version” es realmente importante porque es un estandar y sus clientes (equipos internos usando su paquete en otros proyectos) podran definir que actualizaciones desean incluir.
Por ejemplo, Es comun que un cliente quiera incluir un version mayor especifica (digamos la 1.2) con todos los cambios menores (es decir 1.2.0 , 1.2.1 etc), en este caso particular el cliente referenciará su paquete con el siguiente patron semver^1.2 y en teoria si el paquete respeta la filosofia semver, su cliente no tendra problemas ejecutando npm update porque el paquete va a ser retrocompatible. puede obtener mas detalles en https://docs.npmjs.com/about-semantic-versioning
Creando Git tags
Con Git tags (o branches) puede indicar que commits se relacionan con una versión especifica de su paquete, si en package.json tiene la version 1.0.0, debe crear un tag con este mismo numero versión. Se puede encontrar mas documentación acerca de las Git tags en el siguiente enlace https://git-scm.com/book/en/v2/Git-Basics-Tagging
Probar el paquete
Como ejercicio vamos a crear un proyecto de prueba usando la app cowsay, usualmente basta con ejecutar el comando node install cowsay, pero por cuestiones practicas vamos a realizar la instalación desde el repositorio de Github
Cowsay imprimará una vaca con el texto que se le indique.
Iniciar el proyecto
- Crear una carpeta llamada test
- Ejecutar npm init y aceptar todas las opciones por defecto
- NPM ha creado un archivo package.json con el siguiente contenido
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Instalar Cowsay desde el repositorio
El repositorio de Cowsay se encuentra ubicado en https://github.com/piuccio/cowsay y las tags actuales al momento de escribir esta receta son
Supongamos que para nuestro proyecto solo queremo trabajar con la version 1.2 y todos los pequeños arreglos que le realicen, eso quiere decir que nuestra expresion de semver deberia ser 1.2.x, asi NPM instalará v1.2.1 y en caso de futuros arreglos reportados en el repositorio y nostros ejecutando el comando npm update, el sistema tomará todos esos cambios (como 1.2.3, 1.2.4, 1.2.5 y asi sucesivamente).
para lograr el objetivo previo, necesitamos ejecutar el siguiente comando
> npm install https://github.com/piuccio/cowsay#semver:1.2.x
Ahora podemos revisar el package.json y veremos las siguientes lineas
"dependencies": {
"cowsay": "github:piuccio/cowsay#semver:1.2.x"
}
Y para el caso de package.lock.json el cual es un archivo que registra la version especifica instalada, veremos las siguientes lineas relacionadas con la app Cowsay
"node_modules/cowsay": {
"version": "1.2.1",
"resolved": git+ssh://git@github.com/piuccio/cowsay.git#e3ecdc5e07558afc33a2f17ff8cc450fc306af4f",
"license": "MIT",
"dependencies": {
"get-stdin": "^5.0.1",
"optimist": "~0.6.1",
"string-width": "~2.1.1"
}
Como se puede ver la version mas reciente que aplica el patron 1.2.x es la actualmente instalada version 1.2.1.
Usando Cowsay
Desde una terminal en la raiz del proyecto, ejecuta el siguiente comando
> npx cowsay hello
y obtendrá
Leave a Reply