目录
API
vscode.commands
复制
//可以复制选中内容到剪切板(terminal和editor都适用),会留有选中效果
vscode.commands.executeCommand('editor.action.clipboardCopyAction');
//针对于terminal的复制,复制之后不会留有选中的效果
vscode.commands.executeCommand("workbench.action.terminal.copyAndClearSelection");
选中文本
//全选
vscode.commands.executeCommand("workbench.action.terminal.selectAll");
从本地指定位置下载拓展
const extensionLocation = 'C:\\Users\\18333\\Downloads\\lower.vsix'; // 替换为你的扩展文件路径
await vscode.commands.executeCommand('workbench.extensions.command.installFromVSIX', [vscode.Uri.file(extensionLocation)]
.then(() => {
console.log(`Extension from ${extensionLocation} installed successfully.`);
}, (err) => {
console.error(`Failed to install extension from ${extensionLocation}:`, err);
});
vscode.env
剪切板的读写
//读取
const preClipboardText = await vscode.env.clipboard.readText();
//写入
await vscode.env.clipboard.writeText(preClipboardText);
vscode.window
输出提示
vscode.window.showInformationMessage("输出提示信息");
vscode.window.showWarningMessage("输出警告信息");
vscode.window.showErrorMessage("输出错误信息");
TS常用功能
根据URL下载文件
import * as vscode from 'vscode';
import * as fs from 'fs';
import axios from 'axios';
async function downloadFile(url: string, filePath: string): Promise<void> {
try {
const response = await axios({
url,
method: 'GET',
responseType: 'stream'
});
// 创建写入流
const writer = fs.createWriteStream(filePath);
response.data.pipe(writer);
//返回一个新的promise对象,当写入完成或出错时,会调用相应的回调函数
return new Promise((resolve, reject) => {
// 监听写入完成事件
writer.on('finish', () => {
console.log(`File downloaded to ${filePath}`);
// 关闭文件流
resolve();
});
// 监听写入错误事件
writer.on('error', (err) => {
// 关闭文件流,删除文件
fs.unlink(filePath, () => { });
// 向reject函数传递错误信息
reject(err.message);
});
});
} catch (error) {
console.error(error);
}
}
// 下载扩展
await downloadFile(extensionUrl, downloadPath);
获取vscode插件版本号
const extensionID = 'fittentech.fitten-code';
const extension = vscode.extensions.getExtension(extensionID);
if (extension) {
const packageJsonPath = path.join(extension.extensionPath, 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
const versionn = packageJson.version;
console.log(`Local extension version: ${versionn}`);
}
axios.get获取数据
//使用get获取文件的字段
interface VersionInfo {
vscode: {
vscode_version: string;
vscode_url: string;
};
}
const serverURL = getServerURL();
const response = await axios.get<VersionInfo>(`${serverURL}/version.json`, {
timeout: 10000, // 设置超时时间为10秒
});
const json = response.data;
return {
version: json.vscode.vscode_version,
url: json.vscode.vscode_url,
};
//获取url中的文件,写到本地
async function downloadFile(url: string, filePath: string): Promise<void> {
try {
const response = await axios({
url,
method: 'GET',
responseType: 'stream'
});
const data = response.data as Readable;
const writer = fs.createWriteStream(filePath);
data.pipe(writer);
return new Promise((resolve, reject) => {
writer.on('finish', () => {
console.log(`File downloaded to ${filePath}`);
resolve();
});
writer.on('error', reject);
});
} catch (error) {
console.error('Error downloading file:', error);
throw error;
}
}
pnpm安装问题
1.确定好安装的是对的pnpm版本
npm install pnpm@8.3 -g
2.换源
pnpm config set registry https://mirrors.tencent.com/npm/
pnpm config set registry https://registry.npmmirror.com
下载试试,不行就清缓存
pnpm store prune
然后再试试install