(一)、npm
npm 是什么
npm 是世界上最大的软件注册表,包管理工具。包含超过600000个js 包(代码模块),包的结构可以使我们轻松跟踪版本和依赖项。
npm 由3个独立的部分组成
-
网站
www.npmjs.com/ 是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径
-
注册表
注册表 是一个巨大的数据库,保存了每个包(package)的信息
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
-
命令行工具
通过命令行或终端运行。开发者通过 CLI 与 npm 打交道
npm安装和使用
npm是用nodejs写的,所以要有nodejs环境要先安装nodejs。nodejs用官网的LTS版本。npm会随同nodejs一起安装。
// 更新npm包
npm install npm@latest -g
npm install -g cnpm --registry=https://registry.npm.taobao.org #淘宝镜像
cnpm install xx
// 安装包
npm install express # 本地安装 1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。2. 可以通过 require() 或inport来引入本地安装的包。
npm install express -g # 全局安装 1. 将安装包放在 /usr/local 下或者你 node 的安装目录。2. 可以直接在命令行里使用。
// 如果你希望具备两者功能,则需要在两个地方安装它或使用 npm link。仓库里的xxx的版本号写为*,安装完模块,再把node_modules里的xxx删掉,再npm link xxx或者 先把父仓库的package.json 里的 "xxx"删掉,再npm link "xxx",
// 卸载模块
npm uninstall express
// 更新模块
npm update express
// 搜索模块
npm search express
// 查看全局安装信息
npm list -g
// 查看某个模块的安装信息
npm list express
// 创建模块
npm init # 生成 package.json 文件
npm adduser # 在 npm 资源库中注册用户(使用邮箱注册)
Username: mcmohd
Password:
Email: (this IS public) mcmohd@gmail.com
npm publish // 发布自己的模块到npm
// 运行
npm run **
npm 版本号
使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。
语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。
如果只是修复bug,需要更新Z位。 如果是新增了功能,但是向下兼容,需要更新Y位。 如果有大变动,向下不兼容,需要更新X位。
~ version会匹配最近的小版本依赖包,即控制最后一位版本号(修订版本号)(最后一位版本号会更新到最新),比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
^version会匹配最新的大版本依赖包,控制的是中间位版本号(小版本号),即小版本号和修订版本号会更新到最新版本,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
*version表示安装最新版本的依赖包。
version版本号前没有任何符号,表示必须匹配指定版本,不会自动升级。
npm 使用文档 www.npmjs.cn/getting-sta…
(二)npx
npx 是什么
npm 从5.2版开始,增加了 npx 命令。 Node 自带 npm 模块,所以可以直接使用 npx 命令。万一不能用,就要手动安装一下
$ npm install -g npx
npx 作用和用法
1、调用项目安装的模块 如果要调用项目内部安装的模块,比如mocha。一般来说只能在项目脚本和package.json的scripts字段里面。或者在命令行里
# 项目的根目录下执行
$ node-modules/.bin/mocha --version
以上都比较麻烦,npx就是要解决这个问题,调用起来更方便如下
npx mocha --version
原理是npx在运行的时候会到node_modules/.bin路径和环境变量$PATH里面,查询命令是否存在,存在即使用,不存在就不使用
2、避免全局安装模块 除了调用项目内部模块,npx 还能避免全局安装的模块。比如,create-react-app这个模块是全局安装,npx 可以运行它,而且不进行全局安装。 npx 将create-react-app下载到一个临时目录,使用以后再删除。所以,以后再次执行上面的命令,会重新下载create-react-app。
# 下载并安装
npx create-react-app my-react-app
cd my-react-app
npm start
# 本地没有安装http-server模块,下面的命令会自动下载该模块,在当前目录启动一个 Web 服务
npx http-server
# 执行 Gist 代码
$ npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
# 执行仓库代码
$ npx github:piuccio/cowsay hello
(三)、yarn
yarn 是什么
快速、可靠、安全的依赖管理工具 可替代npm包管理工具
速度超快:Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。
超级安全: 在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
超级可靠: 使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。
yarn的安装与使用
安装
npm install -g yarn
或
brew install yarn (macos)
安装.msi 应用程序(windows)等
使用
初始化一个新项目
yarn init
添加依赖包
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
将依赖项添加到不同依项类别中
分别添加到 devDependencies、peerDependencies 和 optionalDependencies 类别中:
yarn add [package] --dev
yarn add [package] --peer
yarn add [package] --optional
升级依赖包
yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
移除依赖包
yarn remove [package]
安装项目的全部依赖
yarn
或者
yarn install
www.jianshu.com/p/254794d5e… www.ruanyifeng.com/blog/2019/0…