npm
安装
npm【Node Package Manager】是一个NodeJS包管理和分发工具,已经成为了官方的发布Node模块的标准。 安装了nodejs之后,自动就安装了npm命令。
# 检查npm版本
npm --version
常用命令
# 初始化项目
npm init
npm init -y
# 安装package.json中全部依赖项
npm install
# 安装依赖项
npm install 依赖 【安装最新版本】
npm install 依赖@版本 【安装指定版本】
# 移除依赖包
npm uninstall 依赖
# 安装依赖到指定依赖项
npm install 依赖 -S 【安装到生产环境dependencies】
npm install 依赖 -D 【安装到开发环境devDependencies】
npm install 依赖 -P 【安装到同伴依赖项peerDependencies】
npm install 依赖 -O 【安装到可选依赖项optionDependencies】
# 全局安装依赖
npm install 依赖 -g
# 升级依赖项
yarn update 依赖
yarn update 依赖@版本
# 查看yarn所有命令
npm help
# npm清理缓存
npm cache clean -f
# 查看当前项目目录下,所有安装的依赖项
npm list
更改npm的源
方法1:使用nrm来改变npm的源地址
方法2:
# 查看当前使用源
npm config get registry
# 设置使用源
npm config set registry https://registry.npmjs.org/
# 安装源
npm install --registry=https://registry.npm.taobao.org
cnpm
CNPM 是中国 npm 镜像的客户端。
安装
# 安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 检查是都安装成功
cnpm --version
命令
cnpm命令与npm命令一致。
yarn
快速、可靠、安全的依赖管理工具。 yarn会多一个文件yarn.lock,用来查看我们安装的依赖环境。
安装
# 安装
npm i yarn -g
# 检测是否安装成功
yarn --version
常用命令
# 初始化项目
yarn init
yarn init -y
# 安装package.json中全部依赖项
yarn install
# 安装依赖项
yarn add 依赖 【安装最新版本】
yarn add 依赖@版本 【安装指定版本】
# 移除依赖包
yarn remove 依赖
# 安装依赖到指定依赖项
yarn add 依赖 【安装到生产环境dependencies】
yarn add 依赖 -D 【安装到开发环境devDependencies】
yarn add 依赖 -P 【安装到同伴依赖项peerDependencies】
yarn add 依赖 -O 【安装到可选依赖项optionDependencies】
# 全局安装依赖
yarn global add 依赖
# 升级依赖项
yarn upgrade 依赖
yarn upgrade 依赖@版本
# 查看yarn所有命令
yarn help
npx
npm从5.2版本开始,增加了npx命令。
# 如果没有npx,可以使用npm命令安装。
npm i npx -g
# 查看npx版本
npx --version
npx功能1 避免全局安装模块
比如,之前使用create-react-app安装脚手架,都是先全局安装create-react-app,再使用,这样安装全局模块,比较耗费内存。
使用npx命令就可以避免全局安装模块,npx会将create-react-app下载到一个临时目录,使用之后就会删除。并且已经创建好了test-react脚手架。
优点
- 避免全局安装模块,占用本地资源;
- 不用担心模块版本更新滞后问题;
npx create-react-app test-react
例如:卸载该项目的node_modules,不用先全局安装rimraf。
npx rimraf node_modules
例如:一键执行远程npm源的二进制包
npx cowsay hello
< hello >
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
npx功能2 调用项目内部安装的模块
例如,我们项目内部安装了jest测试工具。
npm install jest@24.8.0 -D
我们想要使用jest来初始化项目,来生成jest.config.js文件,修改package.json文件中的script。
"init": "jest --init" 执行npm run init ,才会执行jest --init命令。
但是如果我们不想修改package.json怎么办?
# 可以使用npx命令;
npx jest --init
npx运行原理很简单,就是在运行的时候,会到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在。由于npx也会检查环境变量$PATH,所以系统命令也是可以调用的。
# 等同于 ls
npx ls
注意:Bash内置的命令不在$PATH中,所以不能够使用,例如,cd是Bash命令,因此不能使用npx cd。
npx功能3 控制调用本地/远程模块
强制使用本地模块 --no-install
想让npx强制使用本地模块,可以使用--no-install参数。但是,如果本地没有此模块,会报错。
npx --no-install rimraf node_modules
// 提示:not found: rimraf
强制使用远程模块 --ignore-existing
如果想要忽略本地已有模块,强行使用远程模块,可以使用--ignore-existing参数,比如本地已经安装了react-react-app,但还是想要使用远程的。
npx --ignore-existing create-react-app my-react-app
npx功能4 使用不同版本node
利用npx可以下载模块的特点,可以指定某个版本的Node运行脚本;
npx node@6 -v
v6.17.1
原理:npm会下载这个版本的node,使用后删掉。
某些场景下,这个方法用来切换 Node 版本,要比 nvm 那样的版本管理器方便一些。
npx 参数
-p参数
使用-p参数,指定模块。先安装了node@6模块,再执行node -v命令
npx -p node@6 node -v
-p参数对于需要安装多个模块的场景很有用。
npx -p lolcatjs -p cowsay [command]
-c参数
如果 npx 安装多个模块,默认情况下,所执行的命令之中,只有第一个可执行项会使用 npx 安装的模块,后面的可执行项还是会交给 Shell 解释。
npx -p lolcatjs -p cowsay 'cowsay hello | lolcatjs'
// 报错
上面代码中,cowsay hello | lolcatjs执行时会报错,原因是第一项cowsay由 npx解释,而第二项命令localcatjs由 Shell解释,但是lolcatjs并没有全局安装,所以报错。
-c参数可以将所有命令都是用npx解释。
npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs'
-c参数的另一个作用,是将环境变量带入所要执行的命令。举例来说,npm 提供当前项目的一些环境变量,可以用下面的命令查看。
npm run env | grep npm_
-c参数可以把npm的环境变量添加到npx中。
npx -c 'echo "$npm_package_name"'
npx功能5 执行Github源码
npx还可以执行Github上的模块源码。注意,远程代码必须是一个模块,即必须包含package.json和入口脚本。
# 执行 Gist 代码
$ npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
# 执行仓库代码
$ npx github:piuccio/cowsay hello
nvm
npm是包管理工具,可以下载卸载包;
nvm让你的电脑可以拥有多种node环境,因为node是经常更新的,我们每次想要使用新的就需要重新安装node环境,十分的不方便,因此nvm应运而生。
windows环境下载nvm
下载地址:github.com/coreybutler…
下载指定版本中的nvm-setup.zip压缩文件。
安装nvm
安装nvm是让你选择两个安装目录,一个是nvm安装路径,一个node安装路径。
nvm常用命令
# 检查nvm版本
nvm version
nvm --version
# 下载指定node版本
nvm install 版本号 例:nvm install 12.16.3
# 删除指定node版本
nvm uninstall <版本号>
# 查看本地所有版本
nvm ls
nvm list
# 查看node所有线上版本
nvm list available
# 切换node使用版本
nvm use <版本号>
nrm
nrm可以帮助您在不同的npm源地址之间轻松快速地切换。
安装
# 安装
npm i nrm -g
# 检查是否安装成功
nrm --version
报错
解决方法
找到nrm所在目录,一般是c盘用户文件夹
C:\Users\用户\AppData\Roaming\npm\node_modules\nrm
打开cjs.js,
// 注释这一行
const NRMRC = path.join(process.env.HOME, '.nrmrc');
// 添加此行代码
const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
然后就可以正常使用啦!!!
常用命令
# 查看可使用的源
nrm ls
*代表正在使用的源
* npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
# 更换使用的源
nrm use 使用的源
# 添加一个源
nrm add 源名 路径 [home] 【nrm add inpm http://npm.inpm.com/】
home可以添加也可以不加,如果不添加home,nrm home 源名没有效果。
# 删除一个源
nrm del 源名
# 测试源的响应速度
nrm test
npm ---- 1135ms
* yarn --- 1148ms
cnpm --- 12056ms
taobao - 687ms
nj ----- Fetch Error
npmMirror 2431ms
edunpm - Fetch Error
# 访问源的主页
nrm home 源名