2015-07-29 6 views
14

मैं एक प्लगइन लिख रहा हूं जो एक एसवीजी स्प्राइट बनाता है। यह निर्देशिकाओं पर globs, एक छवि में एसवीजी फ़ाइलों को मर्ज करें और परिणाम देता है। विचार गतिशील रूप से एक मॉड्यूल (जिसमें मर्ज किए गए चित्र शामिल हैं) बनाना है ताकि अन्य मॉड्यूल को इसे सामान्य मॉड्यूल के रूप में आवश्यकता हो। या शायद आप एक और अधिक सुरुचिपूर्ण समाधान का सुझाव दे सकते हैं?वेबपैक गतिशील रूप से एक मॉड्यूल बनाते हैं

कॉन्फ़िग

{ 
    plugins: [ 
    new SvgSpritePlugin({ 
     sprites: { 
     icons: 'images/svg/icons/*.svg', 
     logos: 'images/svg/logos/*.svg', 
     socials: 'images/svg/logos/{twitter,youtube,facebook}.svg', 
     } 
    }) 
    ] 
} 

आवेदन में कहीं न कहीं

var logosSprite = require('sprite/logos'); // require dynamically created module 
document.body.appendChild(logoSprite); 
+0

मैं एक जैसी चीज करने की कोशिश कर रहा हूं। प्लगइन से मॉड्यूल इंजेक्ट करने के बारे में जानना अच्छा लगेगा। – 4m1r

+0

क्या आपने [webpack-svgstore-plugin] कोशिश की है (https://github.com/lgordey/webpack-svgstore-plugin)? ऐसा लगता है कि यह एक ही समस्या हल करता है। – Kreozot

+0

@ क्रेज़ोट svgstore-plugin अलग-अलग काम करता है - यह वेबपैक संकलन के दौरान संपत्ति उत्सर्जित करता है। मैं नियमित मॉड्यूल के साथ svg के साथ काम करना चाहता हूं और केवल आवश्यक फाइलें बनाना चाहता हूं। मैं लिखता हूं [svg-sprite-loader] (http://github.com/kisenka/webpack-svg-sprite-loader) (अत्यधिक प्रयोगात्मक)। – kisenka

उत्तर

1

मैं कुछ हद तक एक नहीं-तो-सुरुचिपूर्ण solution.Combine सभी SVGs एक में (फ़ोल्डर पर पुनरावृत्ति द्वारा) एचटीएमएल और display:none के साथ उस HTML स्निपेट को छुपाएं। आईडी को फ़ाइल नाम और यूकन के रूप में सहेजें, फिर उन्हें getElementById(<yourID>).innerHTML तक एक्सेस करें। में जो भी भाषा आप चाहते हैं jsp आधारित snippet..or लिखने का नमूना ..

<div id="hiddenSVGSprite" style="dispaly:none"> 
<i><span id="Download" ><%@include file="svg/Download.svg" %>/span>Download</i> 
<i><span id="DownloadFAQs" ><%@include file="svg/DownloadFAQs.svg" %> </span>DownloadFAQs</i> 
<i><span id="DownloadQuickReferenceGuide" ><%@include file="svg/DownloadQuickReferenceGuide.svg" %> </span>DownloadQuickReferenceGuide</i> 
<i><span id="DownloadUserManual" ><%@include file="svg/DownloadUserManual.svg" %> </span>DownloadUserManual</i> 
</div> 
1

मैं इस प्लगइन पर एक नजर है की सलाह देते हैं: https://github.com/rmarscher/virtual-module-webpack-plugin, जो आप मक्खी पर एक आभासी फ़ाइल बनाने में मदद, और फिर आप कर सकते थे प्रवेश फ़ाइल में इस फ़ाइल को शामिल करें।

1

वेबपैक में बाहरी और प्रतिनिधि मॉड्यूल प्रदान किए जाने पर एक नज़र डालने का प्रयास करें। शुरू करने के लिए एक अच्छी जगह ExternalModuleFactoryPlugin या DllReferencePlugin है।

अनिवार्य रूप से, आप NormalModuleFactory जो मॉड्यूल के लिए अनुरोध लेता है के लिए एक प्लगइन बनाते हैं, आप उन जो मॉड्यूल आप पैदा कर रहे हैं करने के लिए समाधान हो जाना चाहिए से मेल खाते हैं और आप एसिंक्रोनस रूप से एक Module के साथ प्रतिक्रिया कर सकते हैं।

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