修改日期 2017.12.26html
最初接触
yarn
仍是在0.17.10
版本,因为各类各样的缘由,使用时没 npm 顺手, 目前yarn
的版本已经升级为1.3.2
各类以前遇到的问题不复存在,安装、下载速度都比 npm 要快不少,这里对以前记录作一下修改。node更多详细内容查看中文官方文档
npm 经常使用命令python
macOS 经过 homebrew 安装
brew install yarn
reactWindows 下载安装 下载地址jquery
查看版本
yarn --version
webpack
yarn init
与npm init
同样经过交互式会话建立一个package.json
web
yarn init # yarn npm init # npm # 跳过会话,直接经过默认值生成 package.json yarn init --yes # 简写 -y npm init -y
经过
yarn add
添加依赖会更新package.json
以及yarn.lock
文件npm
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
yarn upgrade
用于更新包到基于规范范围的最新版本json
yarn upgrade # 升级全部依赖项,不记录在 package.json 中 npm update # npm 能够经过 ‘--save|--save-dev’ 指定升级哪类依赖 yarn upgrade webpack # 升级指定包 npm update webpack --save-dev # npm yarn upgrade --latest # 忽略版本规则,升级到最新版本,而且更新 package.json
yarn remove <packageName>
windows
yarn remove webpack # yarn npm uninstall webpack --save # npm 能够指定 --save | --save-dev
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
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
两个简写的运行脚本方式
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
yarn list
yarn list # 列出当前项目的依赖 npm list # npm yarn list --depth=0 # 限制依赖的深度 sudo yarn global list # 列出全局安装的模块
yarn coinfig
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
yarn cache
sudo yarn cache list # 列出已缓存的每一个包 sudo yarn cache dir # 返回 全局缓存位置 sudo yarn cache clean # 清除缓存
yarn run
等运行脚本时,会报错更新版本后,这个问题不会再出现
yarn run run
yarn run v0.17.10 $ webpack-dev-server --progress --colors --config webpack.dev.config.js fs.js:640 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: EACCES: permission denied, open '/Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/node_modules/arr-flatten/index.js'
大概意思是没有权限,而后加上
sudo
又试了一下
sudo yarn run run
yarn run v0.17.10 $ webpack-dev-server --progress --colors --config webpack.dev.config.js 10% building modules 2/2 modules 0 active Project is running at http://10.15.32.78:8087/ webpack output is served from /Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/dev Content not from webpack is served from /Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/dev 404s will fallback to /index.html Hash: d374085597660a7a1085 Version: webpack 2.3.3 Time: 5083ms Asset Size Chunks Chunk Names js/vendor.js 1.31 MB 0 [emitted] [big] vendor js/bundle.js 44.5 kB 1 [emitted] app chunk-manifest.json 43 bytes [emitted] js/manifest.js 5.88 kB 2 [emitted] manifest js/vendor.js.map 1.56 MB 0 [emitted] vendor js/bundle.js.map 43.3 kB 1 [emitted] app js/manifest.js.map 5.9 kB 2 [emitted] manifest index.html 1.28 kB [emitted] Child html-webpack-plugin for "index.html": Asset Size Chunks Chunk Names index.html 545 kB 0 webpack: Compiled successfully.
看了别人的博客,貌似没有这个问题啊,并且设置的 webpack devServer.open = true, 能够打开浏览器,可是不会跳转到设定好的页面(用 npm 时 没有这个问题)
正常安装
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
安装的是正确的版本了
"react-dom": "^15.4.2"
这种写法,加了^
,是通常是经过npm install --save
安装插件生成版本号的默认格式,表示安装15.x.x的最新版本,安装时不改变大版本号
"react-dom": "15.4.2"
这种写法,只有版本号,是yarn add
安转后生成版本号的默认格式,表示必须安装同一个版本号版本号控制,有一个规范,就是语义化版本号控制,规定了版本号格式为:主版本号.次版本号.修订号;
通常来说 只要主版本号正确,就能够兼容,可是像 最新版的 react@15.5.3 ,出现了React.createClass与React.PropTypes弃用的警告,控制台一片红,由于引用了第三方组件库,最后选择暂不升级react,相似的状况,我的感受 yarn 默认的版本号写法(只安装特定版本的文件),更符合需求,npm 的话,极可能致使两个拥有一样package.json 的应用,安装了不一样版本的包,进而致使一些BUG
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>
的模块才会按照设置的方式更新版本号
就像官网上说的,
yarn
的安装速度快,能并行化操做以最大化资源利用率;安全,Yarn会在每一个安装包被执行前校验其完整性。正式版的yarn
比较与npm
更高效。