默认安装路径是 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 的代码)。
在 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://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/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>
卸载包。
可以手动创建 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包的文件