nvm 自动化切换项目node版本

nvm 自动化切换项目 node 版本

在一些项目中经常会忘记在 readme 中写项目运行的版本,而且一点都不工程化。这里给出一些方法让项目切换版本更加顺畅。

流程

  • 第一步 将对应的 nvm 安装完成,教程很多就不赘述了。
  • 第二步 在项目根目录下运行命令行
    node -v > .nvmrc
    
  • 第三步 在 package.json 中添加脚本

由于脚本是个 common js,直接生成js文件会被作为ES module加载导致报错,所以后缀必须为 cjs

  "scripts": {
      "node-v":"node nodeSwitch.cjs"
  },

在根目录下创建脚本 nodeSwitch.cjs

const fs = require("fs");
const os = require("os");
const { execSync } = require("child_process");

if (fs.existsSync(".nvmrc")) {
 const nvmrcContent = fs.readFileSync(".nvmrc", "utf8").trim();
 const nvmVersion =
  os.platform() === "win32"
   ? execSync("type .nvmrc", { encoding: "utf8" }).trim()
   : nvmrcContent;
 try {
  execSync(`nvm use ${nvmVersion}`, { stdio: "inherit" });
  console.log("\x1b[32m%s\x1b[0m", "Node.js 版本切换成功");
 } catch (error) {
  console.error(
   "\x1b[31m%s\x1b[0m",
   "Node.js 版本切换失败 Check installation nvm"
  );
 }
} else {
 console.error("\x1b[31m%s\x1b[0m", ".nvmrc 文件不存在");
}

这样在切换项目时可以直接使用

npm run node-v

注意

有文章指出在 windows 中的 nvm 中使用 nvm use 不生效,这是因为在 windows 系统安装的是 nvm-window,这个是不支持读取.nvmrc 文件配置,只有在 mac 和 Linux 系统中支持。

posted @ 2024-05-17 17:59  DAmarkday  阅读(26)  评论(0编辑  收藏  举报