修改日期 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
更高效。