Dependencias
Instalando dependencias
Para instalar una dependencia, ejecutar npm install nombre_paquete
:
Ejemplo:
➜ package-test -> npm install signale
npm WARN project-test@0.1.0 No repository field.
+ signale@1.4.0
updated 1 package and audited 24 packages in 1.785s
found 0 vulnerabilities
Se actualizó package.json:
{
"name": "project-test",
"version": "0.1.0",
"description": "Project test",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Danilo Mérida",
"license": "MIT",
"dependencies": {
"signale": "^1.4.0"
}
}
Echemos un vistazo a la carpeta node_modules y veamos el árbol de dependencias:
➜ package-test -> ls -lah node_modules
total 0
drwxr-xr-x 26 danimerida2000 staff 832B Aug 25 19:57 .
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:49 ..
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 ansi-styles
drwxr-xr-x 9 danimerida2000 staff 288B Aug 25 19:29 chalk
drwxr-xr-x 9 danimerida2000 staff 288B Aug 25 19:29 color-convert
drwxr-xr-x 9 danimerida2000 staff 288B Aug 25 19:29 color-name
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 error-ex
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 escape-string-regexp
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 figures
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 find-up
drwxr-xr-x 9 danimerida2000 staff 288B Aug 25 19:29 graceful-fs
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 has-flag
drwxr-xr-x 10 danimerida2000 staff 320B Aug 25 19:29 is-arrayish
drwxr-xr-x 7 danimerida2000 staff 224B Aug 25 19:29 json-parse-better-errors
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 load-json-file
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 locate-path
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 p-limit
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 p-locate
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 p-try
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 parse-json
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 path-exists
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 pify
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 pkg-conf
drwxr-xr-x 8 danimerida2000 staff 256B Aug 25 19:57 signale
drwxr-xr-x 6 danimerida2000 staff 192B Aug 25 19:29 strip-bom
drwxr-xr-x 7 danimerida2000 staff 224B Aug 25 19:29 supports-color
➜ package-test -> npm ls
[email protected] /Users/danimerida2000/Downloads/package-test
└─┬ [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── [email protected] deduped
└─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
├── [email protected]
└── [email protected]
Dependencias de desarrollo
Hay que tomar en cuenta que no todas las dependencias son requeridas para producción, algunas librerías son utilizadas para el proceso de desarrollo.
Cuando ejecutamos
run npm
solamente podremos ver el árbol de dependencias sin considerar las dependencias de desarrollo de los paquetes instalados.
Para instalar una dependencia de desarrollo, ejecutamos npm install --save-dev nombre_paquete
.
Ejemplo:
➜ package-test -> npm install --save-dev json-loader
npm WARN [email protected] No repository field.
+ [email protected]
added 1 package from 1 contributor and audited 25 packages in 2.697s
found 0 vulnerabilities
➜ package-test -> cat package.json
{
"name": "project-test",
"version": "0.1.0",
"description": "Project test",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Danilo Mérida",
"license": "MIT",
"dependencies": {
"signale": "^1.4.0"
},
"devDependencies": {
"json-loader": "^0.5.7"
}
}
➜ package-test -> npm ls
[email protected] /Users/danimerida2000/Downloads/package-test
├── [email protected]
└─┬ [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── [email protected] deduped
└─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
├── [email protected]
└── [email protected]
Dependencias de producción
Para ignorar las dependencias de desarrollo, usamos el flag --production.
Ejemplo:
➜ package-test -> npm install --production
npm WARN [email protected] No repository field.
added 24 packages from 6 contributors and audited 25 packages in 1.119s
found 0 vulnerabilities
➜ package-test -> npm ls
[email protected] /Users/danimerida2000/Downloads/package-test
└─┬ [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── [email protected] deduped
└─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
├── [email protected]
└── [email protected]
Semantic Versioning (SemVer)
Fundamentalmente está compuesto por 3 números separados por puntos.
La razón de que se actualice el número de versión es para indicar que hubo cambios en el paquete.
Versionamiento
Major: Cambios que rompen una API o es incompatible con versiones anteriores.
Minor: Indica que hubieron cambios de extensión de funcionalidades, pero garantizando retrocompatibilidad, no debería de afectar el paquete.
Patch: Corrección de errores (bugs).
Por predeterminado npm install
utiliza el prefijo circunflejo o signo de intercalación (^) cuando instala una nueva dependencia y lo guarda en package.json.
Símbolo
Versiones
Etapa
Observaciones
1.0.0
Primer release
Inicia con 1.0.0
Virgulilla (~)
1.0 - 1.0.x - ~1.0.1
Patch release
Compatibilidad con versiones anteriores; la solución de errores (bugs).
Circunflejo (^)
1.x.x (1.minor.patch)
Minor release
No es lo mismo ^0.0.0 con 0.x.x, en npm existen ciertos rangos como ^1.2.3 ^0.2.5 ^0.0.4; compatibilidad con versiones anteriores y nuevas funcionalidades.
* - x
Major release
Incrementa el primer dígito, y resetea los demás a 0; cambios disruptivos sin garantizar compatibilidad con versiones anteriores.
Especificación
Software que utilicen el versionamiento semántico debe declararse como una API pública.
No deben ser enteros negativos, ni contener ceros iniciales, cada elemento debe incrementar numéricamente.
Una vez versionado el paquete, no puede modificarse, para ello debe generarse una nueva versión.
Para iniciar la fase de desarrollo, considerar la versión major (0.x.x) y no se debe considerar una versión estable.
Después de publicar la primer versión estable (1.0.0), el incremento de los elementos (1.x.x) dependen de los cambios que se hagan.
La versión Patch (major.x.x > 0), debe incrementar con la solución de errores (bugs) que sean compatibles con la versión.
La versión Minor, debe incrementar, si hay nuevas funcionalidades o si alguna funcionalidad se marcó como obsoleto (deprecated), hay que considerar el reseteo del elemento Patch a 0.
La versión Major, debe incrementar si hay cambios incompatibles, los elementos Minor y Patch se deben resetear a 0.
Ejemplos: https://regex101.com/r/vkijKf/1/
Last updated
Was this helpful?