swanix / ui

Experimental UI library
http://swanix.org/ui
MIT License
9 stars 3 forks source link

Actualizar dependencias en Node.js #49

Closed sebastianserna closed 7 years ago

sebastianserna commented 7 years ago

El archivo package.json del repositorio se creó en 2015 y la mayoría de dependencias de Node.js están desactualizadas. Adicionalmente cuando cloné el proyecto en otro equipo y escribí el comando npm install me dí cuenta de que las dependencias instaladas tenían un número de versión diferente y esto produjo comportamientos inesperados: al ejecutar gulp watch se generó nuevo código CSS sin haber hecho ningún cambio (me pedía hacer commit) algo que puede ser muy molesto para una persona nueva que apenas está probando el proyecto.

Después de investigar entendí que al instalar un nuevo módulo desde npm con el flag --save se agrega en el archivo package.json el símbolo ^ antes del número de versión (Ej: ^2.0.4). Con esta indicación le decimos a npm que instale la última versión (menor) compatible según el versionamiento semántico. Sin embargo, es algo riesgoso en algunos casos dejar que npm decida cuál versión instalar. Como explican en esta guía de buenas prácticas en Node:

If you use the --save flag to auto-update package.json, npm installs the packages with a leading carat (^), putting your modules at risk of drifting to different versions. This is fine for module development, but not good for apps, where you want to keep consistent dependencies between all your environments.

Por ese motivo voy a actualizar a la última versión estable de cada una de las dependencias y dejaré el archivo package.json con las versiones exactas (sin el ^) para evitar comportamientos inesperados luego de instalar los módulos de Node.js con npm install.

marti1125 commented 7 years ago

lo puedo hacer yo se puede hacer jejejeje

sebastianserna commented 7 years ago

@marti1125 gracias! preciso estaba haciendo eso hoy para no tener problemas más adelante. Acabo de actualizarlo, si quieres puedes hacer la prueba con una nueva instalación desde cero para verificar que se instalen con la versión específica.

Ya documenté en el README los módulos de Node.js que estoy utilizando para desarrollo definidos en el archivo package.json:

Módulo Versión Descripción
browser-sync 2.18.2 Permite ejecutar un servidor local y visualizar nuestro sitio en múltiples navegadores remotos en tiempo real.
gulp 3.9.1 Módulo oficial de Gulp para Node.js
gulp-install 0.6.0 Instala de forma automática paquetes y dependencias de npm, bower, tsd, y pip si la configuración asociada se encuentra en el gulpfile.
gulp-autoprefixer 3.1.1 Permite automatizar la escritura de prefijos CSS para cada navegador web (moz, webkit, etc).
gulp-sass 2.3.2 Permite compilar código Sass en CSS sin necesidad de instalar la gema de Sass de Ruby, solo desde Node.js
gulp-clean-css 2.0.13 Permite minificar el código CSS eliminando espacios y comentarios. Este tipo de prácticas se utilizan para generar código listo para un ambiente de producción.
gulp-rename 1.2.2 Permite renombrar archivos con el nombre que le especifiquemos
gulp-concat 2.6.1 Permite fusionar archivos en uno solo para optimizar el tiempo de carga de dependencias en un sitio web (muy utilizado para combinar archivos CSS o archivos JavaScript).
gulp-twig 0.7.0 Motor de plantillas basado en Twig.js. Se utiliza en Swan para crear layouts HTML con partials reutilizables.
gulp-plumber 1.1.0 Permite manejar e identificar errores en tiempo de ejecución.
gulp-sourcemaps 1.9.1 Permite generar sourcemaps para el código Sass y otros.
gulp-uglify 2.0.0 Permite minificar el código JavaScript con UglifyJS.
sassdoc 2.1.20 Genera una documentación básica del código Sass utilizado.