vscode 开发代码片段插件

news/2024/7/16 9:15:08 标签: vscode, ide, 编辑器, vscode创建代码片段工具

环境准备

  • node - 20v版本 ,推荐使用nvm进行版本控制
  • 全局安装 "yo" 是 Yeoman 工具的命令行工具, npm i yo -g
  • 全局安装 generator-code 是一个 Yeoman 脚手架 gernerator-code npm i gernerator-code -g
  • 全局安装 npm install -g vsce
  • 官方文档 Publishing Extensions | Visual Studio Code Extension API

账号准备

  1. 点击 Visual Studio Team Services,点击最上方立即注册,注册自己的账号,可以用GitHub账号直接登录。
  2. 登录后新创建一个组织 

        3.在该组织下继续创建一个项目(建议插件名字和项目名字保持同步)

上述步骤完成后再去获取token

点击 

New Token,注意这里创建token一定要下拉选择 all accessible organizations,然后点击右下角的 Show all scopes 找到 Marketplace 选择 Manage。

点进后将显示的token储存起来

完成后接下来需要去注册成vscode开发者 https://aka.ms/vscode-create-publisher

注册完成后点击创建,保持ID和name和我们项目的名称一致即可。

项目初始化

然后返回到 Azure DevOps Services | Microsoft Azure中点击创建的项目,进行项目初始化

如果无法完成请求,则使用生成git凭证,在vscode输入密码即可

此时,已经在vscode中已经有一个容器了。

接下来进行项目搭建

项目搭建

输入 yo code 选择 new code snippets的模板,其他按照截图来即可生成项目了。

可以在snippets 中写入我们的代码片段,然后执行

vsce package 即可打包生成.vsix 文件了,如果是本地使用则不需要发布到市场插件

发布到市场插件的流程

继续执行 vsce publish -p your-personal-access-token 首次发布需要输入 之前储存的token然后等待完成发布即可 https://marketplace.visualstudio.com/manage/publishers

1.打包遇见了 提示 WARNING LICENSE, LICENSE.md, or LICENSE.txt not found

解决方案: Choose an open source license | Choose a License 复制一份许可证即可

拓展延伸。

常规的添加方法需要在 snippets 中添加代码片段,再去 package.json 中进行添加,这样在我们代码片段多的时候就特别麻烦,需要一直去添加。

优化方案

优化方案

1.在根目录下创建一个文件 generateSnippetsConfig.js

const fs = require("fs");
const path = require("path");

// 获取 snippets 目录下所有 .code-snippets 文件的绝对路径
const snippetFiles = fs
  .readdirSync("./snippets")

const snippetsConfig = snippetFiles.map((file) => {
  
  const language = "javascript";
  const pathFile = "./snippets/" + file
  console.log(language,'snippetFiles')
  return {
    language: language,
    path:pathFile,
  };
});

// 读取并更新 package.json
const packageJsonPath = "./package.json";
const packageJson = require(packageJsonPath);

// 添加或更新 snippets 配置
if (!packageJson.contributes) packageJson.contributes = {};
if (!packageJson.contributes.snippets) packageJson.contributes.snippets = [];
packageJson.contributes.snippets = snippetsConfig
// 写回 package.json
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), "utf-8");

2.改造package.json 添加运行命令

3.执行 generate-snippets 即可自动将 snippets的代码片段自动注入到package.json中

4.执行 build 继续进行打包


http://www.niftyadmin.cn/n/5383049.html

相关文章

echats 时间直方图示例

需求背景 某订单有N个定时任务,每个任务的执行时间已经确定,希望直观的查看该订单的任务执行趋势 查询SQL: select UNIX_TIMESTAMP(DATE_FORMAT(exec_time,%Y-%m-%d %H:%i)) execTime, count(*) from order_detail_task where order_no 2…

flex布局青蛙游戏答案(前端CSS弹性布局练习)

flex布局青蛙游戏答案(前端CSS弹性布局练习) #青蛙游戏# 游戏地址:https://flexboxfroggy.com/#zh-cn 游戏答案: 第1关: justify-content:flex-end; 第2关: justify-content:center; 第3关&#xff1…

Flask——基本前后端数据传输示例

文章目录 步骤1: 使用 requests 发送 JSON 数据步骤2: 使用 Flask 接收并反序列化 JSON 数据 要实现您的需求,我们可以通过两个步骤来完成:首先,使用 Python 的 requests 库发送 JSON 格式的数据;其次,使用 Flask 框架…

MongoDB聚合运算符:$arrayElemAt

MongoDB聚合运算符$arrayElemAt用于返回数组中指定位置的元素。 语法 { $arrayElemAt: [ <array>, <idx> ] }<array>可以是任何能被解析为数组的表达式。<idx>可以是任何可以被解析为整数的表达式。 使用 如果<idx>为0或正整数&#xff0c;则…

ACE 中的Active Object模式

Active Object 设计模式&#xff1a; 1&#xff09; 根据对象被调用的方式&#xff0c;可以将对象分为两类: Passive Object和Active Object。Passive 和 Object和调用者在同一个线程中&#xff0c;这就是我们通常所用的函数调用。而Active Object和调用在不同的线程中&#xf…

mkv和mp4什么区别?这篇文章告诉你(2024最新)

在数字视频的世界中&#xff0c;MKV和MP4是两种极为常见的封装格式。它们各自拥有独特的特点和优势&#xff0c;适用于不同的场景和需求。然而&#xff0c;对于许多用户来说&#xff0c;这两种格式之间的区别可能并不清晰。mkv和mp4什么区别&#xff1f;本文将探讨MKV和MP4之间…

使用智能电销机器人,拓客效果更佳!

现在很多的企业做销售都离不开电话营销&#xff0c;它是一种能够直接帮助企业获取更多利润的营销模式&#xff0c;目前被各大行业所采用。 znyx222 了解探讨 电话营销是一个压力很大的职业&#xff0c;新员工培养难度大、老员工又不好维护&#xff0c;会有情绪问题出现等&…

每天一个数据分析题(一百五十九)

主成分分析&#xff08;PCA&#xff09;不适宜单独用于哪种情况&#xff1f; A. 员工绩效的评估和排名 B. 描述产品情况&#xff0c;如子公司的业务发展状况 C. 消除数据分析中的共线性问题 D. PCA可以作为异常识别的算法使用 题目来源于CDA模拟题库 点击此处获取答案