默认安装路径是 C:\Program Files\nodejs,安装完成之后这个路径就自动出现在环境变量 (系统变量 -> Path) 中了。
执行以下命令设置全局生效的 npm 包的安装位置和 npm 缓存路径:
npm config set prefix "%USERPROFILE%\AppData\Roaming\npm\node_global"
npm config set cache "%USERPROFILE%\AppData\Roaming\npm\node_cache"
注: node 会自动创建上面两个命令中提到的目录。npm 的用户配置可以在 %HomePath%\.npmrc
文件中找到。
最后在环境变量 (系统变量 -> Path) 中加入全局生效的 npm 包的安装位置 %USERPROFILE%\AppData\Roaming\npm\node_global。
下载、解压官方编译好的二进制压缩包。假设名为 node.exe 的二进制文件的路径是 d:\DevTools\node-v16.18.0-win-x64\node.exe。
执行以下命令设置全局生效的 npm 包的安装位置和 npm 缓存路径:
npm config set prefix "d:\DevTools\node-v16.18.0-win-x64\node_global"
npm config set cache "d:\DevTools\node-v16.18.0-win-x64\node_cache"
注: node 会自动创建上面两个命令中提到的目录。npm 的用户配置可以在 %HomePath%\.npmrc
文件中找到。
添加以下环境变量到系统变量 Path 中:
下载、解压官方编译好的二进制压缩包。假设名为 node 的二进制文件的路径是 $HOME/node-v16.18.0-linux-x64/bin/node
。
执行以下命令设置全局生效的 npm 包的安装位置和 npm 缓存路径:
npm config set prefix "$HOME/node-v16.18.0-linux-x64/lib/node_global"
npm config set cache "$HOME/node-v16.18.0-linux-x64/lib/node_cache"
注: node 会自动创建上面两个命令中提到的目录。npm 的用户配置可以在 ~/.npmrc 文件中找到。
将二进制文件路径加入到环境变量 PATH 中:
export PATH=$PATH:$HOME/node-v16.18.0-linux-x64/bin
export PATH=$PATH:$HOME/node-v16.18.0-linux-x64/lib/node_global/bin
将上面的命令添加到 ~/.profile 中以永久生效。
注: 按照设计,$HOME/.bashrc 里存放的是和 bash 有关的东西;$HOME/.profile 里存放的是应该全局生效的东西(比如,应当全局生效的环境变量);$HOME/.bash_profile 给/login shell/ 用,确保前两者都被加载 (里面有加载 .bashrc 和 .profile 的代码)。
nvm 是一组 bash 脚本,用于管理多个版本的 Nodejs 环境。
Git bash 会在 %USERPROFILE% 中寻找 .bashrc 文件,加载 nvm 的配置可以放在这个文件中:
# NVM_DIR 对应的目录改为 nvm 的所在目录即可
export NVM_DIR="$HOME/dev_tools/nvm"
# This loads nvm
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# This loads nvm bash_completion
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
接着为 nvm 配置软件源镜像:
nvm npm_mirror https://npmmirror.com/mirrors/npm/
nvm node_mirror https://npmmirror.com/mirrors/node/
但要注意,通过这种方式下载的 Nodejs 所在的目录以版本号标识。在 nvm 切换版本后环境变量 Path 中所指向的 Nodejs 目录必须也做修改。
nvm-windows 用 Go 编写,与 nvm 完全不同。
在 https://github.com/coreybutler/nvm-windows/releases 下载 nvm-noinstall.zip 后解压到 C:\Users\USERNAME\dev_tools\nvm-noinstall。
创建 C:\Users\USERNAME\dev_tools\nvm-noinstall\settings.txt 文件,写入:
root: C:\Users\USERNAME\dev_tools\nvm-nodejs
arch: 64
proxy: none
originalpath: .
originalversion:
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/
其中,第一行的内容是 nvm 安装的 nodejs 所在的目录。
在环境变量中加入 NVM_HOME 变量,值为 C:\Users\USERNAME\dev_tools\nvm-noinstall;以及 NVM_SYMLINK 值为 C:\Users\USERNAME\dev_tools\nvm-nodejs\nodejs。最后,将 %NVM_HOME%
和 %NVM_SYMLINK%
写入 Path
这个环境变量中。
NVM_HOME 变量指明了 nvm 的安装路径;NVM_SYMLINK 所指的路径是一个符号链接,它指向 nvm 指定的当前使用的 nodejs 的路径;将 %NVM_HOME%
和 %NVM_SYMLINK%
写入环境变量 Path
中可以让 nvm 和 node 在被调用时不必写完整路径。
npm config {list | ls} [-l] [--json]
查询目前生效的各种配置。
npm config get <key>
获取配置属性的值,npm config set <key> =<value>
设置配置属性的值,npm config delete <key>
移除某个配置属性。
更换 npm 镜像源:
npm config set registry https://registry.npmmirror.com
npm config set registry http://mirrors.cloud.tencent.com/npm/
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
npm install <pkg-name>
本地安装,npm install -g <pkg-name>
全局安装。
npm install <pkg-name>@<version>
安装指定版本。
npm install --save-exact <pkg-name>
或 npm install -E <pkg-name>
精确安装最新版本。
npm root [-g]
查询包安装路径 (node_modules 目录的位置)。
npm {view | v | show | info} <pkg-name> [<property>]
查看包信息。
npm {list | ls | la | ll} [-g] [--depth=<dependency-depth>]
查询已安装的包,及包的依赖。
npm outdated
检查需要更新的包。
npm {update | up | upgrade} [-g] [<pkg-name]
更新包。
npm {uninstall | remove | rm | r | un} [-g] <pkg-name>
卸载包。
如果在 Windows 上遇到 npm 无法执行的问题,比如出现这样的报错:
npm : 无法加载文件 C:\Users\ld\dev_tools\nvm-nodejs\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwli
nk/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ npm -v
+ ~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
只需要以管理员启动 PowerShell 后执行 set-ExecutionPolicy RemoteSigned
修改 PowerShell 脚本的执行策略即可。
可以手动创建 package.json,但通常用命令 npm init
创建。它描述了:
account <mail>
,例如:
zhangsan <zhangsan@gmail.com>
,不正确的账号和邮箱会导致不能发布包npm init --yes
或 npm init -y
可以在生成 package.json 时自动填充默认配置。
npm install
会在本地安装所有依赖 (dependencies + devDependencies),npm install --production
仅安装生产环境的依赖 (dependencies)。
同时,npm install <pkg>
会自动在 package.json 的 dependencies 字段中保存包信息,npm install -D <pkg>
会自动在 package.json 的 devDependencies 字段中保存包信息。
package-lock.json 在 npm install
执行时生成,用以记录当前实际安装的各个包的具体来源和版本号。package-lock.json 文件的作用是锁定安装时的包的版本号,可以上传到git,以保证其他人安装的依赖版本和本地保持一致。
npm install --package-lock-only
用于根据 package.json 更新 package-lock.json,但需要注意,执行此命令后,node_modules 中保存的包的版本可能和 package-lock.json 中声明的不一致,需要删除 node_modules 后重新执行 npm install
下载所需依赖。
符号 | 描述 | 示例 | 示例描述 |
---|---|---|---|
> | 大于某个版本 | >1.2.1 | 大于1.2.1版本 |
>= | 大于等于某个版本 | >=1.2.1 | 大于等于1.2.1版本 |
< | 小于某个版本 | <1.2.1 | 小于1.2.1版本 |
<= | 小于等于某个版本 | <=1.2.1 | 小于等于1.2.1版本 |
- | 介于两个版本之间 | 1.2.1 - 1.4.5 | 介于1.2.1和1.4.5之间 |
x | 不固定的版本号 | 1.3.x | 只要保证主版本号是1,次版本号是3即可 |
~ | 补丁版本号可增 | ~1.3.4 | 保证主版本号是1,次版本号是3,补丁版本号大于等于4 |
^ | 此版本和补丁版本可增 | ^1.3.4 | 保证主版本号是1,次版本号可以大于等于3,补丁版本号可以大于等于4 |
* | 最新版本 | * | 始终安装最新版本 |
如果 a b 两个包依赖同一个包的不同版本,保存在 node_modules 目录下的 a b 两包会在各自的目录下下载各自的依赖,从而形成嵌套目录:
├── node_modules
│ ├── a
│ │ ├── node_modules
│ │ │ ├── c
│ │ │ | |—— c包的文件
│ │ │── a包的文件
│ ├── b
│ │ ├── node_modules
│ │ │ ├── c
│ │ │ | |—— c包的文件
│ │ │── b包的文件