2013-02-20 42 views
6

我想确定某个正在执行的脚本是否运行特定版本的Mac OSX。我知道我可以Exec的/产卵命令:Node.js获取/确定操作系统版本

sw_vers -productVersion 

有没有办法做到这一点同步(类似于process.arch)无node-exec-sync?我意识到它是一种公认​​的不良做法,可以同步产生/执行,但我没有看到另一种方式。

回答

22

你可以使用the OS module这样的:

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

再发布版本映射到Mac OS X的特定版本

达尔文到Mac OS X的映射,可以发现here

+0

os.release是假想与提供内核版本的'uname -a'相同。例如,在OSX 10.8.2上,它返回12.2.0。我想我可以找到OSX版本的内核映射,但我认为这不太可靠。 – badunk 2013-02-20 20:47:09

+0

那么,一旦获得了'os.platform()'值,就可以运行代码从其他平台特定的命令中获取实际的操作系统版本。 – 2013-02-20 21:23:29

+1

添加链接到发布历史记录。 – AndyD 2013-02-20 23:04:42

1

正如AndyD的回答评论中提到的那样,os.release()返回内核版本。如果你想获得一个用户看到的“关于本机” 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

相关问题