【问题标题】:Laravel Mix disable file loader for url()Laravel Mix 禁用 url() 的文件加载器
【发布时间】:2017-03-13 14:28:18
【问题描述】:

Laravel 5.4 引入了 laravel mix 和 webpack。在 laravel mix 中处理图像没有明确的文档(例如,它是如何工作的以及根据我们的需要对其进行自定义)。由于它没有像我预期的那样工作,我想为我当前的项目禁用它。

如何禁用它?

我已尝试删除 webpack.config.js 中的以下代码:

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

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

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

【问题讨论】:

  • 您在哪里使用图像?它在您的sassless 文件中吗?
  • 是的,在 SASS 文件中。
  • 如果您的问题仍然存在,loaders 的重点是让webpack 了解如何处理除javascript 之外的文件内容。所以删除 images 的加载器并不能帮助 webpack 捆绑 images

标签: php laravel webpack laravel-5.4


【解决方案1】:

Laravel Mix 0.8 及以上版本

与 laravel mix v0.8 一样,有简单的 api 选项可以做到这一点。要禁用 url() 文件加载器,请在 webpack.mix.js 中设置以下选项

mix.options({
    processCssUrls: false
});

Laravel Mix 0.7 及以下版本

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

url() 被css-loader 解释为导入。目前 CSS-Loader 是一种全有或全无的方法,所以我们需要禁用所有 url() 处理,这样做..

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

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

替换为

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

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

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

【讨论】:

  • 其实图片url处理有bug,0.8以后的版本都修复了,所以最好的建议是用最新的laravel-mix版本更新你的package.json配置(不要)不要忘记运行npm install),然后将mix.options({ processCssUrls: false }); 添加到你的webpack.mix.js。你可以在这里查看版本号:github.com/JeffreyWay/laravel-mix
猜你喜欢
  • 2021-08-25
  • 2017-08-23
  • 1970-01-01
  • 2021-08-06
  • 2017-09-04
  • 2018-07-26
  • 2020-08-26
  • 2020-09-29
  • 1970-01-01
相关资源
最近更新 更多