我是靠谱客的博主 潇洒白羊,最近开发中收集的这篇文章主要介绍webpack基础用法(4):文件指纹策略和压缩1 文件指纹策略2 代码压缩,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 1 文件指纹策略
    • 1.1 JS的文件指纹设置
    • 1.2 CSS的文件指纹设置
      • 1.2.1 安装插件
      • 1.2.2 配置
    • 1.3 图片的文件指纹设置
  • 2 代码压缩
    • 2.1 JS压缩
    • 2.2 CSS压缩
      • 2.2.1 安装依赖
      • 2.2.2 配置
    • 2.3 html文件压缩
      • 2.3.1 安装依赖
      • 2.3.2 配置

1 文件指纹策略

文件指纹是指打包后输出的文件名的后缀
指纹策略:

  • Hash:和整个项目的构建相关,只要项目文件有修改,整个项目构建的hash值就会更改
  • Chunkhash:和 webpack 打包的 chunk 有关, 不同的 entry 会生成不同的 chunkhash 值
  • Contenthash:根据文件内容来定义hash,文件内容不变,则 contenthash 不变

1.1 JS的文件指纹设置

设置 output 的 filename,使用 [chunkhash]

module.exports = {
    ...,
    output: {
        ...,
        filename: '[name][chunkhash:8].js'
    },
    ...
}

1.2 CSS的文件指纹设置

设置 MiniCssExtractPlugin(将css提取成独立的文件)的 filename, 使用[contenthash]

1.2.1 安装插件

npm i mini-css-extract-plugin -D

1.2.2 配置

...
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
...
module.exports = {
    ...,
    module: {
        rules: [
            ...,
            {test: /.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader']},
			...
        ]
    },
    plugins: {
        ...,
        new MiniCssExtractPlugin({
        	filename: '[name][contenthash:8].css'
       	})
    },
    ...
}

1.3 图片的文件指纹设置

设置 file-loader 的 name,使⽤[hash]
在这里插入图片描述

module.exports = {
    ...,
    module: {
        rules: [
            ...,
            {test: /.(png|jpg|gif|jpeg)$/, use: [
                {
                    loader: 'file-loader',
                    options: {
                        name: 'img/[name][hash:8].[ext]'
                    }
                }
            ]},
        ]
    },
    ...
}

2 代码压缩

2.1 JS压缩

webpack4 内置了 uglifyjs-webpack-plugin

2.2 CSS压缩

使用 optimize-css-assets-webpack-plugin,同时使用 cssnano

2.2.1 安装依赖

npm install optimize-css-assets-webpack-plugin cssnano -D

2.2.2 配置

...
const OptimizeCSSAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');
...
module.exports = {
    ...,
    module: {
        rules: [
            ...,
            {test: /.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader']},
			...
        ]
    },
    plugins: {
        ...,
        new OptimizeCSSAssetsWebpackPlugin( {
            assetNameRegExp: /.css$/g,
            cssProcessor: require('cssnano')
        })
    },
    ...
}

2.3 html文件压缩

修改 html-webpack-plugin,设置压缩参数

2.3.1 安装依赖

npm i html-webpack-plugin -D

2.3.2 配置

const path = require('path');
...
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    ...,
   
    mode: 'production',
    plugins: [
        ...,
        new HtmlWebpackPlugin({
            template: path.join(__dirname, 'src/index.html'),
            filename: "index.html",
            chunks: ['index'],
            inject: true,
            minify: {
                html5: true,
                collapseWhitespace: true, //是否去掉空格
                preserveLineBreaks: false, //是否保留换行
                minifyCSS: true,
                minifyJS: true,
                removeComments: false
            }
        }),
        new HtmlWebpackPlugin({
            template: path.join(__dirname, 'src/search.html'),
            filename: "search.html",
            chunks: ['search'],
            inject: true,
            minify: {
                html5: true,
                collapseWhitespace: true,
                preserveLineBreaks: false,
                minifyCSS: true,
                minifyJS: true,
                removeComments: false
            }
        })
    ]
}

最后

以上就是潇洒白羊为你收集整理的webpack基础用法(4):文件指纹策略和压缩1 文件指纹策略2 代码压缩的全部内容,希望文章能够帮你解决webpack基础用法(4):文件指纹策略和压缩1 文件指纹策略2 代码压缩所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部