使用ChatGPT构建VSCode扩展

JavaScriptJavaScriptBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本项目将指导你创建一个VSCode扩展的过程,该扩展允许用户调整所选Markdown文本的标题级别。最终,你将拥有一个功能齐全的扩展,它能增强Visual Studio Code中的Markdown编辑体验。

👀 预览

扩展预览

🎯 任务

在本项目中,你将学习:

  • 如何使用TypeScript为VSCode扩展创建脚手架。
  • 如何将TypeScript与Node.js和VSCode配置集成。
  • 如何开发调整所选Markdown文本标题级别的核心功能。
  • 如何编写用于构建、调试和运行扩展的配置文件。

🏆 成果

完成本项目后,你将能够:

  • 使用TypeScript设计和开发VSCode扩展。
  • 在VSCode环境中处理用户交互和文本选择。
  • 解析和操作Markdown语法。
  • 在项目中生成和管理多个文件。
  • 配置TypeScript、Node.js和VSCode以实现无缝开发。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/DOMManipulationGroup(["`DOM Manipulation`"]) javascript(("`JavaScript`")) -.-> javascript/ToolsandEnvironmentGroup(["`Tools and Environment`"]) javascript(("`JavaScript`")) -.-> javascript/NetworkingGroup(["`Networking`"]) javascript/BasicConceptsGroup -.-> javascript/variables("`Variables`") javascript/AdvancedConceptsGroup -.-> javascript/error_handle("`Error Handling`") javascript/DOMManipulationGroup -.-> javascript/dom_select("`DOM Selection`") javascript/DOMManipulationGroup -.-> javascript/dom_manip("`DOM Manipulation`") javascript/DOMManipulationGroup -.-> javascript/event_handle("`Event Handling`") javascript/ToolsandEnvironmentGroup -.-> javascript/debugging("`Debugging`") javascript/ToolsandEnvironmentGroup -.-> javascript/version_control("`Version Control`") javascript/NetworkingGroup -.-> javascript/http_req("`HTTP Requests`") javascript/NetworkingGroup -.-> javascript/api_interact("`API Interaction`") subgraph Lab Skills javascript/variables -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/error_handle -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/dom_select -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/dom_manip -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/event_handle -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/debugging -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/version_control -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/http_req -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} javascript/api_interact -.-> lab-445699{{"`使用ChatGPT构建VSCode扩展`"}} end

安装smol-ai

此外,我们使用 smol-ai 框架来生成代码。

来自README中对 smol-ai 的描述:

这是一个 “初级开发者” 代理(即smol dev)的原型,一旦你给它一个产品规格,它就能为你搭建出整个代码库,但不会带来世界末日或过度承诺通用人工智能。与创建特定的、严格的一次性启动器(如create-react-app或create-nextjs-app)不同,这基本上是一个创建任何应用的工具,你可以在与你的smol dev紧密循环中开发你的搭建提示。

我们喜欢 smol-ai 是因为它很简单。整个代码生成逻辑都在一个Python文件中,该文件由三个主要函数组成:

  1. 生成执行提示所需的文件列表(例如package.json、index.js等)
  2. 生成执行提示所需的共享依赖项列表(例如axios、react等)
  3. 对于生成的文件列表中的每个文件,生成将放入该文件的代码,并在适用时使用共享依赖项

请注意,smol-ai 还提供其他功能,如调试错误和根据当前代码库生成提示的能力。

任务

  1. 克隆smol-ai仓库

    你需要将 https://github.com/smol-ai/developer 仓库克隆到 /home/labex/project 目录。

  2. 配置smol-ai

    你需要阅读 smol-ai 的README并配置OpenAI API密钥。

✨ 查看解决方案并练习

初始化此扩展

有一个描述此项目的基本提示:

一个VSCode扩展,允许用户调整所选文本的标题级别。它应该有三个命令:提高标题级别、降低标题级别和设置标题级别

请注意,该提示简短且通用。你可以尝试通过添加有关项目的更多详细信息来改进该提示。

你可以运行 smol-ai 来生成项目。经过几分钟的代码生成后,smol-aideveloper/generated 目录中创建了文件。

任务

  1. 初始化项目

    查看 smol-ai 的README,然后使用 smol-ai 生成项目。

  2. 配置项目

    你需要查看生成的代码。如有必要,可以调整提示以重新生成。

预期结果

developer/generated 目录中有生成代码的示例。你的结果可能会有所不同。

.
├── extension
│   ├── package.json
│   ├── src
│   │   ├── commands
│   │   │   ├── decreaseHeadingLevel.ts
│   │   │   ├── increaseHeadingLevel.ts
│   │   │   └── setHeadingLevel.ts
│   │   └── extension.ts
└── shared_dependencies.md
✨ 查看解决方案并练习

测试此扩展

要测试此扩展,我们需要成功执行以下步骤:

  1. 安装依赖项;
  2. 编译代码;
  3. 运行扩展。

安装依赖项

你需要在生成的目录中运行以下命令。

yarn

安装依赖项时可能会出现一些问题。你需要解决这些问题。

任务

  1. 解决安装依赖项时出现的问题。

    你可以让人工智能来解决这些问题。

预期结果

当问题解决后,你可能会看到以下示例结果。

$ yarn

...
[3/5] 🚚 Fetching packages...
[4/5] 🔗 Linking dependencies...
[5/5] 🔨 Building fresh packages...
✨ Done in 4.31s.
✨ 查看解决方案并练习

构建此扩展

由于TypeScript是一种编译型语言,我们需要执行一个构建步骤将代码编译为JavaScript。package.json 中提供了以下脚本:

"scripts": {
    "vscode:prepublish": "npm run compile",
    "compile": "tsc -p./",
    "watch": "tsc -watch -p./",
    "postinstall": "node./node_modules/vscode/bin/install",
    "test": "npm run compile && node./node_modules/vscode/bin/test"
},

我们可以通过运行以下命令来构建代码:

tsc --init
yarn compile

编译代码时可能会出现一些问题。你需要解决这些问题。

任务

  1. 解决编译代码时出现的问题。

    你可以让人工智能来解决这些问题。

预期结果

当问题解决后,你可能会看到以下示例结果。

$ tsc -p./
✨ Done in 0.80s.
✨ 查看解决方案并练习

运行此扩展

运行VSCode扩展要求你在编辑器中激活 extension.ts 文件时,转到“运行和调试”面板并启动 vscode extension 任务。

运行和调试面板

运行扩展时可能会出现一些问题。你需要解决这些问题。

任务

  1. 解决运行扩展时出现的问题。

    你可以让人工智能来解决这些问题。

预期结果

当问题解决后,你可能会看到扩展正确运行。

扩展正确运行
✨ 查看解决方案并练习

总结

成功了 🥳

那么我们做得怎么样呢?我们得到了一个能正常工作的扩展。我们让它实现了提示中设定的目标。

到目前为止的这个过程并非“一帆风顺”。我们一路上遇到了很多问题。由于缺乏TypeScript、Node.js和VSCode的先验知识,这些问题本会花费一些时间来调试。

而且,尽管我们能够生成可运行的代码,但仍有许多需要改进的地方:

  • 没有关于如何开发、使用或发布该扩展的说明;
  • 没有针对TypeScript/JavaScript/VSCode工件的.gitignore文件;
  • 没有用于在开发中配置运行该扩展的launch.json文件;
  • 没有测试;
  • 没有代码复用。

您可能感兴趣的其他 JavaScript 教程