8

我是第一次使用 Laravel。在 5.4 版本中,他们引入了 laraval mix。我试图将静态网站的 SASS(我用 gulp 编译)粘贴到资源文件夹中的 sass 文件中。一切顺利,我的SASS会被编译成公共地图中的app.css文件。

我有 1 个主要问题。sass 文件(资源/资产/图像)中的所有图像都没有像我想要的那样编​​译。

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 文件中使用的图像生成图像映射。我的图像地图最初位于资源/资产/图像。

我不知道我做错了什么。我试图更改我的 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');
4

1 回答 1

15

我现在有同样的问题。据我所知,最新的 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"
},
于 2017-02-22T20:10:24.097 回答