FNM: Múltiples versiones de NodeJS
Muchas veces cuando trabajamos con varias aplicaciones necesitamos gestionar diferentes versiones de NodeJS para cada proyecto. Con Fnm (Fast Node Manager) podremos hacer esto y mucho más rápido que NVM al ser nativo y escrito en Rust.
Primero hay que decir que este está disponible para cualquier plataforma (Linux, Mac OS y Windows), nosotros en este articulo estamos usando Mac OS para haceros una referencia de su uso y utilidades prácticas, las cuales son iguales para cualquier plataforma.
Para su instalación recomendamos utilizar uno de los 3 métodos mencionados en su repositorio oficial, hay versiones publicadas tanto en Brew (para Mac OS) como Scoop (en el caso de Windows), en Linux se debería usar Cargo el cual es el gestor de dependencias de Rust.
Sin más que explicar, vamos a por lo más interesante de Fnm.
¿Cómo podemos exigir el uso de una versión especifica en nuestro proyecto?
Al ser este compatible con los archivos .nvmrc o .node-version también usados por NVM (otro proyecto muy similar, más maduro que Fnm, pero lento).
Primero que nada, para instalar una versión vamos a necesitar ejecutar el siguiente comando:
fnm install --lts
El comando anterior nos instalará la última versión LTS (Long Term Support) de NodeJS, la cual será la que tendrá más mantenimiento a lo largo de los años.
Lo siguiente ya será usar NodeJS o NPM como queramos, nosotros saltaremos esa parte para ir directamente al uso en equipos de desarrollo donde queramos forzar una versión de NodeJS para un proyecto específico, así el resto de desarrolladores se verán forzados a usar esta misma, para ello instalaremos esta con:
fnm install 12.16.1
Y, a continuación, crearemos un archivo .nvmrc en la raíz de nuestro proyecto como el siguiente:
Finalmente agregamos una linea a nuestro apartado de "scripts" de nuestro archivo package.json:
Esa última linea (la de "preinstall") se ejecutará cada vez que se ejecute un: yarn add, yarn install, npm install, etc...
De este modo forzamos que en dicho proyecto se use la versión preestablecida de NodeJS para maximizar compatibilidad a la hora de construir con Webpack o cualquier herramienta que estemos usando para el mismo.
Por todo lo demás, lo podréis encontrar en su repositorio oficial o simplemente con un:
fnm help