Vite和Webpack如何使用CDN包

为了精简打包输出的dist目录大小,我们可以引入CDN外部包的方式,来缩小打包的体积,加快打包速度。这里介绍ViteWebpack中如何引入React CDN外部包

一、Vite引入CDN包

1、安装插件

sh 复制代码
npm i @vitejs/plugin-react-refresh vite-plugin-cdn-import -D

如何之前在package.json有安装react,要记得清除。

2、手动配置

ts 复制代码
// vite.config.js
import reactRefresh from '@vitejs/plugin-react-refresh'
import importToCDN from 'vite-plugin-cdn-import'

export default {
    plugins: [
        importToCDN({
            modules: [
                {
                    name: 'react',
                    var: 'React',
                    path: `umd/react.production.min.js`,
                },
                {
                    name: 'react-dom',
                    var: 'ReactDOM',
                    path: `umd/react-dom.production.min.js`,
                },
            ],
        }),
    ],
}
  • name:模块名,也就是在项目中import引入时的包名,例如:import React, { useState } from 'react';
  • var:cdn外部包var方式定义的全局变量名。
  • path:cdn外部包的地址。

3、自动配置

ts 复制代码
// vite.config.js
import reactRefresh from '@vitejs/plugin-react-refresh'
import importToCDN, { autoComplete } from 'vite-plugin-cdn-import'

export default {
    plugins: [
        importToCDN({
            modules: [
                autoComplete('react'),
                autoComplete('react-dom')
            ],
        }),
        reactRefresh(),
    ],
}

自动配置支持的包:

"react" | "react-dom" | "react-router-dom" | 
"antd" | "ahooks" | "@ant-design/charts" | 
"vue" | "vue2" | "@vueuse/shared" | 
"@vueuse/core" | "moment" | 
"eventemitter3" | "file-saver" | 
"browser-md5-file" | "xlsx | "crypto-js" |
"axios" | "lodash" | "localforage"

二、Webpack引入CDN包

如何之前在package.json有安装react,要记得清除。

1、配置 config/config.js

ts 复制代码
export default defineConfig({
  // webpack5: {
  //   externals: {
  //     react: "React"
  //   }
  // },
  chainWebpack(config) {
    config.externals({
      // '模块名': '全局变量名'
      react: 'React',
    });
  }
})

2、修改html模版

打开src\pages\document.ejs,在标签中引入下面文件:

<script src="https://cdn.bootcdn.net/ajax/libs/react/18.2.0/umd/react.development.js"></script>

三、CDN开源包仓库

推荐CDN包仓库:https://www.bootcdn.cn/react/

推荐使用UMD版本,例如:

  • UMM:UMD版本通用的模块版本,支持多种模块方式
  • EJS:CommonJS-多用于Nodejs项目。
  • ESM:ECMAScript Modules,基于es6中esmodule静态引入机制。
相关推荐
旺旺大力包2 分钟前
【 Git 】git 的安装和使用
前端·笔记·git
雪落满地香18 分钟前
前端:改变鼠标点击物体的颜色
前端
余生H1 小时前
前端Python应用指南(二)深入Flask:理解Flask的应用结构与模块化设计
前端·后端·python·flask·全栈
outstanding木槿1 小时前
JS中for循环里的ajax请求不数据
前端·javascript·react.js·ajax
酥饼~1 小时前
html固定头和第一列简单例子
前端·javascript·html
一只不会编程的猫1 小时前
高德地图自定义折线矢量图形
前端·vue.js·vue
m0_748250931 小时前
html 通用错误页面
前端·html
来吧~1 小时前
vue3使用video-player实现视频播放(可拖动视频窗口、调整大小)
前端·vue.js·音视频
han_1 小时前
不是哥们,我的console.log突然打印不出东西了!
前端·javascript·chrome
魔术师卡颂1 小时前
最近看到太多 cursor 带来的焦虑,有些话想说
前端·aigc·openai