1、安装sass的依赖包
npm install node-sass --save-dev
npm install sass-loader --save-dev //sass-loader依赖于node-sass
npm install style-loader css-loader --save-dev
2、打开webpack.base.config.js在loaders里面加上添加配置
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.scss$/, //-------------------------------------添加此处
loaders: ["style", "css", "sass"]
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
}
3、在vue文件style标签声明一下
<style lang="scss" scoped="" type="text/css"></style>
4、在vue文件引入sass文件遇到的一些问题
<style lang="stylus">
//使用 ../来匹配路径可以正确导入
@import '../assets/css/_mixin.scss'; //正确
//使用 alias 中 配的 @ 就不能用了
@import '@/assets/css/_mixin.scss'; //错误
</style>
解决方法:@import '~@/assets/scss/helpers/_mixin';
原因:CSS loader 会把把非根路径的url解释为相对路径, 加~前缀才会解释成模块路径。