打包优化---React

打包优化--体积

1.安装包npm i source-map-explorer

2.配置命令指定要分析的js文件

"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject",
    //添加这行代码  分析 build/static/ 下面的所有js文件夹
    "analyze": "source-map-explorer 'build/static/js/*.js"
  },

3.运行 npm run analyze

打包优化--CDN

CDN是一种内容分发网络服务,当用户请求网站内容时,由离用户最近的服务器将缓存的资源内容传递给用户


1. 把需要做CDN缓存的文件排除在打包之外(react、react-dom)

2. 以CDN的方式重新引入资源 (react、react-dom)

craco.config.js

const { getPlugin, pluginByName } = require("@craco/craco");
const path = require("path");

module.exports = {
  // webpack 配置
  webpack: {
    //配置别名
    alias: {
      "@": path.resolve(__dirname, "src"),
    },
    configure: (webpackConfig) => {
      let cdn;
      whenProd(() => {
        // key: 不参与打包的包(由dependencies依赖项中的key决定)
        // value: cdn文件中 挂载于全局的安量名称 为了替换之前在开发环境下
        webpackConfig.externals = {
          react: "React",
          "react-dom": "ReactDOM",
        };

        // 配置现成的cdn资源地址
        // 实际开发的时 用公司自己花钱买的cdn服务器
        cdn = {
          js: [
            "https://",
            "https://",
          ],
        };

        // 通过 htnlWebpackPlugin捂件 在public/index.htnl注入cdn资源
        const { isFound, match } = getPlugin(
          webpackConfig,
          pluginByName("HtmlWebpackPlugin")
        );
        if (isFound) {
          // 找到了HtmlWebpackPlugin的括件
          match.userOptions.cdn = cdn;
        }
        return webpackConfig;
      });
    },
  },
};

public/index.html

<% htmlWebpackPlugin.options.cdn.js.forEach(cdnURL=> { %>
    <script src="<%= cdnURL %>"></script>
<% }) %>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值