vscode插件开发

目录

API

vscode.commands

复制

选中文本

从本地指定位置下载拓展

vscode.env

剪切板的读写

vscode.window

输出提示

TS常用功能

根据URL下载文件

获取vscode插件版本号

axios.get获取数据

pnpm安装问题


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值