Chrome 插件框架 Plasmo 基本使用示例

📦 1. 安装 Plasmo

在项目目录下运行:

bash 复制代码
npm create plasmo@latest

按照提示选择:

  • Name: your-extension
  • Extension Type: Chrome (or multiple browsers)
  • TypeScript: 推荐 Yes
  • Manifest Version: MV3
  • Use React: Yes(Plasmo 推荐)

完成后会生成一个 Plasmo 扩展工程。


popup.tsx 编辑:

tsx 复制代码
function Popup() {
  return (
    <div style={{ padding: 16 }}>
      <h1>Hello Plasmo!</h1>
      <p>这是你的第一个 Plasmo 扩展。</p>
    </div>
  )
}

export default Popup

运行:

bash 复制代码
npm run dev

Plasmo 会自动生成浏览器扩展,并让你在开发者模式下安装。


🧲 3. 创建一个 Content Script(注入到网页的脚本)

新建文件:content.ts

ts 复制代码
console.log("Plasmo content script running!")

window.addEventListener("click", () => {
  console.log("你点击了页面!")
})

Plasmo 会自动把它加入 manifest,无需你配置 manifest.json。


🔥 4. 与页面进行 DOM 操作

ts 复制代码
// content.ts
const banner = document.createElement("div")
banner.innerText = "Hello from Plasmo!"
banner.style.cssText = `
  position: fixed;
  top: 20px;
  left: 20px;
  padding: 10px 20px;
  background: black;
  color: white;
  border-radius: 8px;
  z-index: 999999;
`
document.body.appendChild(banner)

🔄 5. Background Service Worker(后台脚本)

创建 background.ts

ts 复制代码
chrome.runtime.onInstalled.addListener(() => {
  console.log("扩展已安装!")
})

chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  if (msg.type === "PING") {
    sendResponse({ text: "PONG" })
  }
})

🔗 6. Content Script 与 Background 交互

content.ts:

ts 复制代码
chrome.runtime.sendMessage({ type: "PING" }, (response) => {
  console.log("后台回复:", response.text)
})

🎉 7. 打包扩展

bash 复制代码
npm run build

打包后输出在 build/ 目录。


📚 完整最小示例结构

复制代码
my-plasmo-extension/
├─ popup.tsx
├─ background.ts
├─ content.ts
├─ package.json
└─ plasmo.config.mjs

这就是一个可运行的 Plasmo 扩展最小示例。

相关推荐
BD_Marathon几秒前
NPM_常见命令
前端·npm·node.js
绿鸳4 分钟前
12.17面试题
前端
Huanzhi_Lin17 分钟前
禁用谷歌/google/chrome浏览器更新
前端·chrome
咸鱼加辣21 分钟前
【前端的crud】DOM 就是前端里的“数据库”
前端·数据库
kong790692825 分钟前
环境搭建-运行前端工程(Nginx)
前端·nginx·前端工程
成都证图科技有限公司33 分钟前
Bus Hound概述
前端
PythonFun1 小时前
WPS中表格行高无法手动调整怎么办?
前端·html·wps
IT_陈寒1 小时前
JavaScript性能优化:7个V8引擎内部原理帮你减少90%内存泄漏的实战技巧
前端·人工智能·后端
narukeu1 小时前
聊下 rewriteRelativeImportExtensions 这个 TypeScript 配置项
前端·javascript·typescript
开压路机1 小时前
模拟实现反向迭代器
前端·c++