热更新:Chrome 插件开发提效

本文介绍了如何在Chrome插件开发中实现热更新,提高开发效率。通过结合Manifest V3、Webpack5和React18,实现了popup、content、background的局部热更新,以及public目录静态资源自动更新。文章详细阐述了改造过程,包括打包多文件、监听文件变动、配置HRM以适应Chrome的CSP限制,以及通过SSE实现content的自动加载。
摘要由CSDN通过智能技术生成

热更新:Chrome 插件开发提效

原文

Chrome Manifest V3 + Webpack5 + React18 热更新提升开发效率。

解决的问题

开发 Chrome 插件的同学想必都会遇到一个问题:
每次更新代码需要在 chrome://extensions 扩展程序中

  1. 找到对应的插件点击刷新按钮
  2. 重新点击唤起插件查看效果

特别的繁琐,严重影响开发效率。

在这里插入图片描述

本文借助 create-react-app reject 后的工程,改造实现:

  1. 支持现代 Web 开发一样的体验,React、TS、热更新(react-refresh)等
  2. 支持修改 popup 时,实时局部热更新
  3. 支持修改 content、background 时,无需手动刷新
  4. 支持静态资源 public 目录文件变动自动更新

实现过程

npx create-react-app crx-app --template typescript

进入工程目录

npm run eject

打包多文件

可能需要输出以下打包文件:

  1. main:主入口,create-react-app 项目主文件,可以用来本地网页开发时预览 popup、tab、panel、devtools 等
  2. popup、tab、panel、devtools 等输出 html,供 Chrome 插件展示页面
  3. content、background 输出 js,用来 Chrome 插件通信

一、 新增 config/pageConf.js,开发只需按需配置需要打包的输出的文件,内部自动会处理。

module.exports = {
   
  main: {
    // 必须需要 main 入口
    entry: 'src/pages/index',
    template: 'public/index.html',
    filename: 'index', // 输出为 index.html,默认主入口
  },
  background: {
   
    entry: 'src/pages/background/index',
  },
  content: {
   
    entry: 'src/pages/content/index',
  },
  devtools: {
   
    entry: 'src/pages/devtools/index',
    template: 'public/index.html',
  },
  newtab: {
   
    entry: 'src/pages/newtab/index',
    template: 'src/pages/newtab/index.html',
  },
  options: {
   
    entry: 'src/pages/options/index',
    template: 'src/pages/options/index.html',
  },
  panel: {
   
    entry: 'src/pages/panel/index',
    template: 'public/index.html',
  },
  popup: {
   
    entry: 'src/pages/popup/index',
    template: 'public/index.html',
  },
};

对应说明

type PageConfType = {
    
  [key: string]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值