2015-07-29 15 views
14

Piszę wtyczkę, która tworzy sprite'a SVG. To globs nad katalogami, scalanie plików SVG na jednym obrazie i zwraca wynik. Chodzi o dynamiczne utworzenie modułu (zawierającego scalone obrazy), aby inne moduły mogły go wymagać jako zwykłego modułu. A może zaproponujesz bardziej eleganckie rozwiązanie?Webpack dynamicznie tworzy moduł

Config

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

Gdzieś we wniosku

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

Próbuję zrobić coś podobnego. Chciałbym wiedzieć, jak wstrzyknąć moduł z wtyczki. – 4m1r

+0

Czy próbowałeś [wtyczki webpack-svgstore] (https://github.com/lgordey/webpack-svgstore-plugin)? Wygląda na to, że rozwiązuje ten sam problem. – Kreozot

+0

@Kreozot svgstore-plugin robi coś innego - emituje zasoby podczas kompilacji kompilatora. Chcę pracować z svg jak przy zwykłych modułach i budować tylko wymagane pliki. Piszę [svg-sprite-loader] (http://github.com/kisenka/webpack-svg-sprite-loader) (wysoce eksperymentalny). – kisenka

Odpowiedz

1

mam nieco niezbyt eleganckie solution.Combine wszystkich pomostów żylnych (przez powtarzanie nad folderu) do jednego html i ukryj ten fragment kodu HTML za pomocą display:none. Po tych danych wpisz nazwy plików, aby uzyskać do nich dostęp poprzez getElementById(<yourID>).innerHTML. Próbka JSP oparte snippet..or napisać w jakikolwiek język chcesz ..

<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

Spróbuj rzucić okiem na to, jak moduły zewnętrzne i delegowane są dostarczane w pakiecie Webpack. Dobrym miejscem na rozpoczęcie jest ExternalModuleFactoryPlugin lub DllReferencePlugin.

Zasadniczo tworzysz wtyczkę dla NormalModuleFactory, która pobiera żądania dla modułów, dopasowujesz te, które powinny zostać rozwiązane do generowanych modułów i możesz asynchronicznie odpowiedzieć na Module.

Powiązane problemy