Node
Javascript 的运行时,提供诸多系统层面的 API,如 I/O、网络等,可以用来搭建 web 服务器。
下载方式
- 官网下载安装包:nodejs.org/en/download
- 使用 NVM 下载。
node 命令常用选项
-v
,--version
打印 node 版本号。-h
,--help
打印 node 的命令行选项。 此选项的输出不如本文档详细。-e
,--eval "script"
把跟随的参数作为 JS 来执行。-p
,--print "script"
与-e
相同,但会打印结果。
其他详细选项可运行 man node
在终端中查看
NPM
NPM 是 Node.js 指定的官方包管理工具,全称 Node Package Manager。是 JS 模块的的托管平台,并提供给所有开发者上传和下载,为 Node.js 生态的蓬勃发展起到了关键性作用。
安装方式
NPM 跟随 Node.js 自动安装。
升级方式
目前遇到的情况是,Windows 情况下,如果按照提示命令 npm install npm -g
升级 npm,则会默认在C:\\Users\用户名\AppData\Roaming\npm
中创建一个新的 npm 包管理器。而 C:\\Program Files\nodejs\npm
中仍然存在旧版本的 npm 管理器。
会发现,使用npm -v
,npm ls -g npm
命令显示出的版本不同。
虽然日常使用没发现什么问题,但这明显不符合简约主义,所以 google 之后,整理以下升级方法。(PS:只适用于 Windows)
-
方式一
- 确保已经安装了 Node.js
- 以管理员身份运行 Powershell
- 分别执行以下命令:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force npm install -g npm-windows-upgrade npm-windows-upgrade
-
选择安装版本
-
如果脚本有问题,请考虑手动添加参数。 一个常见的问题是脚本无法找到 npm(因此不知道将其安装在哪里)在这种情况下,请手动传递位置。
npm-windows-upgrade --npm-path "C:\nodejs"
- success !
-
方法二
使用
powershell
中进入nodejs
的安装目录,例如C:\ Program Files\nodejs
运行npm install npm
(不带 -g 选项) -
方法三
下载并运行最新的 Node.js 安装包。 MSI 将更新您已安装的 Node.js 和 npm。
-
方法四
运行命令:
npm config set prefix "C:\Program Files\nodejs"
设置 npm 全局安装包的位置为 Node.js 程序文件夹,如此运行
npm install xxx(包名) -g
,就会在 Node.js 文件夹安装和更新包文件了。达到了曲线救国的目的。note:
- 如果 Node.js 的安装路径在
C:
盘,那么更新 npm 包的时候,可能需要使用用管理员方式打开 powershell,遂不推荐。 - 如果使用了 NVM 管理 node,则直接执行
npm install -g npm@last
即可,不会重复安装。
- 如果 Node.js 的安装路径在
常用命令
-
npm install
从指定位置安装包,别名:
add, i
# 默认情况下 根据当前目录的 package.json 安装 package npm install # 安装指定 package 到项目开发依赖 npm install -D webpack webpack-cli # 添加 -g 选项 安装制定 package 到全局目录 npm install -g whistle
可以添加可选项:
-P, --save-prod(默认值)
:添加到生产依赖-D, --save-dev
:只添加到开发依赖--no-save
: 只安装,不添加到依赖项-g
: 安装到全局目录
# 安装软件包到全局
npm install
命令安装的依赖包最终是什么版本这个问题困绕着我,本着求是的精神,google 了一圈,结合代码实践,发现网上的回答都比较局限,如今(2020-03-16)的 npm 版本来到了6.13.4
,这里结合了自身实践得出的结论,更新一下 npm 最新的版本控制机制……-
如果package.json 和 package-lock.json 中的模块版本不一致,则安装符合 package.json 版本要求(符合版本要求指:^1.2.x=1.3.x,~1.2.3=1.2.6)的最高版本的依赖模块,并且更新 package-lock.json 中的指定版本依赖模块
-
如果 package.json 和 package-lock.json 中的模块版本一致(模块版本一致指:^1.2.x=1.3.x,~1.2.3=1.2.6),则安装 package-lock.json 中的指定版本依赖模块
-
如果 package.json 中指定版本号(即不使用^或~前缀直接写具体版本),则安装 package.json 中的模块版本,并且更新 package-lock.json 中的指定版本依赖模块
-
其实在不同的 node 版本中 npm install 的规则还不太一样,比如 npm 5.0.x 版本,不管 package.json 怎么变,npm install 时都会根据 package-lock.json 下载。所以本篇文章的目的是告诉大家即使 google 也会有时效性问题。以上代码作者仅保证在 npm(6.13.4)下有效!
-
npm uninstall
移除包,别名:
unlink, remove, rm, r, un
npm uninstall webpack webpack-cli
-
npx
运行命令,如果本地不存在,则从远端 registry 寻找。
作用:
- 不用下载安装 package 到全局环境,节省空间;
- 默认使用最新版代码。
# 快速创建一个 react 项目。 npx create-react-app
-
npm init
快速初始化一个 package.json 文件,别名:
create, innit
。npm init foo
->npm exec create-foo
npm init @usr/foo
->npm exec @usr/create-foo
npm init @usr
->npm exec @usr/create
npm init react-app
快速创建一个 react 项目。 -
npm config
更新和编辑用户或全局 .npmrc 文件的内容,别名:
c
# 设置 npm 的镜像仓库为淘宝镜像 npm config set registry https://registry.npmmirror.com # 查看 npm config get registry # 移除 npm config delete registry # 进入 vi 编辑模式 npm config edit # 查看所有配置文件 包括默认配置和用户配置文件 npm config list -l
-
npm view
查看远端仓库信息,别名:
v, info, show
。# 查看 vite 仓库信息概要 包括依赖信息、contributers npm view vite
-
npm ls
列出已经安装的软件包,别名
list, la, ll
。# 查看项目安装的所有依赖包信息 npm list --all # 查看项目中安装的 vue 的版本信息 npm list vue
-
npm update
根据 semver 规则升级依赖包,别名
upgrade, up, udpate
。# 升级 vue 全局依赖 npm update -g vue
NVM
NVM 全称 Node Version Manager,node 版本管理工具,方便安装和切换 node 版本。
安装方式
-
在 MAC 环境下使用 Homebrew
brew install nvm # 在用户目录创建 NVM 的工作文件,如果它不存在 mkdir ~/.nvm # 加入下面的配置项到你的 终端配置文件中 比如 ~/.zshrc export NVM_DIR="$HOME/.nvm" [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && . "/opt/homebrew/opt/nvm/nvm.sh" [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && . "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
重启终端即可使用 NVM
- PC 环境下 exe 安装包 Releases · coreybutler/nvm-windows (github.com)
常用命令
# 查看已安装 node 版本
nvm ls
# 查看可安装 的node 版本
nvm ls-remote --lts
# 安装指定版本 node
nvm install 8.0.0
# 卸载 node
nvm uninstall
# 使用最新的可用 8.0.x 版本
nvm use 8.0
# 使用 node 6.10.3 运行 app.js
nvm run 6.10.3 app.js
# 在 shell 上设置默认的 node 版本
nvm alias default 8.1.0
# 在 shell 上设置默认的 node 版本为最新版
# node 是 最新版的别名
nvm alias default node
# 安装最新的可用版本
nvm install node
# 使用最新版本
nvm use node
# 安装最新的 LTS 版本
nvm install --lts
# 使用最新的 LTS 版本
nvm use --lts
语义化版本 Semver
通过语义化版本的方式,携带相关兼容信息。
语义化版本格式:主版本号.次版本号.修订号(x.x.x),版本号递增规则如下:
- 主版本号(MAJOR):当你做了不兼容的 API 修改,
- 次版本号(MINOR):当你做了向下兼容的功能性新增,
- 修订号(PATCH):当你做了向下兼容的问题修正。
- 先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
- 版本号控制符 ^ 控制 主版本号相同,次版本号或修订号 >= 当前版本次版本号或修订号
- 版本号控制符 ~ 控制 主版本号和次版本相同,修订号 >= 当前版本修订号
例: ^3.3.4 表示 X >= 3.3.4 && X < 4.0.0
~1.15.2 表示 X >=1.15.2 && X < 1.16.0