डिफ़ॉल्ट कोणीय-क्ली बिल्ड बहुत ही फ्लैट संरचना - संपत्ति फ़ोल्डर और जेएस, एचटीएमएल फाइलों के साथ dist फ़ोल्डर उत्पन्न करता है। क्या fe बनाने का कोई तरीका है। स्क्रिप्ट फ़ोल्डर और बिल्ड प्रक्रिया के दौरान सभी जेएस फाइलों को डाल दिया?कोणीय-क्ली बिल्ड फ़ोल्डर संरचना
उत्तर
सीएलआई अभी तक इसका पूरी तरह से समर्थन नहीं करता है, लेकिन यह आपको वहां से अधिक तरीके से प्राप्त करने के लिए कुछ उपयोगी टूल प्रदान करता है। सर्वलेट-मैपिंग के माध्यम से जोड़े गए जटिलता की मात्रा को कम करने की कोशिश करते समय मुझे अपने कोणीय अनुप्रयोग को एक युद्ध के साथ तैनात करने की आवश्यकता थी। इस प्रश्न में विशेष रूप से जे 2 ईई का उल्लेख नहीं है, लेकिन मुझे लगता है कि इस समाधान के सिद्धांतों को विभिन्न वातावरणों में साझा किया जा सकता है।
प्रासंगिक ng build
पैरामीटर:
--deploy-url
: पथ मानचित्रण जो संसाधनों के लिए लागू किया जाएगा। यह शायद एंगुलर-सीएलआई के करीब है जो आप वर्तमान में प्राप्त कर रहे हैं।--output-path
: कोणीय निर्माण के लिए आउटपुट निर्देशिका को निर्दिष्ट करता है (विशेष रूप से, मैंने विभिन्न परिवेशों के लिए अद्वितीय आउटपुट निर्देशिकाओं को नामित करने के लिए इसका उपयोग किया, क्योंकि एप्लिकेशन को विभिन्न कॉन्फ़िगरेशन के साथ एकाधिक लक्ष्यों पर तैनात किया जा रहा है)।--base-href
: आवेदन के लिए रूट यूआरआई। 0.gके लिए उदा।/angular-app/
। यह<base href="<uri>">
हेड टैग सेट करता है और गैर-हैश रूटिंग के लिए आवश्यक है। यह अन्य चीजों के लिए भी आवश्यक हो सकता है।
आपके लिए सबसे दिलचस्प एक शायद --deploy-url
है। यदि आप /dist/
का एक तैनाती यूआरएल सेट करते हैं, उदाहरण के लिए, तो आपके निर्मित एप्लिकेशन में जेएस फाइलों के संदर्भ /dist/
के साथ प्रीफ़िक्स किए जाएंगे। इस विधि को
दो बड़े कैच:
--deploy-url
जे एस फ़ाइलों के लिए उत्पादन पथ नहीं बदलता है। यह केवल जेएस फाइलों के संदर्भों को बदलता है। फाइलें अभी भी रूट बिल्ड निर्देशिका में रखी जाएंगी। मैन्युअल रूप से इसे ठीक करने के लिए आपको अपनी बिल्ड प्रक्रिया में एक कदम जोड़ना होगा।--deploy-url
किसी अन्य संपत्ति के लिए काम नहीं कर रहा है। मैं अपनी सभी अन्य संपत्तियों कोassets/
निर्देशिका में रखता हूं, और निर्मित आउटपुट अभी भीassets/<path>
(dist/assets/<path>
वांछित के रूप में) के माध्यम से संपत्तियों को संदर्भित करता है। आप वर्चुअल निर्देशिका या यूआरएल पुनः लिखकर इसे चारों ओर काम कर सकते हैं।
संदर्भ के लिए, युद्ध के लिए मेरे जिसके परिणामस्वरूप निर्देशिका संरचना है:
app/
dist/ <-- Deployed Angular application
assets/
(images, CSS, etc)
*.js
(other assets pulled into the root path, e.g. *.(svg|eot|woff|woff2|ttf) from Font Awesome)
index.html
WEB-INF/
...
index.jsp
ये कदम मैं इस संरचना का निर्माण करने के लिए ले रहे हैं:
ng build -pr false --prod --output-path build/node-prod --base-href /angular-app/ --deploy-url /angular-app/dist/
।- एक ग्रेडल निर्देशिका के माध्यम से WAR बिल्ड निर्देशिका
app/dist
परbuild/node-prod
की सामग्री कॉपी करें। - प्वाइंट
index.jsp
सेindex.html
सामग्री<%@include file="dist/index.html"%>
के माध्यम से। - पथ
/dist/*
और/assets/*
पथों के लिए डिफ़ॉल्ट सर्वलेट (स्थिर संपत्ति) के लिए सर्वलेट-मैपिंग जोड़ें। - http://tuckey.org/urlrewrite/
^/assets/(.*)$
से/dist/assets/$1
(या httpd, nginx, आदि के माध्यम से) के लिए URL-mapping जोड़ें। अन्य संपत्तियों के लिए काम नहीं कर रहे--deploy-url
के लिए ऊपर दिए गए कैच की वजह से इसकी आवश्यकता है। - (वैकल्पिक)
^/dist/index.html$
के लिएdist
यूआरआई के माध्यम से ऐप तक पहुंचने से रोकने के लिए रूट संदर्भ पथ पर 301 या 302 रीडायरेक्ट जोड़ें।
परिणामी वेबएप में, http://localhost/angular-app/
मेरे आवेदन के लिए एकमात्र वैध अंतराल है। यह एंडपॉइंट index.jsp
पर इंगित करता है, जिसमें index.html
की सामग्री शामिल है, जो <script src="/angular-app/dist/<some-file>.js"></script>
टैग के माध्यम से प्रासंगिक जेएस लोड करता है।
जब कोई अन्य संपत्ति आवश्यक है, जैसे लोगो छवि, पृष्ठ assets/<file-name>
का अनुरोध करता है, जिसे टकी के माध्यम से सर्वर-साइड को dist/assets/<file-name>
पर फिर से लिखा जाता है, पारदर्शी रूप से अनुरोधित संपत्ति को हल करता है।
इस समाधान के बारे में अच्छी बात यह है कि हम सब कुछ कि ng build
जड़ युद्ध पथ में निर्मित डाल करने के लिए बिना जड़ संदर्भ में कोणीय आवेदन को तैनात करने में सक्षम थे। यह विशेष रूप से अच्छा है क्योंकि हम वैश्विक सर्वलेट मैपिंग (उदा।, *.js
) जोड़ना नहीं चाहते हैं, जब उन्हें टाला जा सके।
- 1. बिल्ड XML संरचना
- 2. माइक्रोसॉफ्ट.ऑफिस.इंटरोप.एक्ससेल.dll बिल्ड फ़ोल्डर
- 3. खोजक में xcode बनाम फ़ोल्डर संरचना में फ़ोल्डर संरचना
- 4. कस्टम फ़ोल्डर संरचना
- 5. वीबीएनईटी: फ़ोल्डर संरचना
- 6. प्रोजेक्ट्स फ़ोल्डर संरचना अनुशंसा
- 7. गिथब फ़ोल्डर संरचना
- 8. मानचित्र। फ़ोल्डर फ़ंक्शन संरचना - हास्केल
- 9. फ़ोल्डल। फ़ोल्डर फ़ंक्शन संरचना - हास्केल
- 10. यूनिक्स शेल फ़ाइल फ़ोल्डर संरचना
- 11. ककड़ी फ़ोल्डर संरचना शुरू करें?
- 12. दोजो 1.7 कस्टम बिल्ड - रिलीज फ़ोल्डर
- 13. एक्सकोड 4 "क्लीन" बनाम "क्लीन बिल्ड फ़ोल्डर"
- 14. एंड्रॉइड बिल्ड टूल्स 1.1.0, यूनिट टेस्ट फ़ोल्डर?
- 15. दो वातावरण में फ़ोल्डर संरचना की तुलना
- 16. वेब एप्लिकेशन (डीजेगो) ठेठ परियोजना फ़ोल्डर संरचना
- 17. ASP.NET MVC फ़ोल्डर संरचना और NuGet
- 18. गो-लैंग प्रोजेक्ट फ़ोल्डर संरचना सम्मेलन
- 19. लैरवेल 5.0 फ़ोल्डर संरचना: सार्वजनिक बनाम संसाधन
- 20. एक सी प्रोजेक्ट के लिए फ़ोल्डर संरचना
- 21. टीएफएस बिल्ड 2012 में बिल्ड परिभाषा के 'बिल्ड एजेंट फ़ोल्डर' $ (SourceDir) क्या है?
- 22. प्री बिल्ड इवेंट: एक्सकॉपी
- 23. बिल्ड डेटा संरचना रिवर्स प्रदर्शन और पाली logn समय
- 24. libs फ़ोल्डर में जार फ़ाइलों का उपयोग एंड्रॉइड ग्रैडल बिल्ड
- 25. एक्सकोड 5 में बिल्ड फ़ोल्डर को कैसे साफ करें?
- 26. फ़ोल्डर में कोई बिल्ड करने योग्य गो स्रोत फ़ाइलें
- 27. जावा कॉन्फ़िगरिंग बिल्ड पथ या वेब-आईएनएफ/lib फ़ोल्डर
- 28. Mercurial समर्थन - बिल्ड फ़ोल्डर को साफ और अद्यतन कैसे करें?
- 29. my-app.html बंडल बिल्ड फ़ोल्डर से गुम है
- 30. /var/www/PHP प्रोजेक्ट के लिए फ़ोल्डर संरचना