zoukankan      html  css  js  c++  java
  • webpack 代码压缩

    HTML CSS 和 JS 的代码压缩

    1. HTML 压缩

    html-webpack-plugin,这是一个非常强大的插件

    安装

    npm install html-webpack-plugin -D
    

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

    "use strict";
    // 生成环境没有热更新,生产环境热更新没用
    const path = require("path");
    const webpack = require("webpack");
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
    const HtmlWebpackPlugin = require("html-webpack-plugin");
    module.exports = {
      entry: "./src/search.js",
      output: {
        path: path.join(__dirname, "dist"),
        // 输出路径 | 加入 js 文件指纹
        filename: "[name]_[chunkhash:8].js",
      },
      mode: "production",
      module: {
        rules: [
          {
            test: /.js$/,
            use: "babel-loader",
          },
          {
            test: /.css$/,
            use: [MiniCssExtractPlugin.loader, "css-loader"],
            // style-loader 的顺序必须在 css-loader 之前
          },
          {
            test: /.less$/,
            use: [MiniCssExtractPlugin.loader, "css-loader", "less-loader"],
          },
          {
            test: /.(png|jpg|gif|jpeg)$/,
            use: [
              {
                loader: "file-loader",
                options: {
                  name: "[name]_[hash:8].[ext]",
                },
              },
            ],
          },
          {
            test: /.(woff|woff2|eot|ttf|otf)$/,
            use: [
              {
                loader: "file-loader",
                options: {
                  name: "[name]_[hash:8].[ext]",
                },
              },
            ],
          },
        ],
      },
      plugins: [
        // 这个插件和 style-loader 插件互斥
        // 只能选择一个
        new MiniCssExtractPlugin({
          filename: "[name]_[contenthash:8].css",
        }),
        new OptimizeCSSAssetsPlugin({
          assetNameRexExp: /.css$/g,
          cssProcessor: require("cssnano"),
        }),
        new HtmlWebpackPlugin({
          // html webpack plugin 的模板,template
          template: path.join(__dirname, "src/search.html"),
          // 指定打包出来的 html 的文件名称
          filename: "search.html",
          // 指定生成的 HTML 要使用哪些 chunk
          chunk: ["search"],
          // 打包出来的 chunk 像 css 、js 会自动注入到 html 里面
          inject: true,
          // 压缩的选项
          minify: {
            html5: true,
            collapseWhitespace: true,
            preserveLineBreaks: false,
            minifyCSS: true,
            minifyJS: true,
            removeComments: false,
          },
        }),
        new HtmlWebpackPlugin({
          // html webpack plugin 的模板,template
          template: path.join(__dirname, "src/index.html"),
          // 指定打包出来的 html 的文件名称
          filename: "index.html",
          // 指定生成的 HTML 要使用哪些 chunk
          chunk: ["search"],
          // 打包出来的 chunk 像 css 、js 会自动注入到 html 里面
          inject: true,
          // 压缩的选项
          minify: {
            html5: true,
            collapseWhitespace: true,
            preserveLineBreaks: false,
            minifyCSS: true,
            minifyJS: true,
            removeComments: false,
          },
        }),
      ],
    };
    

    2. CSS 压缩

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

    记得要安装预处理器 cssnano

    npm install optimize-css-assets-webpack-plugin -D
    npm install cssnano -D
    
    module.exports = {
      entry: {
        app: './src/app.js',
        search: './src/search/js'
      },
      output: {
        filename: '[name][chunkhash:8].js',
        path: __dirname + '/dist'
      },
      plugins: [
        new OptimizeCSSAssetsPlugin({
          assetNameRegExp: /.css$/g,
          cssProcessor: require('cssnano')
        })
      ]
    };
    

    3. JS 文件的压缩

    webpack 内置了 uglifyjs-webpack-plugin 插件 ,我们默认打包出来的文件就已经压缩过了。

    当然我们可以手动的安装,然后调整里面的配置,加入额外的参数,比如开启并行压缩。

  • 相关阅读:
    cuda9.0 中不存在libnppi.so
    深度学习训练踩坑记
    采用代理之后,pip 运行报错socks
    摄像机模型
    段错误:使用opencv打开视频流
    ffmpeg+cuda+opencv
    pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
    【TCP/IP详解】BOOTP:引导程序协议
    【TCP/IP详解】TFTP:简单文件传送协议
    【TCP/IP详解】IGMP Internet组管理协议
  • 原文地址:https://www.cnblogs.com/ssaylo/p/13646823.html
Copyright © 2011-2022 走看看