Build a VS Code Extension to Auto‑Switch Node.js Versions Across Projects

This guide walks you through creating a VS Code extension that automatically detects the Node.js version specified in each project's package.json and switches the editor’s environment accordingly, covering setup with Yeoman, core activation code, debugging, packaging, and publishing to the Marketplace.

21CTO
21CTO
21CTO
Build a VS Code Extension to Auto‑Switch Node.js Versions Across Projects

Introduction

Developers often need a tool that automatically selects the correct Node.js version for each project. This article shows how to create a VS Code extension that reads the nodeVersion field from a project's package.json and switches the environment when the project is opened.

Project Setup

First, install Yeoman and the VS Code extension generator:

// Install Yeoman
npm install -g yo generator-code

Generate a new extension project:

// Generate project
yo code

During the interactive prompts, answer the questions to configure the extension (e.g., extension type, name, identifier, description, enable JavaScript type checking, initialize a Git repository, choose npm as the package manager).

Running the Extension

Open src/extension.js and press F5 or click Run Extension in the Debug panel to launch a new VS Code window that serves as the extension host.

Debugging the Extension

The new window acts as a test environment. Use Ctrl+Shift+P (or Cmd+Shift+P) and type Hello world to see the extension’s output printed in the original window’s debug console.

Editing the Extension

The core logic resides in src/extension.js. The activate function runs whenever the extension is activated.

const { readFileSync } = require('fs');
const { join } = require('path');
const vscode = require('vscode');

function activate() {
  vscode.window.onDidOpenTerminal((terminal) => {
    // Get workspace folder
    if (!vscode.workspace.workspaceFolders) {
      return;
    }
    const path = vscode.workspace.workspaceFolders[0].uri.fsPath;
    // Locate package.json
    const packageJsonFilePath = join(path, '/package.json');
    // Read package.json
    let packageJsonString = readFileSync(packageJsonFilePath, 'utf8').toString();
    // Parse and get nodeVersion
    let packageJson = JSON.parse(packageJsonString);
    let { nodeVersion } = packageJson;
    // Switch node version in the terminal
    terminal.sendText(`$env:PATH = "E:\\frontend\
vm\
vm\\${nodeVersion};" + $env:PATH`, true);
  });
}

Temporary configuration command example:

$env:Path = "E:\frontend
vm
vm\14.18.0;" + $env:Path

Packaging & Publishing

After development, publish the extension to the VS Code Marketplace.

Install the VSCE tool: npm install -g vsce Package the extension into a .vsix file: vsce package // creates a .vsix package Publish the package:

vsce publish // uploads to the Marketplace

Conclusion

Creating your own VS Code extension can greatly improve development efficiency and allow you to share useful tools with the global community. The example above demonstrates an extension that automatically switches Node.js versions per project, reducing manual effort and preventing version‑mismatch errors.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

JavaScriptNode.jsExtensionVS CodeYeomanvsce
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.