Como posso determinar o sistema operacional atual com nó.js

estou a escrever um par de scripts de consola de nó para usar ao desenvolver-se numa plataforma. Temos tanto os desenvolvedores Mac como Windows. Existe uma variável que eu possa verificar para Node para executar um arquivo. sh em uma instância e .bat noutra?

 171
Author: abbotto, 2011-12-31

8 answers

A variável a usar seria:process.platform

No Mac, a variável devolve darwin. No Windows, devolve win32 (mesmo em 64 bits).

Os valores possíveis são: 'darwin',' freebsd',' linux',' sunos 'ou'win32'

Acabei de pôr isto no topo do meu jakeFile.
var isWin = process.platform === "win32";
 327
Author: Mauvis Ledford, 2018-02-04 02:38:21

Está à procura do módulo nativo do SO para o nó.js:

V4: https://nodejs.org/dist/latest-v4.x/docs/api/os.html#os_os_platform

Ou v5 : https://nodejs.org/dist/latest-v5.x/docs/api/os.html#os_os_platform

Os.plataforma ()

Devolve a plataforma do sistema operativo. Os valores possíveis são 'darwin', 'freebsd', 'linux', 'sunos'ou ' win32'. Retorna o valor do processo.plataforma.

 41
Author: alessioalex, 2016-03-24 09:33:02

Com Nó.js v6 (e acima) existe um módulo dedicado os, que fornece uma série de métodos de utilidade relacionados ao sistema operacional.

Na minha máquina Windows 10, diz o seguinte:

var os = require('os');

console.log(os.type()); // "Windows_NT"
console.log(os.release()); // "10.0.14393"
console.log(os.platform()); // "win32"
Pode ler aqui a documentação completa. https://nodejs.org/api/os.html
 30
Author: Benny Neugebauer, 2016-11-30 13:47:31

Quando estiver a usar o nó 32bits no 64bits windows(como os programadores de node-webkit ou atom-shell), process.a plataforma fará eco do win32

Utilizar

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

(Verificaraqui para mais detalhes)

 4
Author: user2404131, 2014-07-24 08:32:39
Isto funciona bem para mim.
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")
}
 3
Author: Adeojo Emmanuel IMM, 2018-05-08 13:59:41
const path = require('path');

if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
 2
Author: Alexander Koleda, 2017-06-09 10:50:07
var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)');
 1
Author: Ziyu Zhou, 2015-04-28 10:42:21

Funciona bem para mim

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

O modificador i é usado para efectuar uma correspondência sem distinção de maiúsculas.

 1
Author: V. Kalyuzhnyu, 2018-04-25 15:42:06