2013-02-20 36 views
6

Tôi muốn xác định xem một số tập lệnh đang được thực hiện có đang chạy phiên bản Mac OSX cụ thể hay không. Tôi nhận ra rằng tôi có thể thực hiện lệnh/xuất hiện lệnh:Node.js để nhận/xác định phiên bản hệ điều hành

sw_vers -productVersion 

Có cách nào để thực hiện việc này một cách đồng bộ (tương tự như process.arch) mà không có node-exec-sync? Tôi nhận ra một hành động xấu được chấp nhận của nó để sinh sản/exec đồng bộ, nhưng tôi không thấy một cách khác.

Trả lời

22

bạn có thể sử dụng the OS module như thế này:

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

và sau đó bản đồ phiên bản phát hành một phiên bản cụ thể của Mac OS X.

Darwin với máy Mac OS X ánh xạ có thể được tìm thấy here

+0

os.release được cho là các giống như 'uname -a' cho phiên bản hạt nhân. Ví dụ, trên OSX 10.8.2, nó trả về 12.2.0. Tôi cho rằng tôi có thể tìm thấy ánh xạ hạt nhân cho các phiên bản OSX, nhưng tôi cho rằng nó kém đáng tin cậy hơn. – badunk

+0

Vâng, khi bạn nhận được giá trị 'os.platform()', bạn có thể chạy mã để chọn phiên bản hệ điều hành thực tế từ một số lệnh cụ thể của nền tảng khác. –

+1

đã thêm liên kết vào lịch sử phát hành. – AndyD

1

Như đã đề cập ở trên trong các ý kiến ​​của câu trả lời của AndyD, os.release() trả về phiên bản hạt nhân. Nếu bạn muốn nhận được số phiên bản tương tự mà người dùng nhìn thấy trong "Giới thiệu về Mac này" giao diện người dùng, bạn có thể đọc và phân tích ra /System/Library/CoreServices/SystemVersion.plist, như vậy:

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

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

Các vấn đề liên quan