用webpack构建项目(6)-通过MiniCssExtractPlugin提取样式到单独的css文件中和配置postcss-loader

安装提取样式的插件

    npm i mini-css-extract-plugin -D
    npm i postcss-loader postcss -D

项目目录结构

    F:\webpack-demo
    ├── dist/
    |  ├── index.html
    |  ├── main.css             <!-- 通过mini-css-extract-plugin打包提取的css样式文件 -->
    |  └── main.js
    ├── package.json
    ├── postcss.config.js       <!-- postcss配置文件 -->
    ├── public/
    |  └── index.html
    ├── README.md
    ├── src/
    |  ├── index.js
    |  ├── less.less
    |  ├── sass.sass
    |  ├── scss.scss
    |  ├── styl.styl
    |  └── style.css
    ├── webpack.common.js
    ├── webpack.dev.js
    ├── webpack.prod.js
    └── webpack.test.js

配置webpack.common.js

    const path = require("path");
    const HtmlWebpackPlugin = require("html-webpack-plugin");           // 引入html-webpack-plugin插件
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");    // 引入mini-css-extract-plugin插件

    module.exports = {
        mode:"none",                // 模式(mode):webpack 使用相应模式的内置优化
        entry: "./src/index.js",    // 入口(entry):webpack打包的入口
        output: {                   // 输出(output):webpack编译打包后的文件输出的位置
            filename: 'main.js',
            path: path.resolve(__dirname, 'dist'),
            clean: true,            // 每次构建前清理 /dist 目录
        },
        plugins:[                   // 插件(plugin):打包优化,资源管理,注入环境变量。
            new HtmlWebpackPlugin({
                title:"webpack-笔记",                // 用于生成的HTML文档的标题
                filename: "index.html",             // 指定打包生成html文件的名称
                template: "./public/index.html",    // 指定使用哪个html文件为模板,如果不指定会使用默认配置
                minify: {                           // 优化html-webpack-plugin生成的html文件
                    collapseWhitespace: true,       // 设置为true 压缩html,去掉html文件中的空格,换行
                },
                inject: true,                       // 默认为true,打包和自动引入js、css等文件。  设置为false不会自动引入js、css等文件
                // chunks: ["main"],  用于多入口,指定加载哪些入口文件(chunks),多页应用会用到
            }),
            new MiniCssExtractPlugin()              // 配置MiniCssExtractPlugin后就不在需要style-loader了
        ],
        module: {                   // loader:处理其他类型的文件,webpack只能处理JavaScript和JSON文件,要处理其他文件就需要loader
            rules: [                // 处理css
                {
                    test: /\.css$/i,
                    use: [MiniCssExtractPlugin.loader,
                        // 'style-loader',
                        'css-loader',
                        'postcss-loader'],
                    // 保证 loader 的先后顺序:'style-loader' 在前,而 'css-loader' 在后。
                    // css-loader先处理css文件,在处理css样式
                },
                {                   // 处理less
                    test: /\.less$/i,
                    use: [
                        MiniCssExtractPlugin.loader,
                        {
                            loader: 'css-loader', // 转化 CSS 为 CommonJS
                        },
                        {
                            loader: 'postcss-loader',
                        },
                        {
                            loader: 'less-loader', // 编译 Less 为 CSS
                        },
                    ],
                },
                {                   // 处理sass/scss
                    test: /\.s[ac]ss$/i,
                    use: [
                        MiniCssExtractPlugin.loader,
                        'css-loader',   // 将 CSS 转化成 CommonJS 模块,
                        'postcss-loader',
                        'sass-loader',  // 将 Sass 编译成 CSS
                    ],
                },
                {                   // 处理styl
                    test: /\.styl$/,
                    use: [
                        MiniCssExtractPlugin.loader,
                        {
                            loader: "css-loader", // 将 CSS 转为 CommonJS
                        },
                        {
                            loader: 'postcss-loader',
                        },
                        {
                            loader: "stylus-loader", // 将 Stylus 编译为 CSS
                        },
                    ],
                },
            ],
        }
    };

loader参考:

MiniCssExtractPlugin
postcss-loader
postcss
postcss中文

posted @ 2019-08-06 22:26  氵灬  阅读(182)  评论(0编辑  收藏  举报