React 项目打包优化

发布于 2025-02-28 16:41:44 字数 2276 浏览 6 评论 0

包体积可视化分析

安装

npm i source-map-explorer -D

package.json 中配置命令

{
  "scripts": {
    "analyze": "source-map-explorer 'build/static/js/*.js'"
  }
}

CDN 配置

对第三方包使用 CDN 优化,把体积较大的非业务 JS 文件,比如 React、react-dom,使用 CDN

分析说明 :通过 craco 来修改 webpack 配置,从而实现 CDN 优化

craco.config.js

// 添加自定义对于 webpack 的配置

const path = require('path')
const { whenProd, getPlugin, pluginByName } = require('@craco/craco')

module.exports = {
  // webpack 配置
  webpack: {
    // 配置别名
    alias: {
      // 约定:使用 @ 表示 src 文件所在路径
      '@': path.resolve(__dirname, 'src')
    },
    // 配置 webpack
    // 配置 CDN
    configure: (webpackConfig) => {
      // webpackConfig 自动注入的 webpack 配置对象
      // 可以在这个函数中对它进行详细的自定义配置
      // 只要最后 return 出去就行
      let cdn = {
        js: [],
        css: []
      }
      // 只有生产环境才配置
      whenProd(() => {
        // key:需要不参与打包的具体的包
        // value: cdn 文件中 挂载于全局的变量名称 为了替换之前在开发环境下
        // 通过 import 导入的 react / react-dom
        webpackConfig.externals = {
          react: 'React',
          'react-dom': 'ReactDOM'
        }
        // 配置现成的 cdn 资源数组 现在是公共为了测试
        // 实际开发的时候 用公司自己花钱买的 cdn 服务器
        cdn = {
          js: [
            'https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0/umd/react.production.min.js',
            'https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0/umd/react-dom.production.min.js',
          ],
          css: []
        }
      })

      // 都是为了将来配置 htmlWebpackPlugin 插件 将来在 public/index.html 注入
      // cdn 资源数组时 准备好的一些现成的资源
      const { isFound, match } = getPlugin(
        webpackConfig,
        pluginByName('HtmlWebpackPlugin')
      )

      if (isFound) {
        // 找到了 HtmlWebpackPlugin 的插件
        match.userOptions.cdn = cdn
      }

      return webpackConfig
    }
  }
}

public/index.html

<body>
  <div id="root"></div>
  <!-- 加载第三发包的 CDN 链接 -->
  <% htmlWebpackPlugin.options.cdn.js.forEach(cdnURL => { %>
    <script src="<%= cdnURL %>"></script>
  <% }) %>
</body>

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

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

发布评论

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

关于作者

以为你会在

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

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