对才开始接触 Nodejs 的友人来讲,绝大多数时候令人头疼的并非编写代码,而是怎样于各异的电脑上将该运行环境去妥善安装好,并且精心配置妥当。

NVM 使用方法 _ 服务器 Nodejs 安装 _Nodejs 安装教程

尤其是,当手上存在多个项目,这些项目分别对 Nodejs 的不同版本有需求时,那种来来回回进行卸载再重新安装的痛苦滋味,凡是经历过的人都会明白。

这篇文章依照真实使用经验,将Windows下的安装配置办法梳理一番,把 MacOS 下的安装配置办法梳理一番,把Linux下的安装配置办法好好梳理一遍,重中之重是推荐采用 NVM 进行版本管理,顺带把 npm 的常见配置讲明白,把团队常用包讲明白。

Windows 系统:直接安装包或改用 WSL

于 Windows 环境里安装 Nodejs 情况之下,最为传统方式那便是前往官方网站或者国内镜像站点去下载 msi 安装包。

推荐用清华大学开源镜像站淘宝镜像站,下载速度快很多。

双击安装,一路下一步就行。

node -v
npm -v

装完后打开命令行,输入

node -v

如果能正常显示版本号,说明安装成功。

若出现提示找不到命令的情况,那就得依靠手动的方式,把 Nodejs 的安装目录增添至系统的环境变量 Path 当中。

实话实说,于 Windows 操作系统环境之中,借助 nvm-windows 来开展多版本管理工作,其实际体验欠佳,常常 encountered 权限方面或者路径方面所出现的问题。

较更为值得推荐的做法乃是直接开启启用 WSL(即 Windows Subsystem for Linux),于其中采用 Linux 的方式去进行管理 Nodejs,如此会舒适许多。

xcode-select --install

MacOS 系统:用 NVM 替代 pkg 安装包

MacOS 的环境里,虽然凭借直接进行下载 pkg 这方面而言的安装包,可以用以安装 Nodejs,可是一般情况下是不推荐采用这种做法的。

/Library/Developer/CommandLineTools/

NVM 使用方法 _ 服务器 Nodejs 安装 _Nodejs 安装教程

因为一旦用安装包装了系统级版本,后面再想切版本就很麻烦。

正确的做法是先装NVM

然而,在进行安装 NVM 之前,得要保证系统当中是存在 Command Line Tools 的。

可以跟XCode一起装,也可以单独装。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

单独安装的命令是

xcode-select --install

装完后,这些工具默认存放在/Library/Developer/CommandLineTools/路径下。

有了这个基础环境,就可以顺利安装NVM了。

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

通过 NVM 安装 Nodejs(最推荐的方式)

无论处于 MacOS 系统环境之中,还是处于 Linux 系统环境里面,NVM 都是用于管理 Nodejs 版本的最为不错的工具标点符号。

nvm current #查看当前正在使用的 node 版本
nvm ls #列出本地已安装的 node 版本
nvm ls-remote #列出远程所有版本可通过 |grep v12.* linux 管道命令来进行筛选
nvm install v12 #安装 v12 版本的 nodejs,如果不指定具体版本,默认安装当前大版本的 LTS 版
nvm install --lts #安装 lts 版本 node
nvm uninstall --lts #删除某个 node 的 lts 版本
nvm use v12 #使用 v12 版本的 nodejs
nvm use system #如果操作系统中已经安装有 nvm 可识别的 nodejs,该命令会使用系统中的 nodejs
nvm alias default v12 #设置操作系统别名,该命令将 v12 别名设置为 default,可通过 nvm use defaul 使用

安装NVM只需要在终端执行下面两条命令中的任意一条:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

或者

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

脚本会自动把NVM下载到~/.nvm文件夹,并往~/.bashrc~/.zshrc~/.profile里写入环境配置。

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

Nodejs 安装教程 _ 服务器 Nodejs 安装 _NVM 使用方法

装完后重新打开终端,输入nvm就能看到帮助信息。

服务器 Nodejs 安装 _NVM 使用方法 _Nodejs 安装教程

NVM 常用命令与国内镜像加速

装好NVM后,常用的命令并不多。

想要安装指定版本,用 nvm install 18.17.0 便可实现。若要去切换到该版本,使用 nvm use 18.17.0 就行。而要是设置默认版本,那就用 nvm alias default 18.17.0。

tar xvJf  node.tar.xz #解压缩下载的安装包
sudo mv node /usr/node  #将安装包移动到需要安装的目录下
#创建软连接,使得在 bash 下可以直接使用 node 相应命令,需要注意的是,通过这种方式安装的话,后续安装的
#全局 npm 包也需要每个单独配置软连接。要简化这一步骤,需要把 nodejs 包添加到 linux 的环境变量中
sudo ln -s /usr/node/bin/node /usr/local/bin/
sudo ln -s /usr/node/bin/npm /usr/local/bin/
sudo ln -s /usr/node/bin/npx /usr/local/bin/

要留意的是,借助 NVM 所安装的不一样版本的 Nodejs,彼些的全局包是全然相互隔离的,在某一个版本之中运用 npm install -g 去安装的工具,当切换到另外一个版本之后就寻觅不到,这实际上是一项优点。

处在默认情形下时,NVM 是从 Nodejs 海外的官方网站那里进行下载的,要是速度较为缓慢的状况下,能够去设置环境变量 NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node,进而换为淘宝镜像来实现加速。

Linux 服务器:直接使用预编译二进制文件

如若属于生产环境的 Linux 服务器,一般而言仅需运行一个固定版本的 Nodejs,并不具备安置 NVM 的必要条件。

#设置 npm 淘宝镜像
npm config set registry http://registry.npm.taobao.org/
#设置 yarn 淘宝镜像
yarn config set registry http://registry.npm.taobao.org/
#设置 npm 为官方镜像
npm config set registry https://registry.npmjs.org/
#设置 yarn 为官方镜像
yarn config set registry https://registry.yarnpkg.com
#安装阿里 cnpm 工具来替代默认 npm,安装后可使用 cnpm 命令替代 npm
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
#查看当前镜像仓库路径
npm get registry 
yarn config get registry
# 代码审查
npm audit

直接从官网下载预编译的二进制包更合适。

wgetcurl下载tar.xz文件,解压后移动到/usr/local/nodejs这样的目录,然后创建软链接:

ln -s /usr/local/nodejs/bin/node /usr/local/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm
ln -s /usr/local/nodejs/bin/npx /usr/local/bin/npx

这样在任何路径下都能直接调用nodenpmnpx命令了。

npm 配置国内仓库与常用命令

npm i -g pacakge-name

装完成装好 Nodejs 之后的首件事情,便是将 npm 的默认仓库替换成国内的,不然安装包的速度慢得让人怀疑人生。

npm init

推荐用淘宝镜像,一行命令搞定:

npm config set registry https://registry.npmmirror.com

想恢复官方源的话,执行npm config set registry https://registry.npmjs.org就行。

npm安装包分全局安装(-g)和项目安装。

npm i package-name #在项目中安装名为 package-name 的包,但并不保存到项目包列表中,不推荐该方法
npm i package-name --save #安装 package-name 包,并保存到项目依赖清单中
npm i package-name --save-dev #安装 package-name 包,并保存在开发依赖清单中,在生产环境中不安装
npm uninstall package-name #卸载某个包
npm update package-name #升级某个包的版本
npm i package-name@1.0.0 --save #安装指定版本的 package-name 包
npm search package-name #搜索某个包
npm ls -g #列出全局安装的所有包
npm cache clear #清空 npm 本地缓存,一般在系统出现问题时处理故障使用

在全局进行安装,会对环境造成污染,并且不利于项目进行移植,在除关于了此类 pm2 以及 nodemon 这样的工具之外,一般情况下是不建议去使用的。

位于项目根目录那儿,借助 npm init 去生成 package.json,接着通过 npm install 包名,使用--save 或者--save-dev 来安装,如此依赖便会自动被写入 package.json。

团队进行开发期间,常常会用到的包涵盖了 express,还有 lodash,以及 axios 哪也少不了,webpack 也在其中,eslint 同样是常用的,另外 jest 等也属于常用包的范畴。

npm i -g typescript #安装 TypeScript 语言包
tsc helloworld.ts #使用 TypeScript 编译.ts 文件

供个人使用的开发机,建议借助 NVM 来管理 Nodejs 版本,而用于生产的服务器,则直接采用二进制包。

npm install -g @angular/cli
ng new my-app
cd my-app
ng serve --open #启动 angular 开发服务器
#打开浏览器并访问 http://localhost:4200

无论采用何种方式,在第一时间将 npm 仓库替换为国内镜像,如此能够节省下大量的等待时间。

npm i -g nestjs/cli #安装命令行工具
nest new my-app  #新建项目
cd my-app  #进入新项目
npm run start #运行项目
#打开浏览器并访问 http://localhost:3000

虽说多版本之间那般相互隔离的特性,刚开始的时候会让人 somewhat 不太习惯,然而习惯了之后,就往往能够察觉到项目管理方面要清晰许多。

npm i -g light-server

# Examples:
  $ light-server -s . -p 7000
  $ light-server -s dist --http2 -o
  $ light-server -s dist --historyindex '/index.html'
  $ light-server -s . -w "*.js, src/** # npm run build && echo wow!"
  $ light-server -s . -x http://localhost:8000
  $ light-server -s . -x http://localhost:8000 --servePrefix /assets
  $ light-server -s . -b 10.0.0.1
  $ light-server -x http://localhost:9999 --proxypath "/api" -w "public/**"
  $ light-server -s static -w "**/*.css # # reloadcss"
  $ light-server -c .lightserverrc
  & light-server -s . -p 8000 -w "src/**/*.js # npm run js # no-reload"

希望这篇经验分享能帮你少走一些弯路。