VSCode Black Formatter 项目教程
1. 项目的目录结构及介绍
VSCode Black Formatter 项目的目录结构如下:
vscode-black-formatter/
├── .github/
│ └── workflows/
├── .vscode/
│ └── extensions.json
├── assets/
│ └── icon.png
├── src/
│ ├── test/
│ │ └── suite/
│ └── extension.ts
├── package.json
├── README.md
└── CHANGELOG.md
目录结构介绍
- .github/workflows: 包含 GitHub Actions 的工作流配置文件。
- .vscode: 包含 VSCode 的配置文件,如推荐的扩展。
- assets: 包含项目的图标文件。
- src: 包含项目的源代码,其中
extension.ts
是主要的扩展文件。 - src/test: 包含测试代码。
- package.json: 项目的 npm 配置文件,包含依赖和脚本。
- README.md: 项目的介绍和使用说明。
- CHANGELOG.md: 项目的更新日志。
2. 项目的启动文件介绍
项目的启动文件是 src/extension.ts
。这个文件是 VSCode 扩展的主要入口点,负责初始化和注册扩展的功能。
src/extension.ts
文件介绍
import * as vscode from 'vscode';
import { format } from 'black';
export function activate(context: vscode.ExtensionContext) {
// 注册格式化命令
context.subscriptions.push(
vscode.commands.registerCommand('black-formatter.format', () => {
// 格式化逻辑
})
);
}
export function deactivate() {}
- activate 函数: 当扩展被激活时调用,注册命令和事件监听器。
- deactivate 函数: 当扩展被停用时调用,进行清理工作。
3. 项目的配置文件介绍
项目的配置文件主要是 package.json
。这个文件包含了扩展的所有配置信息,包括依赖、命令、贡献点等。
package.json
文件介绍
{
"name": "vscode-black-formatter",
"displayName": "Black Formatter",
"description": "VSCode extension for the Black formatter",
"version": "1.0.0",
"publisher": "ms-python",
"engines": {
"vscode": "^1.50.0"
},
"categories": [
"Formatters"
],
"activationEvents": [
"onCommand:black-formatter.format"
],
"main": "./out/extension.js",
"contributes": {
"commands": [
{
"command": "black-formatter.format",
"title": "Format with Black"
}
]
},
"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.50.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",
"vscode-test": "^1.4.0"
}
}
- name: 扩展的名称。
- displayName: 扩展的显示名称。
- description: 扩展的描述。
- version: 扩展的版本号。
- publisher: 扩展的发布者。
- engines: 扩展支持的 VSCode 版本。
- categories: 扩展的分类。
- activationEvents: 扩展