Как определить текущую операционную систему с помощью Node.js

Я пишу пару сценариев оболочки node для использования при разработке на платформе. У нас есть как Mac, так и Windows. Есть ли переменная, которую я могу проверить в node для запуска .sh файла в одном экземпляре и .bat в другом?

Ответ 1

Переменная для использования будет process.platform

На Mac переменная возвращает darwin. В Windows он возвращает win32 (даже в 64-битной версии).

Возможные значения: "darwin", "freebsd", "linux", "sunos" или "win32"

Я просто установил это в верхней части моего jakeFile:

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

Ответ 3

С Node.js v6 (и выше) имеется выделенный модуль os, который предоставляет ряд связанных с операционной системой методов.

На моем компьютере с Windows 10 он сообщает следующее:

var os = require('os');

console.log(os.type()); // "Windows_NT"
console.log(os.release()); // "10.0.14393"
console.log(os.platform()); // "win32"

Здесь вы можете прочитать полную документацию: https://nodejs.org/api/os.html

Ответ 4

Это прекрасно работает для меня

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")
}

Ответ 5

Процесс

var opsys = process.platform;
if (opsys == "darwin") {
    opsys = "MacOS";
} else if (opsys == "win32" || opsys == "win64") {
    opsys = "Windows";
} else if (opsys == "linux") {
    opsys = "Linux";
}
console.log(opsys) // I don't know what linux is.

Операционные системы

const os = require("os"); // Comes with node.js
console.log(os.type());

Ответ 6

когда вы используете 32bits node в 64-битных окнах (например, node -webkit или разработчики shell-оболочки), process.platform будет эхо win32

использовать

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

(подробнее здесь)

Ответ 7

const path = require('path');

if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}

Ответ 8

У меня работает нормально

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

Модификатор я используется для сопоставления без учета регистра.

Ответ 9

var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)');