¿Cómo determino el sistema operativo actual con Node.js

Estoy escribiendo un par de scripts de shell de nodo para usarlos cuando se desarrollan en una plataforma. Tenemos desarrolladores de Mac y Windows. ¿Existe alguna variable que pueda verificar en Node para ejecutar un archivo .sh en una instancia y .bat en otra?

La variable a usar sería process.platform

En Mac, la variable devuelve darwin . En Windows, devuelve win32 (incluso en 64 bits).

Los valores posibles son: ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ o ‘win32’

Acabo de configurar esto en la parte superior de mi jakeFile:

 var isWin = process.platform === "win32"; 

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

os.platform ()

Devuelve la plataforma del sistema operativo. Los valores posibles son ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ o ‘win32’. Devuelve el valor de process.platform.

Con Node.js v6 (y más arriba) hay un módulo os dedicado, que proporciona varios métodos de utilidad relacionados con el sistema operativo.

En mi máquina con Windows 10, informa lo siguiente:

 var os = require('os'); console.log(os.type()); // "Windows_NT" console.log(os.release()); // "10.0.14393" console.log(os.platform()); // "win32" 

Puede leer su documentación completa aquí: https://nodejs.org/api/os.html

cuando está utilizando el nodo de 32 bits en las ventanas de 64 bits (como los desarrolladores node-webkit o atom-shell), process.platform reproducirá win32

utilizar

  function isOSWin64() { return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432'); } 

(marque aquí para más detalles)

 var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)'); 
 const path = require('path'); if (path.sep === "\\") { console.log("Windows"); } else { console.log("Not Windows"); } 

Funciona bien para mí

 if (/^win/i.test(process.platform)) { // TODO: Windows } else { // TODO: Linux, Mac or something else } 

El modificador i se usa para realizar una coincidencia insensible a mayúsculas y minúsculas.

Esto funciona bien para mi

 var osvar = process.platform; if (osvar == 'darwin') { console.log("you are on a mac os"); }else if(osvar == 'win32'){ console.log("you are on a windows os") }else{ console.log("unknown os") }