2017-01-28 1 views
12

Laravel 5.4 eingeführt Laravel-Mix mit Webpack. Es gibt keine klare Dokumentation für die Arbeit mit Bildern in Laravel Mix (wie, wie es funktioniert und es für unsere Bedürfnisse anpassen). Da es nicht wie erwartet funktioniert, möchte ich es für mein aktuelles Projekt deaktivieren.Laravel Mix deaktivieren Dateilader für URL()

Wie könnte ich es deaktivieren?

Ich habe versucht, indem Sie Code in webpack.config.js Entfernung:

{ 
    test: /\.(png|jpg|gif)$/, 
    loader: 'file-loader', 
    options: { 
     name: '[name].[ext]?[hash]' 
     } 
} 

aber Ausführen des Befehls npm run dev erzeugt diesen Fehler:

You may need an appropriate loader to handle this file type.

+0

Wo verwenden Sie die Bilder? Ist es in deinen 'sass' und' less' Dateien? – PaladiN

+0

Ja, in der SASS-Datei. –

+1

Dies könnte hilfreich sein https://github.com/JeffreyWay/laravel-mix/issues/218 –

Antwort

2

Laravel Mix Version 0.8 und höher

Wie auf Laravel Mix v0.8 gibt es einfache API Optionen, um es zu tun. Um url (Datei) loader zu deaktivieren unter Optionen in webpack.mix.js

mix.options({ 
    processCssUrls: false 
}); 

Laravel Mix Version 0.7 und Below

Lösung 1: Deaktivieren url() Umgang mit

die URL() interpretiert werden wie Import von css-loader. Derzeit CSS-Loader ist ein bisschen ein Alles-oder-nichts-Ansatz, also müssen wir alle url() Handhabung deaktivieren, dies zu tun ..

öffnen node_modules\laravel-mix\setup\webpack.config.js und folgende Änderungen vornehmen,

{ loader: 'css-loader' + sourceMap }, 

ersetzen mit

{ loader: 'css-loader?url=false' + sourceMap.replace("?", "&") }, 

Lösung 2: mit absolutem Link in url()

Die URLs, die mit / beginnen, werden nicht verarbeitet z. B .: url(/images/something.jpg). Wenn Ihr Projekt die URL unterstützt, die mit / beginnt, können Sie verwenden, wie es ist, gibt es kein Problem.

+0

Tatsächlich gab es Bugs, die mit der Image-URL-Verarbeitung verbunden waren, die in den Versionen nach 0.8 behoben wurden. Daher ist der beste Rat, die Konfiguration package.json mit der neuesten Laravel-Mix-Version zu aktualisieren (vergiss nicht, '' 'auszuführen) npm install''') und fügen Sie '' 'mix.options ({processCssUrls: false});' '' zu Ihrem webpack.mix.js hinzu. Sie können die Nummer der Version hier überprüfen: https://github.com/JeffreyWay/laravel-mix –