Wie kann ich Bilder, die im Sass Stylesheet verwendet werden, in das Webpack laden?

8

Ich verwende Webpack , um meine Module zu bündeln und sass in einer reaktionsabhängigen Anwendung zu verwenden.

Mit einem separaten Stylesheet setze ich das Hintergrundbild einer Komponente und lade dieses Stylesheet in index.js . Alle Stile in Stylesheets werden auf diese Komponente angewendet außer Hintergrundbild .

Hier ist mein Beispiel-Stylesheet

%Vor%

Eine Möglichkeit, dieses Problem zu lösen, wäre, das Bild explizit zu erstellen und dann einen Inline-Stil für die react-Komponenten zu erstellen.

%Vor%

Aber ich möchte alle Bilder aus meinem Bilderordner laden, sobald mein Stylesheet geladen ist und nicht jedes Bild einzeln erfordert.

Meine Webpack-Konfigurationsdatei ist

%Vor%

Ich vermisse vielleicht einige triviale Punkte. Jede Hilfe wird geschätzt.

    
WitVault 10.02.2016, 20:30
quelle

3 Antworten

13

Ahh .... Nach vielen Stunden Debugging habe ich endlich das Problem gefunden. Es war meine Torheit, wegen der ich kämpfte. Ich wollte diese Frage löschen, dachte aber, dass es Neulingen wie mir helfen würde, wenn sie an ähnlichen Problemen festhalten.

Problem war hier

loader: 'url-loader?limit=10000'

Ich habe das Limit für die Dateigröße von 10kb festgelegt, ohne wirklich zu wissen, was es tut. Und das Bild, das ich geladen habe, hatte eine Größe von <21kb ! Dies passiert, wenn Sie einige andere Webpack-Konfigurationsdateien kopieren :) Zeichen der Ermüdung von JavaScript!

    
WitVault 10.02.2016, 22:43
quelle
4

Wenn Sie das webpack zum Laden Ihrer CSS und der Assets verwenden, auf die sie zugreifen, muss Ihre CSS den gleichen Modulbenennungsregeln folgen, die Sie in Ihren JavaScript import - oder require -Aufrufen verwenden.

Angenommen, der Ordner img befindet sich im Stammverzeichnis Ihres Quellbaums, sollten Sie in scss:

darauf Bezug nehmen %Vor%

Oder geh einfach ganz relativ. Angenommen, Ihr Quellcode ist wie folgt:

%Vor%

Ihr styles.scss könnte einen relativen Pfad verwenden:

%Vor%     
Brandon 10.02.2016 21:27
quelle
0

Ich hatte ein ähnliches Problem, aber mit Bildern mit der Erweiterung ".jpeg". Die Erweiterung auf '.jpg' hat mir aus irgendeinem Grund geholfen.

    
Aliaksei 17.08.2017 09:22
quelle