四、包管理工具
4.1 npm(Node Package Manager)
Node.js官方内置的包管理工具。
命令行下打以下命令:
npm -v
如果返回版本号,则说明npm可以正常使用
4.1.1npm初始化
#在包所在目录下执行以下命令
npm init #正常初始化,手动输入包信息
npm init -y #快速初始化,全部使用默认的信息
完成后会在目录下生成package.json文件,文件内容如下:
{
"name": "01_npm",
"version": "1.0.0",
"description": "Mypackage01",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
注意事项:
1、package name(包名)不能使用中文和大写字母,默认是包的目录名,所以包目录名最好也不要使用中文和大写字母
2、version(版本号)要求x.x.x格式,x必须是数字,默认为1.0.0
3、ISC证书和MIT证书功能上是相同的
4、package.json可以手动创建和修改
5、使用npm init -y 或npm init --yes,可以快速创建package.json(全部使用默认值)
4.1.2搜索包
1)命令行方式
npm s <关键字>
npm search <关键字>
2)网站搜索
https://www.npmjs.com
4.1.3安装包
npm i <packageName>
npm i <packageName@version> ##安装指定版本
安装完以后,会在当前目录下生成一个名为node_modules的目录,这个目录下会保存所有安装的包。
这里我们安装了两个包(math和uniq)。
math和uniq里有js文件(包的主程序文件)和package.json(用于描述包的基本信息)
4.1.4导入安装的包
//导入并使用已安装的uniq包
//导入的时候会先到当前上当的node_modules里去找,如果没有找到,则会到上一级目录中的node_modules目录中去找,直到找到根目录为止
const uniq=require('uniq')
let arr = [1,1,2,2,3,3]
const result = uniq(arr)
console.log(result)
输出:
[ 1, 2, 3 ]
4.1.5生产依赖和开发依赖
开发环境:专门用来定代码的环境,只有程序员自己可以访问
生产环境:代码正式运行的环境,每个客户都可以访问
npm i -S <packageName> #生产依赖(默认),包信息保存在package.json的dependencies中。
npm i -D <packageName> #开发依赖,包信息保存在package.json的devDependencies中。
//package.json
{
"dependencies": { //math和uniq是生产依赖的包
"math": "^0.0.3",
"uniq": "^1.0.1"
},
"devDependencies": { //less是开发依赖的包(安装方式:nqm i -D less)
"less": "^4.2.0"
}
}
4.1.6全局安装
npm i -g <packageName>
全局安装的包,可以在命令行下任意位置运行
全局安装的包,不受工作目录及位置的影响
可以通过npm root -g,来查看全局安装名的位置
不是所有的包都适合使用全局安装,只有全局类的工具才适合。
示例:
#使用nodemon启动js文件,如果js文件有修改的话,它会自动重启服务
npm i -g nodemon
4.1.7安装npm包的全部依赖
#根据package.json和package-lock.json安装所有的依赖
#因为node-modules这个通常不会存入版本库(git),当其它程序员拉取代码后,是不包含npm包的,所以需要重新安装所有依赖
npm i
npm install
4.1.8删除npm包
npm r <packageName>
npm remove <packageName>
npm r -g <packageName> //删除全局包
4.1.9配置npm命令别名
通过配置别名,可以更简单的执行命令
配置package.json
"scripts": {
"server":"node ./server.js",
"start":"node ./index.js",
}
这样可以通过别名来执行命令
npm run server
npm start //start这个别名执行的时候不需要带run
4.1.20 cnpm
cnpm是淘宝构建的npmjs.com的完整镜像,也称为淘宝镜像,https://registry.npmmirror.com/
cnpm服务部署在国内阿里云上,可以提高包的下载速度
官方提供了一个全局工具包cnpm,功能和使用方式和npm相同
安装cnpm:
npm --registry https://registry.npmmirror.com/ i -g cnpm
4.1.21npm配置淘宝镜像
1)安装nrm工具
cnpm i -g nrm
2)使用nrm查看可用的镜像
nrm ls
输出:
npm ---------- https://registry.npmjs.org/ #官方镜像
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
huawei ------- https://repo.huaweicloud.com/repository/npm/
3)切换到淘宝镜像
nrm use taobao
4)查看是否切换成功
npm config list
输出:
#这里我们看到,已经切换到了淘宝镜像
home = "https://npmmirror.com"
registry = "https://registry.npmmirror.com/"
4.2.22 使用npm发布包
1、创建一个包
2、注册账号并激活(https://www.npmjs.com/signup)
3、修改为官方镜像(npm use npm)
4、登入:(npm login)
5、提交包:(npm publish)
4.2.23更新包
1、更新代码
2、修改package.json中的版本号
3、发布更新(npm publish)
4.2.24删除包
npm unpublish
4.2yarn
yarn是facebook在2016年推出的新的Javascript包管理工具,官方地址:https://yarnpkg.com
特点:
速度快:yarn缓存了每个下载过的包,所以再次使用时,无需重新下载;
安全:在执行代码之前,会通过算法校验安装包的完整性;
可靠:使用详细、简洁的锁文件格式和明确的安装算法,能保证在不同的系统上无差异工作。
4.2.1安装yarn
npm i -g yarn
4.2.2常用命令
#初始化
yarn init /yarn init -y
#安装包
yarn add <packageName> #生产依赖
yarn add <packageName -dev> #开发依赖
#删除包
yarn remove <packageName> #删除项目依赖包
yarn global remove <packageName> #全局删除包
#安装所有项目依赖
yarn
#运行命令别名
yarn <别名> #不需要加run
4.2.3yarn配置淘宝镜像
yarn config set registry https://registry.npmmirror.com/
yarn config list #查看配置信息
4.3 node版本管理工具nvm
nvm(Node Version Manager),是用来管理node版本的工具,方便切换不同版本的node.js
下载地址:
https://github.com/coreybutler/nvm-windows/releases
常用命令
nvm list available #显示所有可以下载的Node.js版本
nvm list #显示已安装的版本
nvm install 18.12.1 #安装18.12.1版本的Node.js
nvm uninstall 18.12.1 #删除某个版本的js
nvm install lastest #安装最新新版本
nvm use 18.12.1 #切换到18.12.1版本的Node.js