15

我想确定正在执行的某些脚本是否正在运行特定版本的 Mac OSX。我意识到我可以执行/生成命令:

sw_vers -productVersion

有没有办法在没有node-exec-sync 的情况下同步执行此操作(类似于 process.arch)?我意识到同步生成/执行是一种公认​​的不好的做法,但我看不到另一种方式。

4

2 回答 2

41

你可以像这样使用 OS 模块

var os = require('os');
os.platform(); // 'darwin'
os.release(); //'10.8.0'

然后将发布版本映射到特定版本的 Mac OS X。

Darwin 到 Mac OS X 的映射可以在这里找到

于 2013-02-20T20:34:50.690 回答
2

正如上面 AndyD 的回答评论中提到的,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));

https://github.com/kevinsawicki/node-plist

于 2016-11-10T05:45:30.253 回答