2014-06-12 20 views
15

के साथ ब्राउज़र का उपयोग करना मैं फ्रंट-एंड कोड को बंडल करने के लिए ब्राउज़र का उपयोग कर रहा हूं। यह अब तक बहुत अच्छा रहा है, लेकिन मुझे एनपीएम और गैर एनपीएम पैकेजों को मिलाकर कठिनाई हो रही है। उदाहरण के लिए, jQuery प्लगइन के गैर सीजेएस संस्करणों के साथ jQuery के एनपीएम संस्करण का उपयोग करना।एनपीएम jQuery और गैर-एनपीएम प्लगइन्स

मेरा वर्तमान समाधान प्लगइन की नोकिया को इंगित करने के लिए पैकेज.जेसन में browser कुंजी का उपयोग करना है, और फिर प्लगइन की निर्भरता के रूप में जोड़ने के लिए browserify-shim का उपयोग करें।

क्या मेरे पास वर्तमान में ऐसा करने के लिए एक क्लीनर तरीका है?

संपादित करें: मैं वर्तमान में सभी मेरी निर्भरता का प्रबंधन करने के NPM और package.json उपयोग करने के लिए कोशिश कर रहा हूँ, इसलिए मैं इस परियोजना पर बोवर उपयोग करने के लिए नहीं करना चाहती। मुझे पागल कॉल करें:)

Package.json

"dependencies": { 
    "jquery": "~2.1.0", 
    "browserify": "latest", 
    "browserify-shim": "^3.5.0", 
    "jquery-waypoints": "[email protected]:imakewebthings/jquery-waypoints.git", 
    "jquery-validation": "git://github.com/jzaefferer/jquery-validation" 
    }, 
    "browser": { 
    "jquery": "./node_modules/jquery/dist/jquery.js", 
    "jquery-waypoints": "./node_modules/jquery-waypoints/waypoints.js", 
    "jquery-validate": "./node_modules/jquery-validation/build/release.js" 
    }, 
    "browserify-shim": { 
    "jquery": "$", 
    "jquery-waypoints": { 
     "depends": [ 
     "jquery" 
     ] 
    }, 
    "jquery-validate": { 
     "depends": [ 
     "jquery" 
     ] 
    } 
    }, 
    "browserify": { 
    "transform": [ 
     "browserify-shim" 
    ] 
    } 
+0

मैं वर्तमान में एक ही समस्या का सामना कर रहा हूं। '।/Node_modules/jquery/dist/jquery.js' के साथ' jquery' को एलियासिंग करना आपके अंतिम बंडल में jQuery की डुप्लिकेट प्रति बनाते हैं? या, उस 'package.json' के साथ क्या काम नहीं कर रहा है? –

+0

@ माइकलमार्टिन-स्मकर यह ठीक काम कर रहा है (कोई डुप्लिकेट 'jquery') लेकिन मुझे शिम कॉन्फ़िगरेशन के माध्यम से मैन्युअल रूप से चीजों को कॉन्फ़िगर करना पसंद नहीं है - मैं आलसी हूं :)। सौभाग्य! –

+0

धन्यवाद एक गुच्छा! उस सवाल ने मेरे प्रश्न का उत्तर दिया। मुझे jquery नहीं मिल सका।काम करने के लिए mmenu, लेकिन आपके कोड ने मुझे दिखाया कि कैसे। एक प्रश्न में काम कोड दिखाने के लिए +1 :) – xlttj

उत्तर

1

मैं इस प्रकार करना होगा:

  1. उपयोग debowerify, बोवर में उपलब्ध पुस्तकालयों को शामिल करने में अपने मामले हो जाएगा, jQuery -वेपॉइंट्स, jquery-validation

  2. एनपीएम पैकेज में आने वाली jquery का उपयोग करें, जो यहां उपलब्ध है https://github.com/jquery/jquery

इस तरह, मैं समय के लिए ब्राउज़र-शिम को भी हटा दूंगा।

+0

आपके उत्तर के लिए धन्यवाद। मैं इस समय केवल एनपीएम रूट करने की कोशिश कर रहा हूं, इसलिए मैं बोवर का उपयोग करने से बचना चाहता हूं। मैंने स्पष्ट करने के लिए अपना प्रश्न अपडेट कर लिया है। –

+0

मैंने सुझाए गए तरीके की कोशिश की और jquery-mobile के साथ कोई भाग्य नहीं। उधारकर्ता को बोवर से पैकेज में लाया गया लेकिन deamdify को यह नहीं पता था कि इसे एएमडी मॉड्यूल से कैसे बनाया जाए। इसे अप्रत्याशित टोकन त्रुटियां मिलीं। हमम ... – Glitches

0

आप निर्भरता सही ढंग से परिभाषित करने मेरा मानना ​​है कि (जैसे कि आपका jQuery घोषणा करने के लिए "$" सेट भूल रहे हैं):

"plugin": { 
    "exports": "plugin", 
    "depends": [ 
    "jquery:$" 
    ] 
},... 
+0

आपके उत्तर के लिए धन्यवाद, लेकिन मुझे पूरा यकीन नहीं है कि आपका क्या मतलब है? क्या आप विस्तारित कर सकते हैं और अपने स्निपेट को थोड़ा और संदर्भ दे सकते हैं? –

+0

एर्क। एक और समाधान की तलाश करते समय अपने प्रश्न में ठोकर खाई ताकि बहुत जल्दी पढ़ा जा सके। बस अपने प्रश्न को फिर से पढ़ें और ध्यान दिया कि आप वास्तव में यह काम कर रहे हैं, लेकिन ब्राउज़रify-शिम के माध्यम से मैन्युअल फिडलिंग पसंद नहीं करते हैं (मैंने माना था कि यह काम नहीं कर रहा था, संभावित रूप से क्योंकि आपने पूरी तरह से निर्दिष्ट नहीं किया था कि क्या असाइन करना है आपके प्लगइन में $/jQuery। यह देखकर कि आप यह कैसे काम कर रहे हैं, आप मेरे जैसे ही नाव में हैं: "अरग, एक और jQuery प्लगइन जो मुझे ब्राउज़र को अनुकूल बनाने के लिए मिला है।" दुर्भाग्यवश, ऐसा कोई दूसरा तरीका नहीं है मुझे एक अलग पैकेज मैनेजर का उपयोग करने में बहुत कम मिला है। – Ted

+0

गोटो। यह समझ में आता है। किसी और को जानना खुशी है कि मेरा दर्द महसूस होता है। अगर आपको बेहतर तरीका मिल जाए तो कृपया अपडेट करें :) –

1

browser निर्देश सिर्फ एक आप क्या चाहते हैं जब आप jquery बारे में निर्दिष्ट करने के लिए अन्य नाम है। डिफ़ॉल्टjquery के लिए node_modules में पथ है, इसलिए अपने लाइन:

"jquery": "./node_modules/jquery/dist/jquery.js", 

... अनावश्यक है और आप उसे निकाल सकता है, क्योंकि जब आप अपने Browserify शिम config में "depends": ["jquery"] लिखते हैं, jquery पहले से ही ./node_modules/jquery/dist/jquery.js को इंगित करता है आपकी browser कुंजी में उस पंक्ति के बिना। वास्तव में, आप शायद browser निर्देश पूरी तरह से हटा सकते हैं, आपको उन jQuery प्लगइन्स 'package.json फ़ाइलों में कॉन्फ़िगरेशन की जांच करनी होगी, लेकिन संभव है कि वे पहले से ही आपके पास हैं, browser ओवरराइड के बिना।

अन्यथा मुझे नहीं लगता कि इसे लागू करने के लिए एक क्लीनर तरीका है। जैसा कि आपने कहा था कि आपको उन गैर-सीजेएस jQuery प्लगइन को झुकाव के लिए ब्राउज़रफील्ड शिम का उपयोग करने की आवश्यकता है और आप इसे सही तरीके से कर रहे हैं।

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