2013-02-20 8 views
6

प्राप्त करने/निर्धारित करने के लिए Node.js मैं यह निर्धारित करना चाहता हूं कि निष्पादित की जा रही कुछ स्क्रिप्ट मैक ओएसएक्स का एक विशेष संस्करण चला रही है या नहीं। मुझे लगता है मैं exec कर सकते हैं/आदेश अंडे:ओएस संस्करण

sw_vers -productVersion 

इस तुल्यकालिक (process.arch के समान) node-exec-sync बिना करने के लिए एक तरीका है? मुझे लगता है कि यह एक स्वीकार्य बुरा अभ्यास है जो सिंक्रनाइज़ रूप से स्पॉन/निष्पादित करता है, लेकिन मुझे कोई और तरीका दिखाई नहीं देता है।

उत्तर

22

आप the OS module इस तरह इस्तेमाल कर सकते हैं:

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

और फिर मैक ओएस एक्स के विशेष संस्करण के लिए रिलीज़ संस्करण के नक्शे

डार्विन मैक ओएस एक्स के लिए मैपिंग पाया जा सकता है here

+0

os.release माना जाता है 'uname -a' के समान है जो कर्नेल संस्करण देता है। उदाहरण के लिए ओएसएक्स 10.8.2 पर, यह 12.2.0 लौटाता है। मुझे लगता है कि मैं ओएसएक्स संस्करणों में कर्नेल मैपिंग्स पा सकता हूं, लेकिन मुझे लगता है कि यह कम विश्वसनीय है। – badunk

+0

ठीक है, एक बार जब आप 'os.platform() 'मान प्राप्त करते हैं, तो आप उस कोड को चला सकते हैं जो किसी अन्य प्लेटफ़ॉर्म विशिष्ट कमांड से वास्तविक ओएस संस्करण को चुनता है। –

+1

रिलीज इतिहास के लिए जोड़ा गया लिंक। – AndyD

1

जैसा एंडीड के उत्तर की टिप्पणियों में ऊपर बताया गया है, os.release() कर्नेल संस्करण देता है। आपको लगता है कि एक उपयोगकर्ता "के बारे में इस मैक" यूआई में देखता है एक ही संस्करण संख्या प्राप्त करना चाहते हैं, तो आप पढ़ सकते हैं और /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

संबंधित मुद्दे