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?
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";
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.
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
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)
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")
}
const path = require('path');
if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)');
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.