laravel 混合 sass 个图像而不是 found/hash
laravel mix sass images not found/hash
我是第一次与 Laravel 一起工作。在 5.4 版本中,他们引入了 laraval mix。我试图将我的 SASS 静态网站(我用 gulp 编译它)粘贴到资源文件夹中的 sass 文件中。这一切顺利,我的 SASS 将被编译到 public 映射中的 app.css 文件。
我有 1 个主要问题。 sass 文件 (resources/assets/images) 中的所有图像都没有像我希望的那样编译。
SASS 文件中的代码 (resources/assets/SASS/banners.scss)
section.module.parallax-1 {
background-image: url('../images/banner1.jpg');
}
编译并混入 (app.css)
section.module.parallax-1 {
background-image: url(/images/banner1.jpg?ef4f135bad144d886f07c8b65f757a85);
}
因此,不像我在 SASS 文件中那样将 url 编译为 css,而是将它编译为不同的东西,最后使用哈希。此外,在编译 sass 之后,它会生成一个图像映射,其中包含我在 SASS 文件中使用的图像。我的图像地图最初位于 resources/assets/images.
我不知道我做错了什么。我试图更改 sass 文件中的 url 但这无济于事。有人可以帮助我吗?或者还有其他解决方案吗?
webpack.mix代码/js
const mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
我现在遇到了同样的问题。据我所知,最新的 laravel 混合版本不再是这种情况。但是因为它还没有在 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"
},
我是第一次与 Laravel 一起工作。在 5.4 版本中,他们引入了 laraval mix。我试图将我的 SASS 静态网站(我用 gulp 编译它)粘贴到资源文件夹中的 sass 文件中。这一切顺利,我的 SASS 将被编译到 public 映射中的 app.css 文件。
我有 1 个主要问题。 sass 文件 (resources/assets/images) 中的所有图像都没有像我希望的那样编译。
SASS 文件中的代码 (resources/assets/SASS/banners.scss)
section.module.parallax-1 {
background-image: url('../images/banner1.jpg');
}
编译并混入 (app.css)
section.module.parallax-1 {
background-image: url(/images/banner1.jpg?ef4f135bad144d886f07c8b65f757a85);
}
因此,不像我在 SASS 文件中那样将 url 编译为 css,而是将它编译为不同的东西,最后使用哈希。此外,在编译 sass 之后,它会生成一个图像映射,其中包含我在 SASS 文件中使用的图像。我的图像地图最初位于 resources/assets/images.
我不知道我做错了什么。我试图更改 sass 文件中的 url 但这无济于事。有人可以帮助我吗?或者还有其他解决方案吗?
webpack.mix代码/js
const mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
我现在遇到了同样的问题。据我所知,最新的 laravel 混合版本不再是这种情况。但是因为它还没有在 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"
},