【发布时间】:2020-04-03 20:52:20
【问题描述】:
我在使用 Laravel Vue 时遇到问题。我把我的app.scss 文件,然后使用 Laravel Mix 4.0 将它编译到公共文件夹。我不知道是什么让它出错,但它对我来说看起来很奇怪。这是我的webpack.mix.js
mix.webpackConfig({
output: {
filename: '[name].js',
chunkFilename:'js/[id].[chunkhash].js',
publicPath: '/',
},
resolve: {
extensions: ['.js', '.vue'],
alias: {
'@': __dirname + "/resources"
}
}
});
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.options({
processCssUrls: false
})
编译app.scss文件时我没有任何问题,但是当我添加@import将另一个scss文件导入我的.vue文件时
<style lang="sass">
@import '@/sass/public.scss'
</style>
然后npm run dev我在运行程序时遇到这样的错误。
但是如果我删除其中一个,例如删除 @import 或 .sass('resources/sass/app.scss', 'public/css', { implementation: require('node-sass') }) 然后再次 npm run dev 并运行程序。它运作良好。有没有人遇到过这样的问题?试过很多次改webpack,但不确定问题出在webpack上。
重点是我不想将我的 scss 文件导入main.js 文件,因为它会替换我的app.scss 样式。我想区分管理员页面和用户页面的样式
【问题讨论】:
-
你能试试
mix.options({extractVueStyles: true, processCssUrls: true })吗? -
得到了相同的结果@senty
-
我相信它正在发生,因为代码分块并且它试图在加载之前初始化 scss。我遇到的一种解决方法是在最顶部的 app.js 中创建一个空的
init.scss文件和require('../../sass/init.scss'); -
如果我把它放在我的
main.js文件中.. 它可以工作,但它会替换所有全局 css @senty -
不知道你为什么要这样做,但一些粗略的谷歌搜索表明,已经完成这项工作的人在 import 语句中添加了波浪号。尝试将
@import '@/sass/public.scss'更改为@import '~@/sass/public.scss'
标签: laravel vue.js webpack sass laravel-mix