专栏首页IMWeb前端团队windows 上优雅的安装 node 和 npm

windows 上优雅的安装 node 和 npm

本文作者:IMWeb 江源 原文出处:IMWeb社区 未经同意,禁止转载

我一直觉得我掌握的这份优雅是被许多人所知道了,直到我发现小伙伴们都下载 .msi 来装 node ,我心中的优雅感终于压制不住。

.msi 安装

windows 的一键安装包,应该是最简单的 node 安装方式,但存在几个缺陷。

  • 比如不能安装多个 node 版本,现在 node 的版本就像火箭似的,所以多个 node 版本并行的需求还是很强烈。
  • 一键安装对 npm 的理解也存在问题,我们完全不知道安装过程中,和 npm 相关的目录有哪些,以及怎样配置这些目录。

多版本的方式当然可以去找些 nvm-windows 之类的解决方案,所以这里着重讲解和 npm 相关的东西。

优雅安装

目录

新建一个目录专门了管理 nodenpm 。 比如在 E 盘下新建一个目录 NODE ,如下:

E:\NODE\node
E:\NODE\npm-global
E:\NODE\npm-cache

node 目录用来存放 node.exe ,当然可以放多个版本; npm-globalnpm i xxxxx -g 的安装目录; npm-cachenpm 的缓存目录,避免相同的包每次都联网下载。

下载 .exe

下载可执行文件(.exe),放入上述 node 目录,这时候的目录如下:

E:/NODE/
    node/
        node.exe
        node-v0.12.0.exe
    npm-global/
    npm-cache

可以存放多个 node 版本,在命令行中可以如下使用:

node --version
node-v0.12.0 --version

当然,你现在直接运行上述命令会报错,因为 node 没有配置到环境变量。 E:\NODE\nodeE:\NODE\npm-global 都要配置到环境变量。 怎样配置环境变量就不是本文关注的了。

npm

目前为止,我们可以在命令行中执行 node 命令了,而且可以多版本共存。接下来我们要让 npm 命令顺心如意。

下载安装 npm

第一次要手动下载并安装 npm 。 在上述 npm-global 目录下新建 node_modules 目录。 来这里下载一个最新版的 npm ,将其解压至 node_modules 目录下,并将 npm-x.x.x 重命名为 npm 。 这时整体目录如下:

E:/NODE/
    node/
    npm-global/
        node_modules/
            npm/
                bin/
                xxx
    npm-cache

bin 目录下的 npm 文件和 npm.cmd 文件拷贝至 npm-global 目录下,这个时候应该就可以执行 npm --version 命令了。

设置 npm 的相关目录

不急着执行 npm install 命令。 我们建了 npm-globalnpm-cache ,是时候把它们利用起来了。

npm config set prefix "E:\NODE\npm-global" # npm install -g xxx 的包都会装到这个目录
npm config set cache "E:\NODE\npm-cache" # 缓存都会装到这个目录

现在试着安装一个包:

npm i -g es-checker
es-checker

回顾下,我们现在讲所有 node 相关的东西全集中在 E:\NODE\ 目录中,并且指定了 npm 的安装目录,npm 对我们不再是黑箱。 优雅安装方式结束。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Caffeine Cache 进程缓存之王

    互联网软件神速发展,用户的体验度是判断一个软件好坏的重要原因,所以缓存就是必不可少的一个神器。在多线程高并发场景中往往是离不开cache的,需要根据不同的应用场...

    三哥
  • 【Rust日报】 2019-11-12 揭开异步Rust的神秘面纱

    经过大量的重构之后,librsvg现在可以在Rust中完成所有CSS解析和匹配,无需使用libcroco。另外,CSS引擎来自Mozilla Servo,因此它...

    MikeLoveRust
  • Node.js 环境性能监控

    作者:@LucasTwilight https://juejin.im/post/5c71324b6fb9a049d37fbb7c

    五月君
  • 聊聊rocketmq的AccessChannel

    rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/AccessChannel.java

    codecraft
  • 《前端实战总结》之使用postMessage实现可插拔的跨域聊天机器人

    首先要强调的是跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的。我们常用的跨域技术主要有如下几种:

    徐小夕
  • Node部署和运维工作量降低80%,腾讯NOW直播是怎么做到的?

    上一篇文章,分享了《NGW,前端新技术赛场:Serverless SSR 技术内幕》,本篇文章,将分享腾讯NOW直播在Serverless技术的探索实践。 一...

    腾讯云serverless团队
  • electron概述

    概述优点:缺点与 Python 前后台的构架对比:环境搭建第一个 electron 程序参考文档

    efonfighting
  • [Linux]gocron定时任务平台的部署

    采用二进制文件的方式部署非常简单,因为go已经把源码打包成了可执行文件,下载下来直接运行就可以了,不需要自己去编译和配置依赖

    陶士涵
  • async-std 1.0发布

    async-std是Rust的标准库到异步世界的移植。它运行速度十分快,使用体验也更良好。

    MikeLoveRust
  • 谈DevOps平台落地:前端构建怎么这么复杂

    题记:DevOps 平台通常搭建于内网环境,不能直接外网,所以,如果你也要在内网环境构建前端,就一定会遇到本文所说的问题。

    泽阳

扫码关注云+社区

领取腾讯云代金券