yarn v1.0.0
で追加された機能
何ができるか
dependency graphの完全なコントロールが可能になる
- package.jsonとyarnだけでコントールする
- 自分が使ってるnpm pkgが依存してるpkg(dependencies of dependencies)のversionを指定してインストールできるようになる。
➜ material-ui git:(master) npm outdated
Package Current Wanted Latest Location
babel-eslint 7.2.3 7.2.3 8.0.1 material-ui-build
babel-loader 6.4.1 6.4.1 7.1.2 material-ui-build
chai 3.5.0 3.5.0 4.1.2 material-ui-build
coveralls 2.13.3 2.13.3 3.0.0 material-ui-build
cross-env 4.0.0 4.0.0 5.0.5 material-ui-build
enzyme 2.9.1 2.9.1 3.1.0 material-ui-build
eslint 3.19.0 3.19.0 4.8.0 material-ui-build
fs-extra 2.1.2 2.1.2 4.0.2 material-ui-build
istanbul 1.1.0-alpha.1 1.1.0-alpha.1 0.4.5 material-ui-build
jsdom 9.12.0 9.12.0 11.3.0 material-ui-build
mocha 3.5.3 3.5.3 4.0.1 material-ui-build
react 15.6.2 15.6.2 16.0.0 material-ui-build
react-dom 15.6.2 15.6.2 16.0.0 material-ui-build
react-test-renderer 15.6.2 15.6.2 16.0.0 material-ui-build
react-transition-group 1.2.1 1.2.1 2.2.1 material-ui-build
sinon 3.3.0 3.3.0 4.0.1 material-ui-build
webpack 1.15.0 1.15.0 3.6.0 material-ui-build
-
material-ui
が依存するreact-transition-group
では1.2.1
が指定されてるが、最新版の2.2.1
がインストールされるように変更できる -
yarn.lock
も更新される
使い方
"resolutions": {
"material-ui/react-transition-group": "2.2.1"
}
-
package.json
にresolutions
フィールドを追加し、上書きしたい依存パッケージを指定する -
/
でネストの深さが表され、glob patternもちょっとだけサポートしてるsome-middle-ware/**/request
使いどころ
- 依存パッケージの依存パッケージ(、の依存パッケージ・・・・)が原因でエラーを吐くようになったが、すでにそのモジュールではパッチがリリースされてる場合
- react-nativeで
metro-bundler
のversionを変える - UIライブラリが依存してるmoment.jsのversionを変えたいとき
- react-nativeで
スコープ外のこと
- いわゆるleftpad問題
- dependencies treeのどっか深いとこにあるモジュールが、npm registoryからunpublishされてしまってるケース
- こっちは別ソリューション必要
- expo.ioがやってるようなscoped packageにコピーをホストしてunpublished対策するとか
@expo/vector-icons
そのうちしらべる
代替ソリューション