本文档提供了关于设置 Markdown Here 浏览器扩展开发环境的详细说明。它涵盖了为贡献或修改代码库所需的先决条件、代码组织、构建过程和测试方法。有关贡献指南和流程的信息,请参阅贡献指南;有关测试步骤,请参阅测试。
在开始开发 Markdown Here 之前,请确保已安装以下工具:
| 工具 | 目的 | 要求 |
|---|---|---|
| Node.js 和 npm | 运行构建脚本和管理依赖 | LTS 版本 |
| Git | 版本控制 | 任意最新版本 |
| 网页浏览器 | 测试扩展 | Chrome、Firefox 和/或 Thunderbird |
来源:utils/package.json2-11 utils/build.js6-12
Markdown Here 仓库的组织结构如下:
markdown-here/
├── dist/ # Build output directory (generated during build)
├── src/ # Source code
│ ├── common/ # Shared code across browser platforms
│ ├── chrome/ # Chrome-specific code
│ ├── firefox/ # Firefox/Thunderbird-specific code
│ └── _locales/ # Internationalization files
├── test/ # Test files
└── utils/ # Build scripts and utilities
来源:.gitignore8-9 utils/build.js15-22
这将安装 `package.json` 中定义的所需 Node.js 包。
archiver:用于创建扩展打包的 ZIP 存档file:处理文件系统操作glob:提供文件模式匹配markdown-it:用于 Markdown 渲染metascript:启用 JavaScript 文件的条件预处理来源:utils/package.json5-11 utils/build.js10-12
来源:utils/package.json5-11 utils/build.js15-22 test/index.html15-28
Markdown Here 的构建过程由 `utils/build.js` 脚本管理,该脚本用于为不同的浏览器平台打包扩展。
构建所有扩展:
此命令会在 `dist/` 目录中创建以下文件:
chrome.zip:Chrome 扩展包firefox.zip:Firefox 扩展包thunderbird.xpi:Thunderbird 附加组件包来源:utils/build.js19-21 utils/build.js155-159
构建脚本执行以下关键步骤:
来源:utils/build.js84-127 utils/build.js130-160 utils/build.js38-57 utils/build.js60-81
Markdown Here 通过 MetaScript 的条件代码编译支持多种浏览器。在构建过程中,脚本会处理 JavaScript 文件,使其仅包含目标平台的代码。
这允许在支持不同浏览器扩展 API 的同时维护单个代码库。
来源:src/common/options-iframe.js7-21 utils/build.js64-69
在开发过程中进行基本测试时,请使用 `test/index.html` 处的测试页面,该页面提供了一个可编辑内容的 iframe,用于测试 Markdown 切换功能。
| 问题 | 解决方案 |
|---|---|
| 构建脚本失败 | 通过在 `utils/` 目录中运行 `npm install` 确保所有依赖项都已正确安装。 |
| 扩展未在浏览器中加载 | 检查浏览器控制台是否有错误;验证您是否加载了正确的目录。 |
| JavaScript 错误 | 检查浏览器的开发者控制台;对于 Chrome 扩展,检查后台页面。 |
| 平台特定代码问题 | 验证 MetaScript 条件语句是否正确格式化和闭合。 |
| 构建中缺少文件 | 检查 `utils/build.js` 中的平台特定输入模式。 |
来源:utils/build.js23-33 utils/build.js103-116
推荐的开发工作流程是: