क्या मैं Nuget को jQuery 1.9.x / 1.x पाथ (2.x पर अपग्रेड करने के बजाय) पर रख सकता हूं?


86

अधिकांश लोगों की तरह, मैं jQuery के Nuget पैकेज का उपयोग कर रहा हूँ, अप टू डेट रखने के लिए।

हालाँकि, jQuery 2.0 की रिलीज़ के साथ अब मुझे jQuery 1.9.1 से 2.0 अपग्रेड करने के लिए प्रेरित किया गया है। इस समय मेरे पास ब्राउज़रों के 'प्राचीन' संस्करणों का उपयोग करके मेरी साइटों पर पर्याप्त आगंतुक हैं जो मैं 1.9.x और jQuery के माइग्रेट के साथ रहना चाहूंगा ।

क्या किसी पैकेज (jQuery या अन्यथा) के अपडेट की जाँच करते समय Nuget को किसी विशेष संस्करण (1.9.x) के साथ रहने के लिए कहा गया है?

मैं विज़ुअल स्टूडियो 2010/2012 एक्सटेंशन का उपयोग कर रहा हूं, लेकिन अगर मुझे इस मुद्दे के आसपास काम करने के लिए वीएस के भीतर कमांड लाइन इंटरफ़ेस का उपयोग करने की आवश्यकता है, तो मैं निश्चित रूप से करूंगा।

नोट: मेरे दिमाग के पीछे एक बात यह है कि उन्होंने अपडेट को गड़बड़ कर दिया। चूंकि jQuery 1.9.x और 2.0.x / 2.x काफी अलग हैं, ऐसा लगता है कि उन्हें इसके बजाय jQuery 2 (.0.x | .x) पैकेज बनाना चाहिए था।

बेशक, जो लोग वास्तव में 2.x को अपडेट करना चाहते हैं, उन्हें इसके बारे में जानना होगा और स्विच करना होगा कि वे किस पैकेज को स्थापित करना चाहते हैं। लेकिन यह देखते हुए कि इसमें ब्रेकिंग परिवर्तन शामिल हैं, शायद यह बेहतर है?


2
चूंकि 1.10.x बाहर है, मैंने इसे थोड़ा और स्पष्ट करने के लिए शीर्षक अपडेट किया है।
जेम्स स्कैपी

2
चूंकि वे एकल नगेट पैकेज रख रहे हैं, इसलिए अच्छा होगा यदि वे दोनों jQuery संस्करणों को इसमें जोड़ते हैं, इसलिए आपके पास एक ही नगेट पैकेज में 1.x और 2.x दोनों शाखाएँ होंगी और फिर आप जो चाहते थे, उसका संदर्भ दे सकते हैं।
जॉन

@ जॉन - मैं ... वास्तव में उस विचार को पसंद करता हूं। ऐसा नहीं है कि पैकेज वास्तव में किसी विशेष संस्करण के संदर्भ को अद्यतन करता है। केवल एक चीज जिसके बारे में मैं सोच सकता हूं वह है परियोजनाएं जिन्हें वास्तव में 2.x या 1.x की आवश्यकता हो सकती है। लेकिन, यह दिलचस्प होगा कि क्या यह काम करेगा। +1
जेम्स स्कीप

जवाबों:


117

मेरी राय में, यह पैकेज लेखक के हिस्से पर एक गलती है। एक अद्यतन जो कई ब्राउज़रों के लिए समर्थन को हटाता है, को एक अलग संस्करण 2 नगेट पैकेज में बनाया जाना चाहिए था और इसके अनुसार विज्ञापन दिया जाना चाहिए, अर्थात् महत्वपूर्ण अस्वीकरण के साथ। 1.9 पुस्तकालय विरासत नहीं है और भविष्य में और अपडेट प्राप्त करेगा। मैं पैकेज लेखक के संपर्क में रहा हूं और यदि मुझे उत्तर मिलता है तो मैं और लिखूंगा।

अंतरिम में, आप अपने सिंटैक्स का उपयोग करके अपने पैकेज के संस्करण को बाधित कर सकते हैं packages.config:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1]" />

यहाँ संस्करण बाधाओं पर अधिक जानकारी है:

http://docs.nuget.org/docs/reference/Versioning

कॉन्फ़िगरेशन में बदलाव करने के बाद, अपडेट को आपके jQuery पैकेज को 2.0 रिलीज़ में अपग्रेड नहीं करना चाहिए। UI पैकेज मैनेजर द्वारा allowedVersionsविशेषता ( https://nuget.codeplex.com/workitem/1891 ) का सम्मान नहीं करने के साथ पिछले कुछ समय से समस्याएँ हैं , इसलिए यदि आप इस समस्या का सामना करते हैं तो आपको कमांड लाइन का उपयोग करना पड़ सकता है।

हालाँकि, इसमें से कोई भी समस्या हल नहीं होती है जब 1.9 शाखा अपडेट हो जाती है क्योंकि पैकेज फ़ीड अब 2.0+ ट्रैक पर होगा। मुझे लगता है कि आपको विशेष रूप से 'विरासत' 1.x संस्करण का समर्थन करने के लिए लिखे गए एक नए नगेट पैकेज पर स्विच करना होगा या स्क्रिप्ट को हर बार मैन्युअल रूप से कॉपी करना होगा।

किसी भी मामले में, जब मैं अधिक सीखता हूं, तो मैं इसे अपडेट करूंगा।

संपादित करें:

पैकेज लेखक ने कहा है कि भविष्य में 1.x और 2.x दोनों रास्तों का समर्थन किया जाएगा, यानी पैकेज फ़ीड में विभाजन के बजाय समानांतर संस्करण होंगे। जहाँ तक मैं देख सकता हूँ, समाधान 2.x संस्करण के लिए एक अद्यतन को रोकने के लिए पैकेज विन्यास स्तर पर एक संस्करण बाधा का उपयोग करने के लिए है, उदाहरण के लिए:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

(मिनट और अधिकतम दोनों संस्करणों को निर्दिष्ट करते हुए allowedVersions, 2.x संस्करण पर स्विच किए बिना अपडेट करने की अनुमति देनी चाहिए। वैसे, सही कोष्ठक अजीब लगता है, लेकिन सही है - इसका अर्थ है 'संस्करण 2 से कम'।)


डेव, पैकेज लेखक तक पहुंचने के लिए धन्यवाद। मैंने jQuery 2.0 घोषणा ब्लॉग पोस्ट पर एक टिप्पणी पोस्ट की थी कि यह एक संभावित मुद्दा है; किसी कारण से मुझे लगा कि jQuery को jQuery द्वारा बनाए रखा गया था, और यह jQuery का माइग्रेट था जो उनकी ओर से संभाला गया था। आगे और खोदना चाहिए था। +1
जेम्स स्कम्प

@JamesSkemp - हाँ, यह घोषणा पोस्ट पर आपकी क्वेरी थी जो मुझे यहाँ लाया :) सवाल उठाने के लिए धन्यवाद - अगर आप इस मुद्दे पर ध्यान दिलाते तो मैं खुद को पकड़ लेता। पूरी स्थिति बल्कि और अधिक जटिल है, क्योंकि इसे वास्तव में होने की आवश्यकता है, लेकिन मुझे आशा है कि अद्यतन उत्तर मदद करता है। यदि मैं संस्करण को संभालने का एक आसान तरीका भरता हूं, तो मैं आगे की जानकारी जोड़ना सुनिश्चित करूंगा।
डेव आर।

2
NuGet UI में एक बग है, जो इसे संकुल में अद्यतन को अस्वीकार करने पर भी jQuery 2.0 में अपडेट करने के लिए संकेत देता है ।config यह विडंबना है कि jQuery 2.0 नूगेट 2.5 के इतने करीब आ गया। संस्करण 2.5 में एक अपडेट ऑल बटन है, जो इस बग के लिए नहीं था, तो बहुत अच्छा होगा।
एडवर्ड ब्रे

2
मैंने देखा है कि अब jquery1नगेट पर एक पैकेज है, जो केवल 1.x शाखा को ट्रैक करता है।
क्रिस जे

1
केवल कंसोल अपडेट, यूआई अपडेट मेरे लिए काम नहीं कर रहा है (अनुमति के बाद जोड़ा)। जब अद्यतन का प्रयास किया जाता है तो UI किसी भी परियोजना के चयन की अनुमति नहीं देता है
RockResolve

19

संस्करण कैसे निर्दिष्ट करें?

PM> इंस्टॉल-पैकेज jQuery -Version 1.9.1

संदर्भ: http://nuget.org/packages/jQuery/1.9.1


संबंधित प्रश्न मैंने पूछा: stackoverflow.com/q/16126338/11912 संक्षेप में, यह काम करता है, लेकिन यह klunky है। और एक अंधा अद्यतन इसे तोड़ देता है।
जेम्स स्कैप

मैं वास्तव में jQuery के संस्करण snafu के बाद कंसोल तरीके का उपयोग करना शुरू कर दिया है (मैं इसे कॉल करूँगा)। सबसे अच्छा समाधान नहीं है, लेकिन +1।
जेम्स स्कैपी

+1 क्योंकि अगर आप पहले ही गलती से 2.x में अपग्रेड हो चुके हैं और 1.9 पर वापस जाना चाहते हैं और 2.x पर अपग्रेड को रोकना चाहते हैं, तो आपको स्वीकृत उत्तर से प्रतिबंध जोड़ने से पहले / बाद में इसे मैन्युअल रूप से इस तरह डाउनग्रेड करना होगा।
प्लक

8

Nuget के पास अब jquery1 पैकेज है जो केवल 1.x शाखा को ट्रैक करता है, इसलिए आपको इसके लिए कोर jQuery पैकेज को स्वैप करने में सक्षम होना चाहिए।


अच्छा मिल गया। जबकि पृष्ठ को अधिक पठनीय होने के लिए थोड़ा काम करने की आवश्यकता होती है, मुझे यह पसंद है कि यह लचीलेपन को jQuery के कई संस्करणों को उपलब्ध करने की अनुमति देता है।
जेम्स स्कैप

हालाँकि यह हमें जॉन की टिप्पणी पर वापस लाता है; यह अच्छा होगा यदि कोई ऐसा पैकेज था जिसमें सिर्फ 1.x और 2.x दोनों हों, जिसमें प्रत्येक का वर्तमान संस्करण हो।
जेम्स स्कैपी

2
लेकिन अगर आपके पास jQuery निर्भरता के साथ अन्य पुस्तकालय हैं, तो यह हमेशा रहेगा, सबसे अच्छा आपके पास यह jQuery 2.0 के साथ हो सकता है। यदि आप केवल इस काम पर निर्भर jQuery के 1.x चाहते हैं और आपको डेव आर के जवाब को देखना होगा
RockResolve

4

मैंने @TeYoU के लिए ऊपर से दो समाधान जोड़े

पहले मैंने पैकेज मैनेजर कंसोल से पैकेज इंस्टॉल किया:

टूल्स मेनू -> लाइब्रेरी पैकेज मैनेजर -> पैकेज मैनेजर कंसोल

PM> Install-Package jQuery -Version 1.9.1

फिर मैंने @Dave R. के रूप में package.config के पैकेज संपादित किए:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

फिर मैंने वर्तमान संस्करण में अपडेट किया, वर्तमान में 1.10.2 Nuget मैनेजर का उपयोग करके और यह एक आकर्षण की तरह काम करता है।


1
आपको वास्तव में मेरे द्वारा पाए गए पहले संस्करण पर संस्करण को निर्दिष्ट करने की आवश्यकता नहीं है। यदि आप अनुमति संस्करण जोड़ते हैं, तो एक अपडेट चलाएं, यह आपको डाउनग्रेड करेगा ...
मार्टिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.