实现一个vscode插件:打开多个vscode项目时根据.nvmrc文件自动切换nvm

这篇具有很好参考价值的文章主要介绍了实现一个vscode插件:打开多个vscode项目时根据.nvmrc文件自动切换nvm。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现一个vscode插件:打开多个vscode项目时根据.nvmrc文件自动切换nvm,vscode,ide,编辑器

开发背景与最终功能

需要维护一些老项目,同时开发新项目时,切换nvm很烦人
最终实现vscode插件:每个vscode实例打开一个项目,切换vscode实例时能自动切换版本(需要项目根目录有一个.nvmrc文件)

插件下载

vscode插件市场搜索vscode-nvmrc实现一个vscode插件:打开多个vscode项目时根据.nvmrc文件自动切换nvm,vscode,ide,编辑器

设计思路

项目根目录新建.nvmrc文件,这是nvm的官方文件,当使用nvm use时会自动查找这个文件,而windows系统一般使用的是nvm-for-windows,它是由另一个开发者维护的windows版本,并不支持nvm use查找.nvmrc
不过这并不影响vscode插件中实现nvm use功能,只不过了解下.nvmrc是nvm的官方文件

话不多说,上代码,很简单,vscode插件方法vscode.window.onDidChangeWindowState中读取下.nvmrc文件,e.focused表示当vscode窗口显示时触发,切换vscode实例时能够触发,然后调用child_process.exec 运行nvm use文章来源地址https://www.toymoban.com/news/detail-551518.html

import * as vscode from "vscode";
import { exec } from "child_process";
import { readFile } from "fs";
import { resolve } from "path";

let statusBar: vscode.StatusBarItem | undefined;
let timeout: NodeJS.Timeout;

enum Status {
  error = "error",
}
function customStatusBar(text: string, type?: Status, time = 4000) {
  if (statusBar) {
    statusBar.dispose();
  }
  if (timeout) {
    clearTimeout(timeout);
  }
  statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
  statusBar.color = "#ffffff";

  if (type === Status.error) {
    statusBar.backgroundColor = new vscode.ThemeColor(
      "statusBarItem.errorBackground"
    );
  }
  if (!type) {
    statusBar.backgroundColor = new vscode.ThemeColor(
      "statusBarItem.warningBackground"
    );
  }
  statusBar.text = "vscode-nvmrc: " + text;
  statusBar.show();
  timeout = setTimeout(() => {
    if (statusBar) {
      statusBar.dispose();
    }
  }, time);
  return;
}

function execute(cmd: string) {
  exec(cmd, (error, stdout, stderr) => {
    if (error) {
      customStatusBar(`${error}`);
    } else {
      if (stderr) {
        customStatusBar(stderr);
      } else {
        customStatusBar(stdout);
      }
    }
  });
}

function nvmuse(url: string) {
  readFile(url, { encoding: "utf8" }, (err, data) => {
    if (err) {
      customStatusBar(".nvmrc file not found.");
      return;
    }
    execute("nvm use " + data);
  });
}

function resolveRootPathAndNvmuse() {
  const workspaceFolders = vscode.workspace.workspaceFolders;
  if (workspaceFolders && workspaceFolders.length > 0) {
    const rootPath = workspaceFolders[0].uri.fsPath;
    if (rootPath) {
      const url = resolve(rootPath, ".nvmrc");
      nvmuse(url);
    }
  }
}

export function activate(context: vscode.ExtensionContext) {
  resolveRootPathAndNvmuse();
  const disposable = vscode.window.onDidChangeWindowState((e) => {
    if (e.focused) {
      resolveRootPathAndNvmuse();
    }
  });
  context.subscriptions.push(disposable);
}

export function deactivate() {}

到了这里,关于实现一个vscode插件:打开多个vscode项目时根据.nvmrc文件自动切换nvm的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用VSCode实现Java项目管理 Maven相关插件及配置(Maven换源)

    之前一直使用VSCode开发C、Go两种语言,现在需要对java进行学习,面对java的idea工具相对陌生,依旧想继续使用vscode作为开发工具,因此有了本篇文章 无论是idea还是vscode,最核心的功能可能就是编辑了,很多工具的优秀特性也都是来自于优秀的插件,因此首先需要配置VSCode的

    2023年04月23日
    浏览(50)
  • 你的internet安全设置阻止打开一个或多个文件

    提示:这里简述项目相关背景: 今天下载一些小众破解程序,发现打开有黄色弹窗,刚开机时候能打开,但是无法连接internet,后续依然打不开。 提示:网上方案过时了,解决不了WIN11系统,DISS下百度,给的全是七八年前的方案 网上方案主要是IE浏览器修改,IE都倒闭了 搜索

    2024年02月12日
    浏览(98)
  • VScode第三方插件打开sqlite数据库

    最近在做的东西涉及SQLite数据库(一种常用在移动端的数据库类型,和mysql这些主流数据库也差不多),为了方便调试开发,数据库预览很重要;同时,mac预览数据库的软件多数是要收费的,且我体验时间用了两款也不是特别满意。 针对只是要预览数据库不做太多操作,需要

    2024年02月03日
    浏览(49)
  • 成功解决VScode每次只能打开一个文件,即只能打开一个编辑窗口。

    点击文件 -- 首选项 -- 设置 -- 工作台 -- 编辑管理 -- 取消勾选Enable Preview 如下图所示: 下拉,取消勾选Enable Preview

    2024年02月16日
    浏览(48)
  • idea打开多个项目需要开多个窗口(恢复询问弹窗)

    【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】 【创作不易,点个赞就是对我最大的支持】 仅作为学习笔记,供大家参考 总结的不错的话,记得点赞收藏关注哦! 打开设置 2. 选中Appearance–选中System Settings 3. 右侧选中 Confirm window to open proje

    2024年02月14日
    浏览(45)
  • Android studio如何设置同时打开多个项目

    今天将AS升级到Android Studio Flamingo | 2022.2.1 Patch 2后,打开一个新项目后,原打开的项目就关闭了。非常不方便。于是重新设置,设置步骤记录如下: 1.菜单File-Settings New windows表示在新窗口打开项目,原打开项目不关闭。 Current window表示在同一个窗口打开新项目 ,原打开的项

    2024年02月11日
    浏览(64)
  • VScode只能打开一个文件(打开其他文件会覆盖掉原来的文件)

    在使用VSCode的时候,好像只能打开一个文件,当我打开其他文件的时候,会发现其他的文件会被堵盖掉,这是问什么呢? 其实原因很简单,就是因为打开了vscode中的预览编辑器,所以就会出现这样的情况。 接下来我们来介绍如何关闭这个预览编辑器的方法。 首先,如果是

    2024年02月15日
    浏览(35)
  • 如何在 Visual Studio Code 中同时打开多个项目?

    在日常的软件开发中,我们经常需要同时处理多个项目。Visual Studio Code(简称 VS Code)是一个流行的开发环境,提供了许多便捷的功能来支持多项目的管理和开发。本文将介绍如何在 VS Code 中同时打开多个项目,并提供相应的源代码示例。 打开 VS Code 并创建一个新窗口。 点击

    2024年02月05日
    浏览(74)
  • idea springBoot 部署多个项目打开Run Dashboard 窗口

    在部署springcloud 项目的时候 本地调试,有可能需要全部启动所有服务,单个部署比较麻烦,通过Run DashBoard 窗口可以完美实现 1.先打开项目的文件地址找到workspace.xml文件,在项目下的.ideaworkspace.xml       2. ctrl+f 找到RunDashboard 标签,添加option信息   3.最后重启电脑 4.编辑启

    2024年02月16日
    浏览(42)
  • excel中的vlookup如何实现根据多个条件查找?

    Excel 中根据一个条件查找非常方便,Excel 提供了内置函数 VLOOKUP。但是实际中往往有多种情形,需要根据多个条件进行查找操作,目前没有现成的内置函数。 本篇介绍 VLOOKP+CHOOSE 组合查找公式,可根据任意条件数量进行查找。 下面以两个条件进行查找为例,介绍 VLOOKP+CHOOSE

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包