Node.js, чтобы получить/определить версию ОС

Я хотел бы определить, выполняется ли какой-либо script под управлением определенной версии Mac OSX. Я понимаю, что могу выполнить команду exec/spwn:

sw_vers -productVersion

Есть ли способ сделать это синхронно (аналогично process.arch) без node-exec-sync? Я понимаю, что это была принятая неправильная практика, чтобы порождать/выполнять синхронно, но я не вижу другого способа.

Ответ 1

вы можете использовать модуль ОС следующим образом:

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

а затем сопоставьте версию выпуска с определенной версией Mac OS X.

Отображения Darwin для Mac OS X можно найти здесь

Ответ 2

Как упоминалось выше в комментариях ответа AndyD, os.release() возвращает версию ядра. Если вы хотите получить тот же номер версии, который пользователь видит в пользовательском интерфейсе "Об этом Mac", вы можете читать и разбирать /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