npm Warm deprecated bower@1.8.8 migración a Yarn(Legacy code)AngularJS
Aunque migrar de Bower a Yarn parece una tarea sencilla durante el proceso pueden surgir algunos problemas o dudas que me gustaría documentar para que puedan servir de ayuda.
Legacy code o código heredado es código fuente relacionado con una tecnología sin soporte técnico. Suele ser código que está en producción y por lo tanto funciona pero que por norma general no dispone de test o pruebas de regresión. En este artículo se busca mantener el mismo comportamiento para reducir al máximo el riesgo del impacto del cambio.
Sorpresa. Nos toca mantener un proyecto AngularJS y al actualizar dependencias (npm install bower) aparece el siguiente mensaje.
Nota: La configuración del bower se guarda en bower.json y .bowerrc (Ruta de destino).
Menos mal que tenemos un enlace: https://bower.io/blog/2017/how-to-migrate-away-from-bower/ Si leemos el documento nos recomienda el paso a Yarn .
¿Qué es Yarn? Yarn es un gestor de paquetes como Bower y como NPM.
¿Por qué usar Yarn y no NPM? Sencillamente porque es más rápido (tiempo=Money) incluso que la nueva versión 5 de NPM.
¿Por dónde empezamos?
El artículo antes referido nos da las pautas.
- Si NO tienes fichero package.json crea uno.
npm init
- Instalar Yarn (hay varias opciones) easy.
npm install yarn
- Instalar bower-away
yarn global add bower-away
- Ejecutar bower-away
bower-away
Nota: Si obtenemos un Error: ENOENT: no such file or directory, es que en la carpeta donde bower descargaba los paquetes hay una carpeta que no es un paquete. Mover para restaurar tras el proceso.
- Ejecutamos bower-away para que analice los cambios a realizar en package.json
bower-away –diff
- Ejecutamos bower-away para que aplique los cambios a package.json.
bower-away — apply
Nota: Si bower-away — diff no consigue encontrar la dependencia dejará en package.json una ruta git://
El cambio es sencillo pero FUNDAMENTAL, eliminamos git://github.com/ y .git
Borramos la carpeta de los antiguos paquetes descargados por bower fichero .bowerrc
Ruta de descargar paquetes
Los ficheros por defecto se descargan en la carpeta node_modules como NPM, para modificar la ruta y usar la misma ruta que bower fichero .bowerrc se debe crear fichero .yarnrc y añadir
modules-folder <path>
Por defecto bower-away configura los paquetes para que se descarguen a la subcarpeta @bower_components , simplemente hay que eliminar en el package.json por cada paquete la subcarpeta
Y eliminar el script postinstall de package nuget “scripts”: { },
POR FIN INSTALAMOS DEPENDIENCIAS
yarn install
Nota: Si al descargar las dependencias tenemos un error revisar Nota de punto anterior referencia a git