webpack+sass

weixin_33751566發表於2018-01-06

我們希望用sass定義樣式,為了正常編譯,需要做如下配置。

為了使用sass,我們需要安裝sass的依賴包

在專案下,執行下列命令列npm install --save-dev sass-loader//因為sass-loader依賴於node-sass,所以還要安裝node-sassnpm install --save-dev node-sass

  當然了,使用樣式的話,css-loader和style-loader也是必須的依賴包,如果沒有安裝,可以類似上述的方法安裝

css-loader使你能夠使用類似@import 和 url(…)的方法實現 require()的功能;

style-loader將所有的計算後的樣式加入頁面中;

  二者組合在一起使你能夠把樣式表嵌入webpack打包後的JS檔案中。


下面是webpack.config.js檔案的部分配置:

6437054-3c61ed926ddf200b.gif

varExtractTextPlugin = require('extract-text-webpack-plugin');//css樣式從js檔案中分離出來,需要通過命令列安裝 extract-text-webpack-plugin依賴包module.exports = {

    ....

    module: {

        loaders: [

            //解析.css檔案            {

                test: /\.css$/,

                loader: ExtractTextPlugin.extract("style", 'css')

            },

            //解析.vue檔案            {

                test: /\.vue$/,

                loader: 'vue'            },

            //解析.scss檔案,對於用 import 或 require 引入的sass檔案進行載入,以及...宣告的內部樣式進行載入            {

                test: /\.scss$/,

                loader: ExtractTextPlugin.extract("style", 'css!sass')//這裡用了樣式分離出來的外掛,如果不想分離出來,可以直接這樣寫 loader:'style!css!sass'            }

        ]

    },

    //.vue檔案的配置,以下是為了在.vue檔案中使用ES6語法(必須安裝babel相關的依賴包),以及把使用css或sass語法的樣式提取出來,如果不需要可以忽略    vue: {

        loaders: {

            js: 'babel',

            css: ExtractTextPlugin.extract("css"),

            sass: ExtractTextPlugin.extract("css!sass")           

        },

    },

    plugins: [

        newExtractTextPlugin("style.css")//提取出來的樣式放在style.css檔案中    ]

    ....

}

6437054-9fda6df0867a6161.gif


sass的使用如下,例如:

引入外部樣式,下面兩種寫法都可以使用:

import '../../css/test.scss'require('../../css/test2.scss');

在.vue檔案中使用

//sass語法樣式