में एक ही एनपीएम पैकेज के दो संस्करण मैं नोडजेएस में एक सीएलआई उपकरण पर काम कर रहा हूं जो हमारे द्वारा विकसित एक और नोडजे पैकेज का उपयोग करता है, जो एक एसडीके है।नोड अनुप्रयोग
बात है, हम सिर्फ इतना है कि SDK का एक V2 संस्करण प्रकाशित किया जाता है, और हम CLI उपयोगकर्ता एक विरासत मोड प्रदान करना चाहते हैं, तो वे तो जैसे हमारी एसडीके के पहले या दूसरे संस्करण, उपयोग कर सकते हैं:
$ cli do-stuff
#execute sdk v2
या
$ LEGACY_MODE='on' cli do-stuff
#execute sdk v1
मेरे समस्या यह है कि मैं अपने CLI में एक ही निर्भरता के दो संस्करणों का उपयोग करने के लिए किसी भी स्वच्छ रास्ता नहीं मिला था। मैंने npm-install-version पैकेज का उपयोग करने का प्रयास किया। यह मेरे स्थानीय पर्यावरण पर अच्छा काम करता है, लेकिन मेरे क्ली को प्रकाशित करने और npm install -g my-cli
करने के बाद, यह अब काम नहीं करता है, क्योंकि यह /usr/local/lib/node_modules/my-cli
फ़ोल्डर के बजाय वर्तमान फ़ोल्डर में node_modules फ़ोल्डर बनाता है। मैंने multidep भी कोशिश की, और मेरे पास एक ही समस्या है।
अभी के लिए, मेरी package.json मेरे सारे एसडीके में शामिल नहीं है, लेकिन मैं कुछ ऐसा करना चाहते हैं:
"dependencies": {
"my-sdk": "2.0.0"
"my-sdk-legacy": "1.0.0"
}
या
"dependencies": {
"my-sdk": ["2.0.0", "1.0.0"]
}
मैं नहीं मिला है कुछ और अभी तक। मैं अपने एसडीके पैकेज के पहले संस्करण को "my-sdk-legacy" जैसे दूसरे नाम के साथ प्रकाशित करने के बारे में सोच रहा हूं, लेकिन यदि संभव हो तो मैं इससे बचना चाहूंगा।
इसके लिए कोई समाधान?
मैंने दूसरे संस्करण की कोशिश की, लेकिन बात यह है कि, एनपीएम गिट से चेकआउट के बाद फ़ोल्डर का नाम नहीं बदलता है। '' 'node_modules''' फ़ोल्डर में," my-sdk "नामक केवल एक फ़ोल्डर है। तो निम्न कोड '' 'की आवश्यकता नहीं है ('my-sdk-v1');' '' लेकिन मैं '' 'की आवश्यकता हो सकती है ('my-sdk');' '' तो मैं मुझे लगता है कि मैं पहले संस्करण में रहूंगा, भले ही यह मेरे लिए थोड़ा कम सुविधाजनक हो। धन्यवाद – Greg