Estoy escribiendo un par de scripts de shell de nodo para usar cuando desarrolle en una plataforma. Tenemos desarrolladores de Mac y Windows. ¿Hay alguna variable que pueda verificar en Node para ejecutar un archivo .sh en una instancia y .bat en otra?
273
Respuestas:
La variable a utilizar sería
process.platform
En Mac, la variable regresa
darwin
. En Windows, regresawin32
(incluso en 64 bits).Los valores posibles actuales son:
aix
darwin
freebsd
linux
openbsd
sunos
win32
Acabo de configurar esto en la parte superior de mi archivo jake:
fuente
'win32'
, incluso en sistemas operativos de 64 bits.process.platform === 'win32'
es decir, es suficienteprocess.platform === 'win32'
parece más concisa que la expresión regular, y obviamente más rápida. La expresión regular que Mauvis ha publicado parece ser un mejor control de calidad . Si Node / Windows decidieran devolver win64, winARM, etc., o cualquier otra cosa, una tonelada de código se rompería con la comparación de cadenas. Todo lo que estamos buscando es si es Windows o no. No el arco. Voto por la expresión regular en este momento después de haber usado la comparación de cadenas por un tiempo, la expresión regular 'se siente' más segura.Con Node.js v6 (y superior) hay un
os
módulo dedicado , que proporciona varios métodos de utilidad relacionados con el sistema operativo.En mi máquina con Windows 10 informa lo siguiente:
Puede leer su documentación completa aquí: https://nodejs.org/api/os.html#os_os_type
fuente
Está buscando el módulo nativo del sistema operativo para Node.js:
v4: https://nodejs.org/dist/latest-v4.x/docs/api/os.html#os_os_platform
o v5: https://nodejs.org/dist/latest-v5.x/docs/api/os.html#os_os_platform
fuente
Proceso
OS
fuente
os.type()
parece devolver 'Darwin' con mayúscula. Por razones de seguridad, podría ser mejor llamaros.type().toLowerCase()
antes de comparar valores.Esto funciona bien para mi
fuente
cuando utiliza un nodo de 32 bits en ventanas de 64 bits (como los desarrolladores de nodo-webkit o atom-shell), process.platform se hará eco de win32
utilizar
(marque aquí para más detalles)
fuente
Funciona bien para mi
fuente
fuente
os
módulo, que es más expresivo al leer el código.fuente
Estaba enfrentando el mismo problema al ejecutar mi código de nodo js en Windows VM en la máquina Mac. El siguiente código hizo el truco.
Reemplazar
con
fuente