2013-02-20 40 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

相關問題