我正在编写两个节点shell脚本,以便在平台上开发时使用。我们有Mac和Windows的开发人员。是否有一个变量,我可以检查在节点运行一个.sh文件在一个实例和。bat在另一个?


当前回答

过程

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.

OS

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

其他回答

过程

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.

OS

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

这对我来说很好

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

对我来说没问题

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

修饰符i用于进行不区分大小写的匹配。

const path = require('path');

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

对于Node.js v6(及以上版本),有一个专用的操作系统模块,它提供了许多与操作系统相关的实用程序方法。

在我的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#os_os_type