# Configurar el uso de variables de entorno en package.json para Windows
Español | English
Para los que somos usuarios de Windows y a la vez desarrolladores de aplicaciones con Node.js, es común que nos encontremos con problemas que los usuarios de Linux/MAC felizmente desconocen (otros tienen seguro…).
Uno de esos problemas está relacionado con el uso de variables de entorno definidas en los scripts configurados de nuestros ficheros package.json:
{
...,
"scripts": {
...,
"generate-es-v1": "LANGUAGE=ES VERSION=1 npx nuxt generate",
"generate-es-v2": "LANGUAGE=ES VERSION=2 npx nuxt generate",
"generate-en-v1": "LANGUAGE=EN VERSION=1 npx nuxt generate",
"generate-en-v2": "LANGUAGE=EN VERSION=2 npx nuxt generate",
...
},
...,
}
package.json
En este caso, cuando ejecutemos desde la consola de Windows el comando npm run generate-es-v1
, obtendremos el error 'LANGUAGE' is not recognized as an internal or external command, operable program or batch file.
# cross-env al rescate
Una forma de solucionar este problema es hacer nuestros scripts multiplataforma, añadiendo para ello el paquete cross-env (opens new window) como dependencia de desarrollo adicional a nuestro proyecto. Este paquete se encargará de añadir nuestras variables de entorno antes de que se ejecute nuestro script.
Para ello tendremos que:
- Instalar el paquete con
npm install --save-dev cross-env
. - Añadir un nuevo comando
cross-env
al principio de nuestros scripts:{ ..., "scripts": { ..., "generate-es-v1": "cross-env LANGUAGE=ES VERSION=1 npx nuxt generate", "generate-es-v2": "cross-env LANGUAGE=ES VERSION=2 npx nuxt generate", "generate-en-v1": "cross-env LANGUAGE=EN VERSION=1 npx nuxt generate", "generate-en-v2": "cross-env LANGUAGE=EN VERSION=2 npx nuxt generate", ... }, ..., }
- Y finalmente ejecutar nuestro script como teníamos previsto
npm run generate-es-v1
.
Es cierto que el proyecto de cross-env se puso en modo mantenimiento a finales del año 2020 por lo que no se agregarán nuevas funcionalidades, sin embargo, sigue siendo completamente válido ya que se seguirán corrigiendo errores y actualizando para futuras versiones de Node.js.
En todo caso, siempre nos quedará la opción de hacer uso del subsistema de Windows para Linux (opens new window), ¿te atreves?