[web前端] yarn和npm命令使用
原文地址: https://blog.csdn.net/mjzhang1993/article/details/70092902/
最初接触 yarn 还是在 0.17.10 版本,由于各种各样的原因,使用时没 npm 顺手, 目前 yarn 的版本已经升级为 1.7.0 各种之前遇到的问题不复存在,安装、下载速度都比 npm 要快很多,这里对之前记录做一下修改。
版本说明 (当前文档使用版本)
yarn : v0.17.10
yarn: v1.3.2 (修改日期 2017.12.26)
node: v8.9.0
npm: v5.6.0
安装
macOS 通过 homebrew 安装
brew install yarnWindows 下载安装 下载地址
查看版本
yarn --version
1. 开始一个新工程
yarn init 与 npm init 一样通过交互式会话创建一个 package.json
yarn init # yarn
npm init # npm # 跳过会话,直接通过默认值生成 package.json
yarn init --yes # 简写 -y
npm init -y
2. 添加一个依赖
通过 yarn add 添加依赖会更新 package.json 以及 yarn.lock 文件
yarn add <packageName> 依赖会记录在 package.json 的 dependencies 下
yarn add webpack@2.3.3 # yarn --save 是 yarn 默认的,默认记录在 package.json 中
npm install webpack@2.3.3 --save # npm
yarn add <packageName> --dev依赖会记录在package.json的devDependencies下
yarn add webpack --dev # yarn 简写 -D
npm install webpack --save-dev # npm
yarn global add <packageName>全局安装依赖
yarn global add webpack # yarn
npm install webpack -g # npm
3. 更新一个依赖
yarn upgrade 用于更新包到基于规范范围的最新版本
yarn upgrade # 升级所有依赖项,不记录在 package.json 中
npm update # npm 可以通过 ‘--save|--save-dev’ 指定升级哪类依赖 yarn upgrade webpack # 升级指定包
npm update webpack --save-dev # npm yarn upgrade --latest # 忽略版本规则,升级到最新版本,并且更新 package.json
4. 移除一个依赖
yarn remove <packageName>
yarn remove webpack # yarn
npm uninstall webpack --save # npm 可以指定 --save | --save-dev
5. 安装 package.json 中的所有文件
yarn 或者 yarn install
yarn install # 或者 yarn 在 node_modules 目录安装 package.json 中列出的所有依赖
npm install # npm # yarn install 安装时,如果 node_modules 中有相应的包则不会重新下载 --force 可以强制重新下载安装
yarn install --force # 强制下载安装
npm install --force # npm
6. 运行脚本
yarn run 用来执行在 package.json 中 scripts 属性下定义的脚本
// package.json
{
"scripts": {
"dev": "node app.js",
"start": "node app.js"
}
}
yarn run dev # yarn 执行 dev 对应的脚本 node app.js
npm run # npm yarn start # yarn
npm start # npm
与 npm 一样 可以有 yarn start 和 yarn test 两个简写的运行脚本方式
7. 显示某个包信息
yarn info <packageName> 可以用来查看某个模块的最新版本信息
yarn info webpack # yarn
npm info webpack # npm yarn info webpack --json # 输出 json 格式
npm info webpack --json # npm yarn info webpack readme # 输出 README 部分
npm info webpack readme
8. 列出项目的所有依赖
yarn list
yarn list # 列出当前项目的依赖
npm list # npm yarn list --depth=0 # 限制依赖的深度
sudo yarn global list # 列出全局安装的模块
9. 管理 yarn 配置文件
yarn config
yarn config set key value # 设置
npm config set key value yarn config get key # 读取值
npm config get key yarn config delete key # 删除
npm config delete key yarn config list # 显示当前配置
npm config list yarn config set registry https://registry.npm.taobao.org # 设置淘宝镜像
npm config set registry https://registry.npm.taobao.org # npm
10. 缓存
yarn cache
sudo yarn cache list # 列出已缓存的每个包
sudo yarn cache dir # 返回 全局缓存位置
sudo yarn cache clean # 清除缓存
11. 问题
1. 安装 package.json 中文件的问题
正常安装 sudo yarn add react@15.4.2 package.json 中 出现
"dependencies": {
"react": "15.4.2"
}
通过终端查看安装版本 yarn list
├─ react@15.4.2
│ ├─ fbjs@^0.8.4
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0
是正确的版本,但是,如果在 package.json 中加上如下依赖,然后通过 sudo yarn install 安装
"dependencies": {
"react": "15.4.2",
"react-dom": "^15.4.2",
"jquery": "^3.0.0"
}
通过终端查看安装版本 yarn list
├─ react-dom@15.5.3
│ ├─ fbjs@^0.8.9
│ ├─ loose-envify@^1.1.0
│ ├─ object-assign@^4.1.0
│ └─ prop-types@~15.5.0
├─ react@15.4.2
│ ├─ fbjs@^0.8.4
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0
├─ jquery@3.2.1
react 还是之前的版本,但是 新安装的 react-dom 和 jquery 都变成了 最新版本
再试试将版本号的写法变一下 去掉 ^
"dependencies": {
"react": "15.4.2",
"react-dom": "15.4.2",
"jquery": "3.0.0"
}
通过 sudo yarn install 安装 查看安装版本 yarn list
├─ react-dom@15.4.2
│ ├─ fbjs@^0.8.1
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0
├─ react@15.4.2
│ ├─ fbjs@^0.8.4
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0
├─ jquery@3.0.0
安装的是正确的版本了
说明
1: "react-dom": "^15.4.2"这种写法,加了^,是一般是通过npm install --save安装插件生成版本号的默认格式,表示安装15.x.x的最新版本,安装时不改变大版本号
2: "react-dom": "15.4.2"这种写法,只有版本号,是 yarn add安装后生成版本号的默认格式,表示必须安装同一个版本号
3: 版本号控制,有一个规范,就是语义化版本号控制,规定了版本号格式为:主版本号.次版本号.修订号;
- 主版本号:当你做了不兼容的 API 修改
- 次版本号:当你做了向下兼容的功能性新增
- 修订号:当你做了向下兼容的问题修正
一般来讲 只要主版本号正确,就可以兼容,但是像 最新版的 react@15.5.3 ,出现了React.createClass与React.PropTypes弃用的警告,控制台一片红,因为引用了第三方组件库,最后选择暂不升级react,类似的情况,个人感觉 yarn 默认的版本号写法(只安装特定版本的文件),更符合需求,npm 的话,很可能导致两个拥有同样package.json 的应用,安装了不同版本的包,进而导致一些BUG
2. 在 yarn 或者 npm 中设置默认版本规则
npm set save-exact true 全局设置 package.json 只记录确切版本号 node: 1.1.1,
npm config set save-prefix '~' 设置安装新模块时,package.json 记录版本号的方式 ~ \ ^ 等
sudo yarn config set save-prefix '~' 通过 yarn 设置,要有 sudo 权限
注意: 通过以上设置可以更改package.json 中记录的版本号默认方式,但是 yarn 的设置是带有 sudo 权限的,通过 sudo add <packageName> 的模块才会按照设置的方式更新版本号
12. 总结
就像官网上说的,yarn 的安装速度快,能并行化操作以最大化资源利用率;安全,Yarn会在每个安装包被执行前校验其完整性。正式版的 yarn 比较与 npm 更高效
[web前端] yarn和npm命令使用的更多相关文章
- Yarn 和 Npm 命令行切换 摘录
原文作者: @Gant Laborde原文地址: https://shift.infinite.red/np...中文翻译: @文蔺译文地址:http://www.wemlion.com/2016/n ...
- web前端常用的linux命令(在git命令行使用)
cd (文件目录): 回到上一层目录 cd .. 回到根目录 cd / mkdir(新建文件夹) 下面的命令在当前目录新建了文件夹css html js 3个文件夹 mkdir css html js ...
- yarn和npm命令对比
- [yarn]yarn和npm的对比
一.简介 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服 ...
- yarn和npm
Yarn和npm命令对比 npm install === yarn npm install taco --save === yarn add taco npm uninstall taco --sav ...
- 创建 Web 前端开发环境(node和npm以及git)
Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础. 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Grunt. ...
- 创建 Web 前端开发环境(node和npm)
Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础. 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Grunt. ...
- VS2015前端工具:NPM和Web Essentials
VS2015前端工具:NPM和Web Essentials 1.写作背景 想在5月份前换个工作环境了,“检讨”一下自己混饭的技术水平和处世的人脉关系,觉得很不给力!为人方面,人各有志也就不纠结了,但本 ...
- 解决Homestead yarn , npm run dev, 命令报错问题!
解决Homestead yarn , npm run dev, 命令报错问题! 2018年06月01日 11:50:51 偶尔发发颠 阅读数:1654 版权声明:本文为博主原创,未经博主同意,不 ...
随机推荐
- Android Menu用法全面讲解
说明:本文只介绍Android3.0及以上的Menu知识点. 菜单的分类 菜单是Android应用中非常重要且常见的组成部分,主要可以分为三类:选项菜单.上下文菜单/上下文操作模式以及弹出菜单.它们的 ...
- Android开发之深入理解Android Studio构建文件build.gradle配置
摘要: 每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1.applica ...
- web前端开发分享-css,js提高篇
一. css基础知识掌握之后(个人的标准是:弄清块元素与内联元素的区别,弄清float的应用场景,弄清position[pə'zɪʃən] 下五个属性static['stætɪk],relative[ ...
- java 扫描输入
到目前为止,从文件或标准输入读取数据还是一件相当痛苦第事情,一般第解决之道就是读入一行文本,对其进行分词,然后使用Integer Double 等类第各种解析方法来解析数据: //: strings/ ...
- php中常用的正则表达式函数
php中常用的正则表达式函数 * preg_match() * preg_match_all() * preg_replace() * preg_filter() * preg_grep() * pr ...
- hdu3183 rmq求区间最值的下标
两个月前做的题,以后可以看看,是rmq关于求区间最值的下标 /* hdu3183 终点 给一个整数,可以删除m位,留下的数字形成一个新的整数 rmq 取n-m个数,使形成的数最小 */ #includ ...
- noip 2017 时间复杂度
自认为是少有的复杂的代码 这题思想很简单,就是大模拟 对于for循环,一行读入4个字符串,然后分类讨论: ①:如果是一个正常的O(n),那么累计n的指数加1 ②:如果是一个常数级别的,那么继续循环,但 ...
- pytest十三:配置文件 pytest.ini
pytest 配置文件可以改变 pytest 的运行方式,它是一个固定的文件 pytest.ini 文件,读取配置信息,按指定的方式去运行. ini 配置文件pytest 里面有些文件是非 test ...
- python 全栈开发,Day92(编程式的导航,vue页面布局,marked包的使用)
昨日内容回顾 1. 组件间的传值 1. bus --> 空Vue对象 通过向bus对象抛出自定义事件的方式在组件间传递信息 2. 注意事项: 1. bus.$on()应该在组件mounted(挂 ...
- 遍历DOM树
遍历DOM在jQuery中是非常重要的技术. 遍历DOM之前,需要对DOM有清晰的认识,了解文档节点.元素节点.属性节点.文本节点等相关概念.不清楚可以温习下<JavaScript教程.DOM树 ...