我第一次和Laravel一起工作。随着5.4版本,他们推出了laraval混合。我试图将我的静态网站的SASS(我用gulp编译)粘贴到资源文件夹中的sass文件中。这很顺利,我的SASS将被编译到公共地图中的app.css文件中。
我有一个主要问题。 sass文件(资源/资产/图像)中的所有图像都没有像我希望的那样进行编译。
SASS文件中的代码(资源/资产/ SASS / banners.scss)
section.module.parallax-1 {
background-image: url('../images/banner1.jpg');
}
使用mix(app.css)编译
section.module.parallax-1 {
background-image: url(/images/banner1.jpg?ef4f135bad144d886f07c8b65f757a85);
}
因此,不是像我在SASS文件中那样将url编译为css,而是将其编译为与最后的哈希不同的东西。此外,在编译sass之后,它会生成一张图像映射,其中包含我在SASS文件中使用的图像。我的图像地图最初位于资源/资产/图像。
我不知道自己做错了什么。我试图更改我的sass文件中的URL,但这无济于事。有人可以帮助我吗?或者还有其他解决方案吗?
webpack.mix code / js
const mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
答案 0 :(得分:12)
我现在有同样的问题。据我所知,最新的laravel mix版本不再是这种情况。但是因为它还没有上npmjs
您可以使用以下修复程序:
webpack.mix.js中的添加
mix.options({
processCssUrls: false // Process/optimize relative stylesheet url()'s. Set to false, if you don't want them touched.
});
然后将node_modules/laravel_mix/setup/webpack.config.js
复制到您的根目录。
(与webpack.mix.js相同)
从新的webpack.config.js文件中查找并删除此字符串
{ loader: 'resolve-url-loader' + sourceMap },
完成后,您必须更新npm脚本以使用webpack.config.js
文件。
在package.json
中使用这些脚本
"scripts": {
"dev": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules",
"watch": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules",
"hot": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot",
"production": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules"
},