返回

比官方快100倍!使用deno编写nrm,轻松切换npm镜像源!

前端

一直以来,我都在用nrm来切换npm镜像源。nrm是一个命令行工具,可以让你轻松地在不同的npm镜像源之间切换。

但是,我发现nrm的切换速度并不是很快,每次切换都需要几秒钟的时间。这对于我来说是一个很大的问题,因为我每天都要切换好几次镜像源。

为了解决这个问题,我决定自己写一个nrm。我的目标是创建一个比官方nrm快100倍的nrm。

我使用deno来编写我的nrm。deno是一个新的JavaScript运行时,它具有非常快的速度。deno的运行速度比node.js快很多,而且它不需要安装任何依赖项。

我使用deno编写的nrm非常简单。它只有一个文件,大约100行代码。

import { existsSync } from "https://deno.land/std/fs/mod.ts";
import { prompt } from "https://deno.land/x/cliffy@v0.19.1/prompt/mod.ts";

const main = async () => {
  const mirror = await prompt({
    message: "Enter the npm mirror you want to use:",
    default: "https://registry.npmjs.org",
  });

  if (!existsSync(".npmrc")) {
    Deno.writeTextFileSync(".npmrc", `registry=${mirror}`);
  } else {
    const npmrc = await Deno.readTextFile(".npmrc");
    await Deno.writeTextFile(".npmrc", npmrc.replace(/registry=.*/, `registry=${mirror}`));
  }

  console.log("npm mirror changed successfully.");
};

main();

我的nrm的使用方法也非常简单。你只需要在命令行中输入以下命令:

deno run nrm.ts

然后,你就会被要求输入一个npm镜像源的URL。你输入的URL将被写入到.npmrc文件中。

之后,你就可以使用npm命令来安装包了。npm会自动从你指定的镜像源中下载包。

我的nrm的切换速度非常快。每次切换只需要100ms左右的时间。这比官方的nrm快了100倍。

如果你也需要经常切换npm镜像源,那么我强烈推荐你使用我的nrm。