前端项目搭建部署全流程(二):webpack配置

1.前言

上一篇文章已经简单的配置了一些webpack的配置,这一篇文件主要是基于项目增加一些loader的处理,后续根据实际使用情况在继续更新配置

2.webpack CSS配置

2.1.安装依赖
yarn add css-loader style-loader --dev

css-loader 会对 @importurl() 进行处理,就像 js 解析 import/require() 一样

style-loader把 CSS 插入到 DOM 中

2.2.webpack配置
module: {
    rules: [
        ...
        {
            test: /\.css$/,
            use: [
                { loader: 'style-loader' },
                {
                    loader: 'css-loader',
                    options: {
                        modules: true, // 启用css modules
                    },
                },
            ],
        },
    ],
},

3.webpack sass less配置

3.1.安装依赖
yarn add less less-loader node-sass sass-loader--dev

less是一个Css 预编译器

less-loaderwebpack 将 Less 编译为 CSS 的 loader

node-sass是一种预处理器脚本语言,可以解释或编译成层叠样式表(CSS)

sass-loader加载 Sass/SCSS 文件并将他们编译为 CSS

3.2.webpack配置
module: {
    rules: [
        ...
        {
            test: /\.sass$/,
            use: [
                { loader: 'style-loader' },
                {
                    loader: 'css-loader',
                    options: {
                        modules: {
                            localIdentName: '[hash:base64:6]',
                        },
                    },
                },
                { loader: 'sass-loader' },
            ],
        },
        {
            test: /\.less$/,
            use: [
                { loader: 'style-loader' },
                {
                    loader: 'css-loader',
                    options: {
                        modules: {
                            localIdentName: '[hash:base64:6]',
                        },
                    },
                },
                { loader: 'less-loader' },
            ],
        },
    ],
},
3.3.node-saas单独安装
npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

4.webpack 静态资源配置

4.1.安装依赖
yarn add file-loader url-loader --dev

file-loader指示webpack发出所需的对象作为文件并返回其公共URL

url-loader将文件作为base64编码的URL加载

4.2.webpack配置
module: {
    rules: [
        ...
        {
            test: /\.(jep?g|png|gif)$/,
            use: {
                loader: 'file-loader',
                options: {
                    name: 'img/[name].[ext]',
                },
            },
        },
        {
            test: /woff|ttf|eot|svg|otf/,
            use: {
                loader: 'file-loader',
            },
        },
        {
            test: /\.jpe?g|png|gif/, // 图片在范围内使用url-loader处理,转化成base64,范围外使用file-loader处理
            use: {
                loader: 'url-loader',
                options: {
                    limit: 100 * 1024,
                    name: `img/[name].[ext]`,
                },
            },
        },
    ],
},

5.webpack plugin配置

5.1.安装插件
yarn add mini-css-extract-plugin optimize-css-assets-webpack-plugin uglifyjs-webpack-plugin --dev
5.2.mini-css-extract-plugin

mini-css-extract-plugin本插件会将 CSS 提取到单独的文件中,为每个包含 CSS 的 JS 文件创建一个 CSS 文件,并且支持 CSS 和 SourceMaps 的按需加载

plugins: [
    new MiniCssPlugin({
        filename: 'css/[name].css',
    }),
],
module: {
    rules: [
        ...
        {
            test: /\.css$/,
            use: [
                MiniCssPlugin.loader,
                { loader: 'style-loader' },
                {
                    loader: 'css-loader',
                    options: {
                        modules: true, // 启用css modules
                    },
                },
            ],
        },
    ],
},
5.3.optimize-css-assets-webpack-plugin

optimize-css-assets-webpack-plugin用于优化或者压缩CSS资源

  • assetNameRegExp: 正则表达式,用于匹配需要优化或者压缩的资源名。默认值是 /\.css$/g
  • cssProcessor: 用于压缩和优化CSS 的处理器,默认是 cssnano.这是一个函数,应该按照 cssnano.process 接口(接受一个CSS和options参数,返回一个Promise)
  • canPrint: {bool} 表示插件能够在console中打印信息,默认值是true
optimization: {
    minimizer: [
        new OptimizeCssAssetsPlugin({
            assetNameRegExp: /\.css$/g,
            cssProcessor: require('cssnano'),
            cssProcessorOptions: { safe: true, discardComments: { removeAll: true } },
            canPrint: true,
        }),
    ],
},
5.4.uglifyjs-webpack-plugin

uglifyjs-webpack-plugin此插件使用 uglify-js 压缩你的 JavaScript

optimization: {
        new UglifyjsPlugin({
            uglifyOptions: {
                output: {
                    beautify: false, // 不格式化
                    comments: false, // 不保留注释
                },
                compress: {
                    drop_console: true, // 去除打印语句
                },
            },
        }),
    ],
},

第一次记录写文章,文笔有限,多多包涵,ヾ(´ー`)ノ゛谢谢♪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值