Webpack-postcss的使用

972 阅读2分钟

什么是postcss?

postcss是一个通过javascript来转换样式的工具

它能够帮助我们对css进行一些转换和适配

但实现这些功能需要依赖于他的相关插件

安装postcss工具的相关包与插件

安装postcss及postcss-cli

npm i postcss postcss-cli -D

安装postcss-loader

​ postcss-loader可单独使用,但一般会配合webpack使用,如果要配合webpack使用postcss,则需要安装postcss-loader

npm i postcss-loader -D
// 如果要在webpack中使用postcss就需要下载postcss-loader

安装postcss预设,postcss-preset-env (重要)

安装并使用该预设时,预设的相关插件就包含了

​ 1.补齐浏览器前缀 --> autoprefixer

​ 2.css3兼容

等相关兼容性的功能插件,所以无需单独去安装自动补齐浏览器前缀等兼容插件

  • 安装:
npm i postcss-preset-env -D
//该预设安装后可对部分版本较高的css代码进行兼容
  • 使用:
/* webpack.config.js */

{
    test:/\.css$/,
    use:[
        "style-loader",
        "css-loader",
        "postcss-loader"
    ]
}

处理less文件

​ 通常我们在编译css时一般喜欢用less或者sass之类的css扩展语言去编写css,他是由.less后缀的单独的一种文件,webpack打包时并不认识less文件,所以需要安装相应的loader来处理less文件!

安装与使用less和less-loader

  • 安装:

    npm i less less-loader -D
    // less是语言本身的核心,而less-loader则是将less文件转换为css
    
  • 使用:

    /* webpack.config.js */
    
     {
            test: /\.less$/i,
            loader: [
              'style-loader',
              'css-loader',
              'postcss-loader'
              'less-loader',
            ],
     },
    

less-loader相关文档:less-loader | webpack 中文文档 (docschina.org)

使用mini-css-extract-plugin插件将css代码单独提取成.css文件

​ 通常,我们在js或css中书写的代码,如果通过style-loader去处理,它相当于将我们的css代码写在style标签内并插入到html文件里,所以如果我们需要单独将这些css代码抽离出一个单独的.css文件,那么就需要用到该插件,请注意,该插件和postcss没有直接关系,使用该插件不要和style-loader一起使用,style-loader是将css写入style标签并插入到html文件,而本插件是单独提取成单独文件,两者冲突!

  • 安装:

    npm i mini-css-extract-plugin -D
    
  • 使用:

    /* webpack.config.js */
    
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    
    module:{
        rules:[
            {
                test:/\.css$/i,
                use:[
                    // 在use最前处使用,相当于替换style-loade位置
                    MiniCssExtractPlugin.loader,
                    "css-loader",
                    "postcss-loader"
                ],
            },
        ]
    },
    plugins: [
        new MiniCssExtractPlugin({
           // 使用filename配置可以指定输出的css的文件名和文件位置
            filename:'css/[name]_[hash:6].css'
        })
    ],
    

    有关更多MiniCssExtractPlugin的相关配置:

    MiniCssExtractPlugin | webpack 中文文档 (docschina.org)