2013-02-20 12 views
6

Chciałbym ustalić, czy uruchamiany skrypt uruchamia konkretną wersję systemu Mac OSX. Zdaję sobie sprawę, mogę exec/tarło polecenie:Node.js, aby uzyskać/określić wersję systemu operacyjnego

sw_vers -productVersion 

Czy istnieje sposób, aby to synchronicznie (podobny do process.arch) bez node-exec-sync zrobić? Zdaję sobie sprawę z tego, że jest to zła, zła praktyka do synchronizacji spawn/exec, ale nie widzę innego sposobu.

Odpowiedz

22

można użyć the OS module takiego:

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

a następnie zmapować wersji systemu do konkretnej wersji systemu Mac OS X.

Darwin do systemu Mac OS X można znaleźć odwzorowania here

+0

os.release jest podobno taki sam jak 'uname -a', który daje wersję jądra. Na przykład na OSX 10.8.2 zwraca 12.2.0. Przypuszczam, że mogę znaleźć odwzorowania jądra na wersje OSX, ale sądzę, że jest to mniej niezawodne. – badunk

+0

Po uzyskaniu wartości 'os.platforma()' można następnie uruchomić kod, który odbiera rzeczywistą wersję systemu operacyjnego z innego polecenia specyficznego dla platformy. –

+1

dodano link do historii wydania. – AndyD

1

Jak wspomniano powyżej w komentarzu odpowiedzi AndyD, os.release() zwraca wersję jądra. Jeśli chcesz uzyskać ten sam numer wersji, że użytkownik widzi w „O tym Mac” UI, można czytać i analizować na /System/Library/CoreServices/SystemVersion.plist, tak:

const plist = require('plist'); 
let versionInfo = plist.parseFileSync('/System/Library/CoreServices/SystemVersion.plist'); 
console.log(JSON.stringify(versionInfo)); 

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

Powiązane problemy