【发布时间】:2013-02-20 20:15:49
【问题描述】:
我想确定正在执行的某些脚本是否正在运行特定版本的 Mac OSX。我意识到我可以执行/生成命令:
sw_vers -productVersion
有没有办法在没有node-exec-sync 的情况下同步执行此操作(类似于 process.arch)?我意识到同步生成/执行是一种公认的坏习惯,但我没有看到其他方法。
【问题讨论】:
标签: javascript node.js
我想确定正在执行的某些脚本是否正在运行特定版本的 Mac OSX。我意识到我可以执行/生成命令:
sw_vers -productVersion
有没有办法在没有node-exec-sync 的情况下同步执行此操作(类似于 process.arch)?我意识到同步生成/执行是一种公认的坏习惯,但我没有看到其他方法。
【问题讨论】:
标签: javascript node.js
你可以像这样使用the OS module:
var os = require('os');
os.platform(); // 'darwin'
os.release(); //'10.8.0'
然后将发布版本映射到特定版本的 Mac OS X。
Darwin 到 Mac OS X 的映射可以在here找到
【讨论】:
uname -a 相同。例如,在 OSX 10.8.2 上,它返回 12.2.0。我想我可以找到 OSX 版本的内核映射,但我认为这不太可靠。
os.platform() 的值,你就可以运行从其他平台特定命令中获取实际操作系统版本的代码。
os.release on macOS 11 返回 20.3 显然不返回 OS 版本。
如上所述,在 AndyD 的答案 cmets 中,os.release() 返回内核版本。如果您想获得用户在“关于此 Mac”UI 中看到的相同版本号,您可以读取并解析出 /System/Library/CoreServices/SystemVersion.plist,如下所示:
const plist = require('plist');
let versionInfo = plist.parseFileSync('/System/Library/CoreServices/SystemVersion.plist');
console.log(JSON.stringify(versionInfo));
【讨论】: