当前位置: 首页 > news >正文

Vite项目构建chrome extension,实现多入口

本项目使用Vite5 + Vue3进行构建。

要使用vite工程构建浏览器插件,无非就是要实现popup页面和options页面。这就需要在项目中用到多入口打包(生成多个html文件)。

实现思路:

  1. 通过配置vite工程,使得项目打包后有两个html文件。
  2. 同时打包入口打包background.js。
  3. 在manifest.json文件中配置popup、options、background等内容。
  4. 将项目中的manifest.json文件打包至dist目录下。

第一步、创建Vue3项目并调整目录结构

npm create vue@latest

通过此命令创建项目,创建后调整项目目录结构,由下图所示:
在这里插入图片描述
项目根目录的index.html打包后配置为popup,options.html配置为options。
将manifest.json放在src目录下,当然也可以放在public目录下(打包时vite自动将静态资源打包至dist目录下)。放在src目录下更符合个人的开发模式。

第二步、编写index.html和options.html

由于index.html打包后配置为popup页面,所以应该这样写:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><link rel="icon" href="/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vite App</title></head><body><div id="app"></div><!--    引入popup的入口ts--><script type="module" src="src/popup/main.ts"></script></body>
</html>

同样options.html应引入src/options/main.ts

第三步、编写popup/main.ts和options/main.ts

两者的内容基本相同:

import '../assets/main.css'import { createApp } from 'vue'
import elementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// popup页面引入Popup组件,options页面引入Options组件
import Popup from './Popup.vue'const app = createApp(Popup)
app.use(elementPlus)
app.mount('#app')

第四步、编写vite配置文件

此文件主要实现两部分内容,其他实现读者可自行添加。

  1. 将src目录下的manifest.json打包构建时移到dist目录下。
  2. 配置多入口文件。
import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteStaticCopy } from 'vite-plugin-static-copy'
import { resolve } from 'path'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),viteStaticCopy({targets: [{ src: 'src/*.json', dest: './' },]})],build: {rollupOptions: {input: {index: resolve(__dirname, 'index.html'),options: resolve(__dirname, 'options.html'),background: resolve(__dirname, 'src/background.ts'),},output: {entryFileNames: `[name].js`,}},outDir: 'dist',},resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}
})

第五步、编写manifest.json文件

{"name": "xxx","version": "1.0","description": "xxx","homepage_url": "https://xxx.com","manifest_version": 3,"icons": {"16": "logo.png","48": "logo.png","64": "logo.png","128": "logo.png"},"commands": {"reload_extension": {"suggested_key": {"default": "Ctrl+Shift+K","mac": "Command+Shift+K"},"global": true,"description": "Toggle My Extension"}},"action": {"default_icon": "logo.png","default_popup": "index.html"},"options_page": "options.html","background": {"service_worker": "background.js","type": "module"},"permissions": ["management","scripting","notifications","contextMenus","webRequest","storage","tabs","activeTab","nativeMessaging"]
}

通过以上的几个步骤,即可实现浏览器插件使用vue项目开发,同时支持popup页面和options页面,以及background.js。
在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/366324.html

相关文章:

  • 【vector模拟实现】附加代码讲解
  • 本地运行ChatTTS
  • 应用解析 | 面向智能网联汽车的产教融合解决方案
  • 华为设备动态路由OSPF(单区域+多区域)实验
  • R语言探索与分析19-CPI的分析和研究
  • 【C++ | 拷贝构造函数】一文了解C++的 拷贝(复制)构造函数
  • 【工具】Vmware17 安装mac(13.6.7)虚拟机
  • mac node版本切换 nvm install nvm ls-remote N/A问题
  • 牛客小白月赛95
  • Python实现调用并执行Linux系统命令
  • 古字画3d立体在线数字展览馆更高效便捷
  • 编写程序,提示用户输入以米/秒(m/s)为单位的速度v和以米/秒的平方(m/s)为单位的加速度 a,然后显示最短跑道长度。
  • k8s 对外发布(ingress)
  • FL Studio21.2.7最新中文破解版免费激活,音乐制作全掌握!
  • 2 - 寻找用户推荐人(高频 SQL 50 题基础版)
  • 高考志愿填报有哪些技巧和方法
  • codereview时通常需要关注哪些
  • DSP28335模块配置模板系列——定时器中断配置模板
  • 使用 Apache Commons Exec 自动化脚本执行实现 MySQL 数据库备份
  • 【中间件系列】浅析redis是否适合做消息队列
  • [NOVATEK] NT96580行车记录仪功能学习笔记
  • 创新案例 | AI数据驱动下的全域数字化转型的五大关键洞见
  • 学习笔记——网络参考模型——TCP/IP模型(网络层)
  • AI初识--LLM、ollama、llama都是些个啥?
  • 【全开源】JAVA打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
  • LeetCode 两数之和 + 三数之和
  • Switch刷机:安装Android系统和Linux系统
  • DeepDriving | 多目标跟踪算法之SORT
  • 实验演示方波是由正弦波叠加而成的
  • 进口电动流量调节阀的选型-美国品牌