Obsidian GitHub Publisher 项目教程
1. 项目的目录结构及介绍
Obsidian GitHub Publisher 项目的目录结构如下:
obsidian-github-publisher/
├── .github/
│ └── workflows/
├── hooks/
├── src/
│ ├── commands/
│ ├── components/
│ ├── lang/
│ ├── settings/
│ └── ui/
├── .editorconfig
├── .gitignore
├── .gitmodules
├── .npmrc
├── CHANGELOG-beta.md
├── CHANGELOG.md
├── LICENSE
├── README.md
├── biome.json
├── commit-and-tag-version.mjs
├── esbuild.config.mjs
├── manifest-beta.json
├── manifest.json
├── package.json
├── pnpm-lock.yaml
└── tsconfig.json
目录结构介绍
.github/workflows/
: 包含 GitHub Actions 的工作流文件。hooks/
: 包含自定义的 Git 钩子脚本。src/
: 项目的源代码目录,包含命令、组件、语言文件、设置和用户界面等。.editorconfig
: 编辑器配置文件。.gitignore
: Git 忽略文件配置。.gitmodules
: Git 子模块配置。.npmrc
: npm 配置文件。CHANGELOG-beta.md
和CHANGELOG.md
: 项目变更日志。LICENSE
: 项目许可证。README.md
: 项目说明文档。biome.json
: 项目配置文件。commit-and-tag-version.mjs
: 用于提交和打标签的脚本。esbuild.config.mjs
: esbuild 配置文件。manifest-beta.json
和manifest.json
: 项目清单文件。package.json
: npm 包配置文件。pnpm-lock.yaml
: pnpm 锁定文件。tsconfig.json
: TypeScript 配置文件。
2. 项目的启动文件介绍
项目的启动文件主要是 src/main.ts
,它负责初始化插件并加载必要的模块和设置。
// src/main.ts
import { App, Plugin, PluginSettingTab, Setting } from 'obsidian';
import { GitHubPublisherSettings, DEFAULT_SETTINGS } from './settings';
import { Commands } from './commands';
import { GitHubPublisher } from './github';
export default class GitHubPublisherPlugin extends Plugin {
settings: GitHubPublisherSettings;
async onload() {
await this.loadSettings();
// 注册命令
this.addCommand(Commands);
// 注册设置页面
this.addSettingTab(new GitHubPublisherSettingTab(this.app, this));
// 初始化 GitHub 发布器
new GitHubPublisher(this.app, this.settings);
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async saveSettings() {
await this.saveData(this.settings);
}
}
class GitHubPublisherSettingTab extends PluginSettingTab {
plugin: GitHubPublisherPlugin;
constructor(app: App, plugin: GitHubPublisherPlugin) {
super(app, plugin);
this.plugin = plugin;
}
display(): void {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl('h2', { text: 'GitHub Publisher 设置' });
new Setting(containerEl)
.setName('GitHub 用户名')
.setDesc('输入你的 GitHub 用户名')
.addText(text => text
.setPlaceholder('例如:yourusername')
.setValue(this.plugin.settings.username)
.onChange(async (value) => {
this.plugin.settings.username = value;
await this.plugin.saveSettings();
}));
// 其他设置项...
}
}
3. 项目的配置文件介绍
项目的配置文件主要是 manifest.json
和 settings.ts
。
manifest.json
manifest.json
文件定义了插件的基本信息和依赖项。
{
"id":