Laravel Mix为url()禁用文件加载器

Sha*_*h G 11 php laravel webpack laravel-5.4

Laravel 5.4引入了laravel混合物和webpack.在laravel mix中使用图像没有明确的文档(比如,它是如何工作的,并根据我们的需要进行自定义).由于它没有按照我的预期工作,我想为我当前的项目禁用它.

我怎么能禁用它?

我试过删除webpack.config.js中的下面的代码:

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

但运行该命令npm run dev会产生此错误:

您可能需要适当的加载程序来处理此文件类型.

Sha*_*h G 9

Laravel Mix 0.8及更高版本

与laravel mix v0.8一样,有简单的api选项可以执行此操作。要禁用url()文件加载器,请在webpack.mix.js

mix.options({
    processCssUrls: false
});
Run Code Online (Sandbox Code Playgroud)

Laravel Mix 0.7及以下版本

解决方案1:禁用url()处理

url()的解释类似于css-loader的 import 。当前,CSS-Loader是一种全有或全无的方法,因此我们需要禁用所有url()处理。

打开node_modules\laravel-mix\setup\webpack.config.js并进行以下更改,

{ loader: 'css-loader' + sourceMap },
Run Code Online (Sandbox Code Playgroud)

用。。。来代替

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

解决方案2:在url()中使用绝对链接

以a开头的网址/将不会被处理,例如:url(/images/something.jpg)。如果您的项目支持网址以开头/,则可以直接使用,不会有任何问题。