node.js 版本与包管理
nvm (node version manager)
- 安装
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
# 写入~/.zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm
- 使用
# 查看所有已经安装的版本
nvm ls
# 列出可以安装的 node.js 的版本
nvm ls-remote
# 安装最新版node
nvm install node
# 安装指定版本node
nvm install v10.16.0
# 卸载指定版本
nvm uninstall v10.16.0
# 使用指定版本node
node -v use v16.10.0
# 设置默认版本
nvm alias default v16.10.0
# 使用指定版本node运行脚本
nvm exec v16.10.0 node app.js
nrm (node registry manager)
- 安装
npm install -g nrm
- 使用
# 来列出可用的源
nrm ls
# 切换使用的源
nrm use taobao
# 增加私有源
nrm add <name> <url>

npm(node package manager)
安装
# 更新安装源,以安装新版本:https://github.com/nodesource/distributions
sudo su
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
apt-get install -y nodejs
# 安装node,此时npm也一并安装完成了
apt install nodejs
# 验证安装成功
node -v
npm -v
# 升级npm到最新版本
sudo npm install npm -g
# 安装cnpm(npm的国内镜像)
npm install cnpm -g --registry=https://registry.npm.taobao.org
命令
# 局部安装:将安装包放在 ./node_modules 下
npm install <pkg>
# 安装并记录到package.json里
npm install --save <pkg>
# 卸载
npm uninstall <pkg>
# 更新
npm update <pkg>
# 全局安装:可以直接在命令行里使用安装后的包
npm install <pkg> -g
# 使用镜像加速
sudo npm install -g <pkg> --registry=https://registry.npm.taobao.org
# 查看全局安装的所有包
npm list -g
# 新建模块
npm init
# 发布模块
npm publish
npm脚本
- npm 允许在
package.json文件里面,使用scripts字段定义脚本命令- 然后使用
npm run xxx就可以执行定义的命令
- 然后使用
- 使用
npm run可以查看当前项目的所有脚本命令
![在这里插入图片描述]()
- 向 npm 脚本传入参数,要使用
--标明- 例如
npm run build -- --name hello
- 例如
- 钩子命令
- 对于某个命令
xxx, 如果定义prexxx和postxxx,那么上述命令会自动在执行npm run xxx的之前和之后运行
- 对于某个命令
- 实现原理
- 每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令
- 只要是Shell可以运行的命令,就可以写在 npm 脚本里面
- 这个Shell会将当前目录的
node_modules/.bin子目录加入PATH变量,执行结束后再将PATH变量恢复原样- 这意味着当前目录的
node_modules/.bin子目录里面的所有脚本,都可以直接用脚本名调用而不必加上路径
- 这意味着当前目录的
- npm 脚本的退出码,也遵守 Shell 脚本规则
- 如果退出码不是0,npm 就认为这个脚本执行失败
- npm 脚本的唯一要求就是可以在 Shell 执行
- 因此它不一定是 Node 脚本,任何可执行文件都可以写在里面
- 每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令
- 参考:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
yarn
TODO

浙公网安备 33010602011771号