实用的 Webpack 配置项

发布于 2021-12-15 13:28:04 字数 3472 浏览 1165 评论 0

如何指定 Alias

resolvealias 在引用 js/css 等文件的时候如果不希望记忆前面的路劲,可以使用 alias

module.exports = {
  //...
  resolve: {
    alias: {
      Utilities: path.resolve(__dirname, 'src/utilities/'),
      Templates: path.resolve(__dirname, 'src/templates/')
    }
  }
};

import Utility from '../../utilities/utility';

解决 css 晚于 DOM 渲染好导致的 Flash_of_unstyled_content 问题

css-loader 会在 js 加载好以后,将样式代码以行内的格式插入到页面中,晚于 DOM 渲染,使用 mini-css-extract-plugin 可以提前将css打包到指定文件夹,然后在html的head中提前引入就可以解决这个问题了。

npm i -D mini-css-extract-plugin

在 webpack 的配置文件中增加如下代码:

const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  //...
  plugins: [
      // ...
      new MiniCssExtractPlugin({
        filename: '[name].css'
      }),
  ],

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

在打包成功后可以看到

Entrypoint index = vendors~index~login.css vendors~index~login.bundle.js vendors~index.css vendors~index.bundle.js index.css index.bundle.js
Entrypoint login = vendors~index~login.css vendors~index~login.bundle.js login.css login.bundle.js

将对应的 css 文件,插入到 html 的 link 中,形成引用即可:

index.html

<link rel="stylesheet" href="./vendors~index~login.css ">
<link rel="stylesheet" href="./vendors~index.css ">
<link rel="stylesheet" href="./index.css ">

login.html

<link rel="stylesheet" href="./vendors~index~login.css ">
<link rel="stylesheet" href="./vendors~login.css ">
<link rel="stylesheet" href="./index.css ">

对打包的 css 文件进行压缩,提高下载速度

发布到线上环境的时候,可以将 CSS 进行压缩,在 prod 的 webpack 中配置可以使用 optimize-css-assets-webpack-plugin

npm i -D optimize-css-assets-webpack-plugin
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

module.exports = {
  optimization: {
      splitChunks: {
        chunks: 'all',
      },
  }
}

公司项目使用 css-extract 和 optimize 后的 js/css 大笑变化:

注:空单元格代表跟左边一列相等;n/a 表示没生成

Dev styleDev extractDev extract+optimizeProd styleProd extractProd extract+optimize
vendors~index~login.bundle.js1.1MB946KB154KB74.5KB
vendors~index.bundle.js9.3MB7.8MB1.3MB827KB
index.bundle.js379MB337KB53.8KB42.7KB
vendors~index~login.bundle.cssn/a203KBn/a76.2KB56.9KB
vendors~index.bundle.cssn/a1.4MBn/a526KB228KB
index.bundle.cssn/a27.5KBn/a10.0KB5.0KB

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

深巷少女

暂无简介

0 文章
0 评论
382 人气
更多

推荐作者

qq_aHcEbj

文章 0 评论 0

寄与心

文章 0 评论 0

13545243122

文章 0 评论 0

流星番茄

文章 0 评论 0

春庭雪

文章 0 评论 0

潮男不是我

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文