mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-05-13 17:30:44 +08:00
新建 BillNote_extension/ 工作空间(基于 vitesse-webext 骨架,Vue 3 + Vite + UnoCSS + MV3)。 P1 MVP 范围: - popup:自动读当前 tab URL,识别 Bilibili / YouTube / 抖音 / 快手;提交 /generate_note 后轮询 /task_status;展示 markdown,复制 + 下载 .md - options:后端地址输入与连通性测试;从 /get_all_providers + /get_models_by_provider 拉供应商/模型列表;默认画质、截图/跳转、笔记风格 - chrome.storage.local 持久化设置与最近 30 个任务,popup 重开恢复进行中任务 - markdown 里的 /static/screenshots 路径在渲染前重写为绝对地址 后端:CORS 改用 regex,新增允许 chrome-extension:// 与 moz-extension:// 源(同时保留 localhost / 127.0.0.1 / tauri.localhost)。无新增 backend endpoint。 P2-P4(content script 悬浮按钮、cookie 直通、side panel、思维导图、RAG 问答)保留 stub 文件,不在本次范围。 去掉 vitesse-webext 自带的 simple-git-hooks postinstall 配置——它会在仓库根装 pre-commit 钩子去跑 pnpm lint-staged,但仓库根没有 package.json,会破坏所有提交流。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
76 lines
2.9 KiB
JSON
76 lines
2.9 KiB
JSON
{
|
||
"name": "bilinote-extension",
|
||
"displayName": "BiliNote",
|
||
"version": "0.1.0",
|
||
"private": true,
|
||
"packageManager": "pnpm@9.7.1",
|
||
"description": "在浏览器里把视频链接一键变成 Markdown 笔记(Bilibili / YouTube / Douyin / Kuaishou)",
|
||
"scripts": {
|
||
"dev": "npm run clear && cross-env NODE_ENV=development run-p dev:*",
|
||
"dev-firefox": "npm run clear && cross-env NODE_ENV=development EXTENSION=firefox run-p dev:*",
|
||
"dev:prepare": "esno scripts/prepare.ts",
|
||
"dev:background": "npm run build:background -- --mode development",
|
||
"dev:web": "vite",
|
||
"dev:js": "npm run build:js -- --mode development",
|
||
"build": "cross-env NODE_ENV=production run-s clear build:web build:prepare build:background build:js",
|
||
"build:prepare": "esno scripts/prepare.ts",
|
||
"build:background": "vite build --config vite.config.background.mts",
|
||
"build:web": "vite build",
|
||
"build:js": "vite build --config vite.config.content.mts",
|
||
"pack": "cross-env NODE_ENV=production run-p pack:*",
|
||
"pack:zip": "rimraf extension.zip && jszip-cli add extension/* -o ./extension.zip",
|
||
"pack:crx": "crx pack extension -o ./extension.crx",
|
||
"pack:xpi": "cross-env WEB_EXT_ARTIFACTS_DIR=./ web-ext build --source-dir ./extension --filename extension.xpi --overwrite-dest",
|
||
"start:chromium": "web-ext run --source-dir ./extension --target=chromium",
|
||
"start:firefox": "web-ext run --source-dir ./extension --target=firefox-desktop",
|
||
"clear": "rimraf --glob extension/dist extension/manifest.json extension.*",
|
||
"lint": "eslint --cache .",
|
||
"test": "vitest test",
|
||
"test:e2e": "playwright test",
|
||
"typecheck": "tsc --noEmit"
|
||
},
|
||
"devDependencies": {
|
||
"@antfu/eslint-config": "^2.27.0",
|
||
"@ffflorian/jszip-cli": "^3.8.5",
|
||
"@iconify/json": "^2.2.239",
|
||
"@playwright/test": "^1.46.1",
|
||
"@types/fs-extra": "^11.0.4",
|
||
"@types/markdown-it": "^14.1.2",
|
||
"@types/node": "^22.5.0",
|
||
"@types/webextension-polyfill": "^0.12.0",
|
||
"@typescript-eslint/eslint-plugin": "^8.2.0",
|
||
"@unocss/reset": "^0.62.2",
|
||
"@vitejs/plugin-vue": "^5.1.2",
|
||
"@vue/compiler-sfc": "^3.4.38",
|
||
"@vue/test-utils": "^2.4.6",
|
||
"@vueuse/core": "^11.0.1",
|
||
"chokidar": "^3.6.0",
|
||
"cross-env": "^7.0.3",
|
||
"crx": "^5.0.1",
|
||
"eslint": "^9.9.0",
|
||
"esno": "^4.7.0",
|
||
"fs-extra": "^11.2.0",
|
||
"jsdom": "^24.1.1",
|
||
"kolorist": "^1.8.0",
|
||
"lint-staged": "^15.2.9",
|
||
"npm-run-all": "^4.1.5",
|
||
"rimraf": "^6.0.1",
|
||
"simple-git-hooks": "^2.11.1",
|
||
"typescript": "^5.5.4",
|
||
"unocss": "^0.62.2",
|
||
"unplugin-auto-import": "^0.18.2",
|
||
"unplugin-icons": "^0.19.2",
|
||
"unplugin-vue-components": "^0.27.4",
|
||
"vite": "^5.4.2",
|
||
"vitest": "^2.0.5",
|
||
"vue": "^3.4.38",
|
||
"vue-demi": "^0.14.10",
|
||
"web-ext": "^8.2.0",
|
||
"webext-bridge": "^6.0.1",
|
||
"webextension-polyfill": "^0.12.0"
|
||
},
|
||
"dependencies": {
|
||
"markdown-it": "^14.1.0"
|
||
}
|
||
}
|