VS Code扩展的发布
VS Code 扩展的发布需要使用到vsce
,vsce
是一个用于打包、发布和管理 VS Code 扩展的命令行工具。可以通过 npm 来全局安装它:
npm install -g vsce
发布扩展到微软的应用市场
VS Code 的应用市场基于微软自己的 Azure DevOps。要发布扩展,需要先注册一个 Microsoft 账号,并创建一个 Azure DevOps 组织。然后,在 Azure DevOps 中创建一个 Personal Access Token(PAT),这个 Token 在发布扩展时会用到。
使用vsce
工具创建一个发布者账号。这个账号将用于在 VS Code 应用市场中标识你的扩展。运行以下命令来创建发布者账号:
vsce create-publisher
在创建了发布者账号并登录后,可以使用以下命令来发布扩展:
vsce publish <version>
其中<version>
是扩展的版本号。
发布完成后,可以在 VS Code 的扩展市场中搜索到扩展名称。
Nexus 的介绍
Nexus是一个强大的仓库管理器,全称为Nexus Repository Manager,由Sonatype公司开发。其支持多种类型的仓库,包括Maven、npm、Docker等。
使用Nexus 可以搭建私有仓库。
虽然没有直接提供对VS Code扩展的支持,但使用 npm 可以达成发布VS Code扩展到Nexus库的目的。
发布自行开发的VS Code插件到Nexus 的极简步骤
步骤1. 在Nexus 创建一个 npm(host) 的库,用于存放VS Code 扩展
登录Nexus管理后台,进入服务的管理和配置:
点击创建库, 选择库的类型是npm(hosted)
这里创建的库的名字是 my-vs-ext,完整的地址如下:
http://myhost:8081/repository/my-vs-ext/
复制这个地址。
步骤2 在VS Code扩展项目修改如下配置:
修改:
"repository": {
"type": "nexus",
"url": "http://myhost:8081/repository/my-vs-ext/"
},
新增:
"publishConfig": {
"registry": "http://myhost:8081/repository/my-vs-ext/"
},
修改:
"scripts": {
"prepublishOnly": "vsce package -o myextension.vsix --baseContentUrl http://myhost:8081/repository/my-vs-ext/",
"vscode:prepublish": "webpack --mode production",
"webpack": "webpack --mode development",
"webpack-dev": "webpack --mode development --watch",
"test-compile": "tsc -p ./",
"lint": "eslint \"src/**/*.ts\""
},
- 这里主要是增加prepublishOnly 的配置
步骤3. 配置Nexus认证信息
通过.npmrc可以配置 Nexus私有库的认证信息。
- {插件项目路径}.npmrc
- C:\Users\xxx.npmrc
配置的格式是:
registry=https://your-nexus-server/repository/your-repo/
//your-nexus-server/repository/your-repo/:_auth=BASE64_ENCODED_CREDENTIALS
//your-nexus-server/repository/your-repo/:username=username
//your-nexus-server/repository/your-repo/:_password=BASE64_ENCODED_PASSWORD
//your-nexus-server/repository/your-repo/:email=your-email@example.com
//your-nexus-server/repository/your-repo/:always-auth=true
这里的_auth 和 _password 是Base 64 的编码
*_auth 对应的是:username:password
的编码
- _password 就是
password
的编码
获取Base64编码
Linux 系统可以直接使用如下命令获取:
echo -n 'username:password' | base64
如果是Windows 系统, CMD 不支持上面的方式,会提示Base64不是内部或外部命名, 如果安装了Git, 可以使用Git Bash
执行获取。
执行效果如下:
确认认证是成功的
在命令行输入如下命令:
npm whoami --registry https://your-nexus-server/repository/your-repo/
认证成功会返回用户名,接下来就可以执行发布命令了。
发布
在命令行输入如下命令:
npm publish --registry https://your-nexus-server/repository/your-repo/
等命令行执行完成, 控制台没有出现错误的话,可以到 Nexus 中去查询发布的VS Code扩展。