Cómo determino el sistema operativo actual con Node.js
Estoy escribiendo un par de scripts de shell de nodos para su uso cuando se desarrolla en una plataforma. Tenemos desarrolladores de Mac y Windows. ¿Hay una variable que puedo comprobar en el nodo para ejecutar un archivo. sh en una instancia y .bate en otro?
8 answers
La variable a utilizar 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 establecer esto en la parte superior de mi jakeFile:
var isWin = process.platform === "win32";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-04 02:38:21
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.plataforma.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-24 09:33:02
Con Nodo.js v6 (y superior) hay un módulo dedicado os
, que proporciona una serie de métodos de utilidad relacionados con el sistema operativo.
En mi máquina 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"
Usted puede leer la documentación completa aquí: https://nodejs.org/api/os.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-30 13:47:31
Cuando esté usando el nodo 32bits en windows 64bits(como los desarrolladores de node-webkit o atom-shell), procese.la plataforma se hará eco de win32
Use
function isOSWin64() {
return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432');
}
(marque aquí para más detalles)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-24 08:32:39
Esto funciona bien para mí
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")
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-08 13:59:41
const path = require('path');
if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-09 10:50:07
var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 10:42:21
Funciona bien para mí
if (/^win/i.test(process.platform)) {
// TODO: Windows
} else {
// TODO: Linux, Mac or something else
}
El modificador i se utiliza para realizar coincidencias que no distinguen entre mayúsculas y minúsculas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-25 15:42:06