2015-09-25 8 views
19

में बोवर घटकों को क्यों स्थापित किया गया है क्योंकि यह एएसपी.NET 5 के साथ खेला गया है, इसलिए यह एक आश्चर्य की बात है कि बॉवर घटक अब डिफ़ॉल्ट रूप से wwwroot\lib फ़ोल्डर में डाल दिए गए हैं। यह .bowerrc फ़ाइल की वजह से मामला है:wwwroot

{ 
    "directory": "wwwroot/lib" 
} 

पहले के रिलीज में बोवर घटकों ./bower_components फ़ोल्डर, जो अभी भी मेरे लिए अधिक समझ में आता है में संग्रहीत हैं।

मुझे उम्मीद है कि मुझे gulp/grunt (उदाहरण के लिए वायर्डप के साथ) की आवश्यकता है ताकि मेरी जावास्क्रिप्ट और सीएसएस फ़ाइलों को wwwroot फ़ोल्डर में बनाया जा सके।

स्पष्ट रूप से मुझे कुछ याद आ रही है, लेकिन मुझे इसके आसपास अपना सिर नहीं मिल सकता है या इस मामले पर कोई उपयुक्त जानकारी नहीं मिल सकती है।

मैं सभी मेरे बोवर `wwwroot \ lib 'फ़ोल्डर में (सूत्रों सहित) घटक है, खासकर जब तैनाती क्यों करना चाहते हैं, और मेरे Asp.NET 5 वेब अनुप्रयोग की तैनाती पर वांछित कार्यप्रवाह क्या है?

+1

मैं बजाय '.bowerrc' फ़ाइल का उपयोग करूंगा जो बोवर की' निर्यात ओवरराइड 'सुविधा के साथ' wwwroot/lib' को इंगित करता है, जिसमें विभिन्न विक्रेता संपत्तियों को विभिन्न प्रकार के गल्प/ग्रंट कार्यों के साथ मैन्युअल रूप से प्रबंधित करने की आवश्यकता होती है, खासकर जब कुछ विक्रेता अनुसरण करते हैं अलग या गैर मानक dist संरचनाओं। 'निर्यातऑवर्राइड' पर अंतर्दृष्टि के लिए – sgbj

+0

टीएनएक्स। हालांकि यह नवीनतम बीटा के लिए काम नहीं कर रहा है: http://stackoverflow.com/questions/32678101/bower-exportsoverride-doesnt-work-on-asp-net-5-beta7 –

+0

उत्सुक, 'exportOverride' क्या है? क्या यह बोवर की एक अंतर्निहित विशेषता है? मैं यह पूछता हूं क्योंकि मैंने पहले इसी तरह के व्यवहार को प्राप्त करने के लिए 'मुख्य-बोवर-फाइल' का उपयोग किया है। –

उत्तर

13

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

जो मैं सुझाव देता हूं वह आपकी फाइलों के minified/संसाधित उत्पादन संस्करण बनाते समय wwwroot/js जैसे किसी भिन्न फ़ोल्डर में गड़बड़ी प्रक्रिया फ़ाइलों को बना देता है।

तब wwwroot/lib फ़ोल्डर को प्रकाशित से भी बाहर रखा जा सकता है क्योंकि लाइब्रेरी स्क्रिप्ट के केवल dev संस्करण ही वहां रहेंगे।

मैं अपनी खुद की कस्टम स्क्रिप्ट्स सोच रहा हूं जो बोवर घटकों को शायद wwwroot/lib के अंतर्गत नहीं रहना चाहिए, इसलिए शायद मैं अपूर्ण लोगों को wwwroot/dev के तहत रखूं और सभी उत्पादन सामग्री को wwwroot/js के तहत संसाधित कर सकूं ताकि उत्पादन में I केवल wwwroot/js फ़ोल्डर को तैनात करें जिसमें उत्पादन संस्करण minified/संयुक्त फ़ाइलें हैं। तो मूल रूप से हम इस तरह अपने स्वयं के बंडल बनाते हैं।

नए माहौल टैग और और स्क्रिप्ट taghelper यह आसानी से देव और उत्पादन के लिए अलग फ़ाइल स्थानों को इंगित करने के लिए संभव बनाने के रूप में इस उदाहरण में देखी गई:

<environment names="Development"> 
    <script src="~/lib/jquery-validation/jquery.validate.js"></script> 
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script> 
</environment> 
<environment names="Staging,Production"> 
    <script src="//ajax.aspnetcdn.com/ajax/jquery.validation/1.11.1/jquery.validate.min.js" 
      asp-fallback-src="~/js/lib/jquery-validation/jquery.validate.js" 
      asp-fallback-test="window.jquery && window.jquery.validator"> 
    </script> 
    <script src="//ajax.aspnetcdn.com/ajax/mvc/5.2.3/jquery.validate.unobtrusive.min.js" 
      asp-fallback-src="~/js/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js" 
      asp-fallback-test="window.jquery && window.jquery.validator && window.jquery.validator.unobtrusive"> 
    </script> 
</environment> 

तो तुम आसान तरीके में एक cdn उपयोग करने के लिए उत्पादन। ध्यान दें कि गैर सीडीएन फाइलों के लिए आप wwwroot के अलावा कहीं भी इंगित नहीं कर सकते हैं या नीचे कुछ फ़ोल्डर इसलिए wwwroot के बाहर bower_components फ़ोल्डर में फ़ाइलें नहीं हैं, जहां आप स्क्रिप्ट को इंगित कर सकते हैं, इसलिए वहां फ़ाइलों को रखने में कोई बात नहीं है।

मेरी कस्टम स्क्रिप्ट के dev संस्करण के लिए स्क्रिप्ट लिंक बनाते समय मैं नए टैगेलर विशेषता एएसपी-एपेंड-वर्जन = "सच्चाई" का उपयोग करना चाहता हूं जो यूआरएल में फाइल सामग्री के हैश को जोड़ता है ताकि पिछले ब्राउजर कैश फ़ाइल को संपादित या परिवर्तित होने पर किसी भी समय बाईपास किया जाता है। और यह कार्यकर्ता को चलाने की आवश्यकता के बिना होता है, मैं बस पृष्ठ को संपादित और रीफ्रेश करता हूं।

इसलिए संक्षेप में wwwroot के नीचे सभी स्क्रिप्ट्स उन्हें कहीं और रखने की तुलना में बेहतर वर्कफ़्लो है और प्रत्येक संपादन के बाद उन्हें स्थानांतरित करने के लिए टास्करनर चलाने की आवश्यकता है।यदि आप wwwroot/lib से नीचे दिए गए सभी अतिरिक्त क्रुफ्ट को तैनात नहीं करना चाहते हैं तो आप टास्क्रुनर के साथ एक अलग फ़ोल्डर में जो चाहते हैं उसे संसाधित करें, जैसा कि आपको करना होगा यदि वे wwwroot के बाहर bower_components फ़ोल्डर में थे शुरुआती बीटा में होना और प्रकाशन के साथ प्रकाशन से wwwroot/lib को बहिष्कृत करें अपने वेब ऐप के project.json में शामिल करें।

+1

वास्तव में अच्छा जवाब! धन्यवाद, यह समझ में आता है। –

+0

धन्यवाद! कृपया इसे स्वीकार किए गए उत्तर के रूप में चिह्नित करने पर विचार करें। अगर कोई बेहतर और अधिक आधिकारिक उत्तर के साथ आता है तो आप इसे बाद में बदल सकते हैं और उन्हें स्वीकार कर सकते हैं। –

+0

मैं 'wwwroot/lib' फ़ोल्डर को बाहर करने में सक्षम नहीं हूं, स्पष्ट रूप से 'wwwroot' और' publExclude' बीटा के इस बिंदु पर सबसे अच्छा संयोजन नहीं है :(http://stackoverflow.com/a/32106455/551030 –

7

वे वहां स्थानांतरित हो गए हैं क्योंकि माइक्रोसॉफ्ट को .NET डेवलपर्स द्वारा बहुत भ्रम दिखाई दे रहा था जिसका उपयोग नए टूलींग में नहीं किया गया था। उन्होंने .NET डेवलपर्स के लिए उन घटकों को wwwroot में डालकर उन्हें स्थानांतरित करने के लिए एक कार्य चलाने की आवश्यकता के बजाय सरलीकृत किया। इसके लिए मेरा स्रोत (और इसे पिछले व्यवहार में बदलने के लिए एक स्पष्टीकरण) (एमएस कर्मचारी) स्कॉट हैंनसेलमैन blog post से आता है।

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