VSpaceCode 项目教程
1. 项目的目录结构及介绍
VSpaceCode 是一个为 Visual Studio Code 提供类似 Spacemacs 键绑定功能的扩展。以下是项目的目录结构及其介绍:
VSpaceCode/
├── .github/
│ └── workflows/
├── .vscode/
├── docs/
├── media/
├── src/
│ ├── commands/
│ ├── configuration/
│ ├── constants/
│ ├── menus/
│ ├── providers/
│ ├── utils/
│ └── extension.ts
├── .gitignore
├── .prettierrc
├── CHANGELOG.md
├── LICENSE
├── package.json
├── README.md
└── tsconfig.json
- .github/workflows: 包含 GitHub Actions 的工作流配置文件。
- .vscode: 包含 Visual Studio Code 的配置文件。
- docs: 包含项目的文档文件。
- media: 包含项目的媒体文件,如图片等。
- src: 包含项目的源代码。
- commands: 包含命令的实现代码。
- configuration: 包含配置相关的代码。
- constants: 包含常量定义。
- menus: 包含菜单定义。
- providers: 包含提供者相关的代码。
- utils: 包含工具函数。
- extension.ts: 项目的入口文件。
- .gitignore: Git 忽略文件配置。
- .prettierrc: Prettier 代码格式化配置。
- CHANGELOG.md: 变更日志。
- LICENSE: 许可证文件。
- package.json: 项目的 npm 配置文件。
- README.md: 项目说明文档。
- tsconfig.json: TypeScript 配置文件。
2. 项目的启动文件介绍
项目的启动文件是 src/extension.ts
。这个文件是 VSpaceCode 扩展的入口点,负责初始化扩展并注册所有命令和菜单。
import * as vscode from 'vscode';
import { registerCommands } from './commands';
import { registerMenus } from './menus';
export function activate(context: vscode.ExtensionContext) {
registerCommands(context);
registerMenus(context);
}
export function deactivate() {}
- activate: 当扩展被激活时调用,注册所有命令和菜单。
- deactivate: 当扩展被停用时调用。
3. 项目的配置文件介绍
项目的配置文件主要包括 package.json
和 tsconfig.json
。
package.json
package.json
是 npm 包的配置文件,包含了项目的基本信息、依赖、脚本等。
{
"name": "vspacecode",
"displayName": "VSpaceCode",
"description": "Spacemacs like keybindings for Visual Studio Code",
"version": "0.10.0",
"publisher": "VSpaceCode",
"engines": {
"vscode": "^1.52.0"
},
"categories": [
"Other"
],
"activationEvents": [
"onStartupFinished"
],
"main": "./out/extension.js",
"contributes": {
"commands": [],
"keybindings": [],
"menus": {}
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"pretest": "npm run compile && npm run lint",
"lint": "eslint src --ext ts",
"test": "node ./out/test/runTest.js"
},
"devDependencies": {
"@types/vscode": "^1.52.0",
"@types/glob": "^7.1.3",
"@types/mocha": "^8.0.4",
"@types/node": "^12.11.7",
"eslint": "^7.10.0",
"glob": "^7.1.6",
"mocha": "^8.1.3",
"typescript": "^4.0.3",