_feature_ããªã¯ãšã¹ãããŸããããããšã_bug_ãå ±åããŸããïŒ
ç¹åŸŽ
çŸåšã®åäœã¯äœã§ããïŒ
該åœãªã
æåŸ
ãããåäœã¯äœã§ããïŒ
CLIã³ãã³ããæäŸããŸãyarn install --peer
ãã¢äŸåé¢ä¿ãã§æå®ãããã€ã³ã¹ããŒã«ãããŸãpackage.json
ã ããããã°ãéçº/ãã¹ãã§react / ng2 / gruntãªã©ã®ãã¢ã䜿çšã§ããŸãã
@ jpollard-csããã±ãŒãžããã¢äŸåé¢ä¿ãšããŠè¿œå ããããšã«ã€ããŠèšåããŠããã®ã§ã¯ãªããçŸåšãã¢äŸåé¢ä¿ãšããŠãªã¹ããããŠãããã¹ãŠã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããæ段ãããããšã«ã€ããŠèšåããŠããŸãã
ããã§ãªããã°ããã©ã°ã€ã³ãéçºããå®è¡å¯èœãªæ段ã¯ãããŸããã
npm install
package.jsonã®äŸåé¢ä¿ã»ã¯ã·ã§ã³ã§å®£èšãããŠãããã¹ãŠã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã
yarn add --peer
ããã«ãããpackage.jsonpeerDependenciesã»ã¯ã·ã§ã³ã§å®£èšããããã¹ãŠã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããããšæåŸ
ããŠããŸããã
宣èšãããããã±ãŒãžãpeerDependenciesã«ã€ã³ã¹ããŒã«ããæ¹æ³ã¯ãããŸããïŒ
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ãReactNativeã¢ãžã¥ãŒã«ã®éçº/ãã¹ãã§ãã
ããã圌ããã¯ããŒãºããNPMã®åé¡ã§ãïŒ https ïŒ
ã©ãããNPMéçºè ã«ãšã£ãŠéèŠã§ã¯ãããŸããã
+1ããã¯å³æžé€šã®äœè ã«ãšã£ãŠéèŠã§ã
ç§ã¯ãã§ã«NPMã®åé¡ã«ã€ããŠãããæžããŠããŸãããYarnã®äººã ã®ããã«ïŒ
ããã±ãŒãžã®ãã¢äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããCLIããã°ã©ã ãäœæããŸããã
# If you're using npm
npm install -g install-peerdeps
# If you're using yarn
yarn global add install-peerdeps
cd my-project-directory
install-peerdeps <package>[@<version>]
# for example
install-peerdeps @angular/core
# will install all of angular's peerdeps
åé¡ãããå Žåã¯ãã¬ãã§åé¡ãéããŠãã ããã
@nathanhleung ããã®ããã±ãŒãžã¯ãã¹ãŠã®äŸåé¢ä¿ãã¢äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŠããããã«èŠããŸãã ããã¯ããã®ãã±ããã®å 容ã§ã¯ãããŸããã ããã¯ãç¬èªã®ããã±ãŒãžã®ãã¢äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ã«é¢ãããã®ã§ãã
ãããè¡ãããã®ããã±ãŒãžã§ä¿®æ£ããŸããhttps://www.npmjs.com/package/@team-griffin/install-self-peers
@nathanhleungããªãã¯ããã¯ããŸãã
ããŒã...éçº/ãã¹ãã®ããã«äŸåé¢ä¿ãå¿
èŠãªå ŽåãããããdevDependencies
äžã«çœ®ãã¹ãã§ã¯ãããŸãããïŒ ç匟ãªã©ãèœãšãããšããªã...
@nikolakanackiã©ãããæ¥ãã®ããå®å šã«éçºäŸåé¢ä¿ã匷å¶çã«ã€ã³ã¹ããŒã«ãããŠã¯ãªããªãããããã¢äŸåé¢ä¿ãš
@nikolakanackiãŠãŒã¶ãŒãã€ã³ã¹ããŒã«ããå¥ã®ããã±ãŒãžã«äŸåããããã±ãŒãžã
ããã±ãŒãžã¯ãæ§æã§æ§æãããŠããªãESLintã§äœ¿çšå¯èœãªã«ãŒã«ãæ€çŽ¢ããŸãã
ãŠãŒã¶ãŒã«ãšã£ãŠæå³ã®ãããã®ã«ããããã«ã¯ãã€ã³ã¹ããŒã«ãããŠããESLintããã±ãŒãžã確èªããå¿
èŠããããããã±ãŒãžã«ä»å±ããŠããç¹å®ã®ããŒãžã§ã³ïŒãŸãã¯latest
ïŒã§ã¯ãããŸããã
ã€ãŸããããã¯peer
äŸåé¢ä¿ã§ãã
ãããžã§ã¯ãã«è²¢ç®ãããå Žåã¯ãESLintãnode_modulesã«ã€ã³ã¹ããŒã«ããŠãESLintãã€ã³ã¹ããŒã«ãããããŒãããžã§ã¯ãã§npm-linkãå®è¡ããã«ãã³ãŒãããã¹ãã§ããããã«ããŸãã
ãŠãŒã¶ãŒãyarn
ãšãã·ã¹ãã ã¯ãã¢depsãã€ã³ã¹ããŒã«ããŠãããããæ¬ èœããŠããããšãèŠåããã¹ãã§ã¯ãããŸããïŒããã¯æ©èœããŸãïŒã
ã ãã...ãŸã ã€ã³ã¹ããŒã«ãããŠããªãå Žåã«yarnããã¢ããããã€ã³ã¹ããŒã«ããããã«ãããã©ã°ã¯èŠªåã«ãã®åé¡ã解決ããã§ãããã
yarn add <package> --peer
ã¯ãããnode_modulesã«ã€ã³ã¹ããŒã«ããpackage.jsonã«è¿œå ããŸãyarn add <other_package>
ã¯ãã€ã³ã¹ããŒã«ãããŠããããã±ãŒãžãnode_modulesããåé€ããŸãç§ã¯çŸåš@nikolakanackiã¢ãã«ãæ©èœããŠããããã§ãã ç§ã¯ãããæ··ä¹±ããå¯èœæ§ãããããšã«åæãã yarn install --peer
dependencies
ã devDependencies
ãããã³peerDependencies
ãã€ã³ã¹ããŒã«ããããã«yarn install --peer
ã奜ãããããã¯ç§ã«ãšã£ãŠåãããã«æ©èœããã
ç§ã¯ãã®æš©å©@kyleholzinger / @gaastonsrãåŸãŠããå Žåã¯ãã€ã³ã¹ããŒã«ããŠèŠãŠããªãpeerDependencies
éçºã¢ãŒãã§ïŒ cd
-edã¬ã/ããã±ãŒãžã«ããpeerDependencies
ãæ°ããã¯ããŒã³ããããã®ãã¢éšéã§éçºããå¿
èŠããããŸãïŒãããã¢éšéãæã€ããã±ãŒãžãã€ã³ã¹ããŒã«ããããããããã¿ãŒã²ãããããžã§ã¯ãã«è¿œå ããŸããïŒ
æ確ã«ããããã«ïŒäŸåé¢ä¿ãšããŠeslint
ãå¿
èŠã§ãããšæå¥ãèšãeslint-find-rules
ãã€ã³ã¹ããŒã«ããïŒããã¯eslint-find-rules
peerDependency
ã§ãïŒã®ã§ãä»åºŠã¯ç°¡åãªæ¹æ³ãå¿
èŠã§ãããªããåãçµãã§ããpeer
ïŒ eslint-find-rules
äŸåããçŸåšã®ãããžã§ã¯ãïŒã«ãããã®äŸåé¢ä¿ãè¿œå ããã®ã§ããïŒ ãçŸåšã®äŸåé¢ä¿ã«å¿
èŠãªãæãäžèŽãããã¢ã®äŸåé¢ä¿ã解決ããŠæ°ããäŸåé¢ä¿ãšããŠè¿œå ïŒ package.json
ãšyarn.lock
ïŒãã®ãããªãã®ã§ããïŒ
ãããããªãã®ãã€ã³ãã§ãããªãã°ãããã¯éåžžã«åœ¹ã«ç«ã€ãããããŸãããç§ã¯ããªããéçºãããšãã«ããããèªåã€ã³ã¹ããŒã«ããããšãåç §ããŠãããšæããŸããã
ãã®æ©èœã¯ãçŽç²ãªå©äŸ¿æ§ãããå€ãã®ç®çã§å°å ¥ã§ããŸããããšãã°ãè€æ°ã®äŸåé¢ä¿ããã¢ã¿ãŒã²ããã®åãããã±ãŒãžã«äŸåããŠããå¯èœæ§ããããŸãããç°ãªãããŒãžã§ã³ãå¿ èŠã§ãããã®æ©èœã¯ãåäžã®ãã¹ãã«è§£æ±ºããããšããããšã§ããã®æ©èœãæ倧éã«æŽ»çšã§ããŸãã -äžèŽããã¿ãŒã²ããïŒå¯èœãªå ŽåïŒã
ééããªãèããã¹ãããšã
ãããããªãã®ãã€ã³ãã§ãããªãã°ãããã¯éåžžã«åœ¹ã«ç«ã€ãããããŸãããç§ã¯ããªããéçºãããšãã«ããããèªåã€ã³ã¹ããŒã«ããããšãåç §ããŠãããšæããŸããã
ãããç§ãæ¢ããŠãããã®ã§ãã ããã±ãŒãžãéçºããŠãããšãã«peerDependenciesãã€ã³ã¹ããŒã«ããŸãã
ããããŸãã«@nikolakanackiïŒ ä»²éã®éšçœ²ã®ç®¡çãæäŒã絶奜ã®æ©äŒããããšæããŠããŸãã
@gaastonsrã¯ãããdevDependencies
ã«è¿œå ããå¿
èŠããããŸã-ããã¯ãããšåããããç°¡åã§ãã ãã以å€ã®å Žåãããã±ãŒãžã¯éçºã®ããã«å£ããŠããŸãã ãããžã§ã¯ãã®ã¯ããŒã³ãäœæããŠyarn
ãå®è¡ãããšããã¹ãŠãã€ã³ã¹ããŒã«ããããã¹ããªã©ãå®è¡ã§ããããã«ãªããŸãã
次ã®ãããªå Žåã«ãäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããåã«å°ããå¿ èŠããã2ã€ã®åçŽã§ãŸã£ããé¢ä¿ã®ãªã質åïŒ
peerDependencies
å
¥ããŠãã ãããdependencies
ãªã¹ããããŠããŸããïŒãªã¹ããããã¹ãã§ã¯ãããŸããïŒïŒ devDependencies
å
¥ããŠãã ãããèšãæãããšãéçºäžã«ååšãããšäºæ³ãããéçºäžã®ããã±ãŒãžã®çŽæ¥ã®äŸåé¢ä¿ãšããŠãªã¹ããããŠããªããã¹ãŠã®ããã±ãŒãžã¯ã devDependencies
ååšããå¿
èŠããããŸãã éè€ã¯åé¡ã§ã¯ãããŸãã-ããã¥ã¡ã³ãã®ã©ãã«ãããããã®å Žåã«éè€ãèš±å¯/æšå¥šãããŠããªãããšã¯èšèŒãããŠããŸããã
@nikolakanackiããã±ãŒãžã®ãã©ã°ã€ã³ãäœæãããšãã¯ããŠãŒã¶ãŒãã€ã³ã¹ããŒã«ããããã±ãŒãžã®ããŒãžã§ã³ã«äŸåããå¿
èŠããããŸãã devDependency
ãšããŠè¿œå ãããšãå¿
ç¶çã«å¥ã®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ããã代ããã«äœ¿çšãããŸãããŠãŒã¶ãŒã®ããŒãžã§ã³ã
äŸåé¢ä¿ã*
ãšããŠå®çŸ©ããªãéããYarnã¯äœããã®åœ¢ã§æ±ºå®è«çã§ããããŠãŒã¶ãŒãã€ã³ã¹ããŒã«ããããã±ãŒãžãåªå
ããå¿
èŠããããŸãã
çŸåšã¯ããã§ã¯ãããŸããïŒ
@alexilyaev @nikolakanackiã¯ãpeerDependencyãšdevDependencyã®äž¡æ¹ãšããŠã€ã³ã¹ããŒã«ããããšãæå³ãããšæããŸãã
ããã«ã¯ãäž¡æ¹ã®åæãç¶æããå¿ èŠããããšããåé¡ããããŸãã ç§ã«ãšã£ãŠã¯ä»ã®ãšããããŸããããŸãããçæ³çã§ã¯ãªããšæããŸãã
@alexilyaev peerDependency
ã宣èšãããšããã®ããŒãžã§ã³ã宣èšããŸãã ã¿ãŒã²ãããããžã§ã¯ãã«ãå®çŸ©ããããŒãžã§ã³ãæºãããã¢äŸåé¢ä¿ã®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããŠããªãéãã yarn
/ npm
ã¯ãšã©ãŒãå ±åããŸãïŒãã¢äŸåé¢ä¿ããªãããªã©ïŒã
ãã以å€ã®devDependency
ã¯ãããšã¯äœã®é¢ä¿ããããŸãããããã¯ãœãŒã¹ããã±ãŒãžå
ã§yarn
ãŸãã¯npm install
å®è¡ãããšãã«ã€ã³ã¹ããŒã«ããããã®ã§ãïŒãã¢ã®äŸåé¢ä¿ã宣èšãããã®ãäŸãã°ïŒãã©ã°ã€ã³ïŒãããã³ããã±ãŒãžããµãŒãããŒãã£ã®ããã±ãŒãž/ãããžã§ã¯ãïŒãã¢ïŒã«ãã£ãŠäœ¿çšãããŠããå Žåã§ãåç
§ãããŸããã
éèŠãªã®ã¯ããããã©ã®ããã«é¢é£ããŠãããããããªããšããããšã§ãã
ããããåæãããããšã®èŠçãèŠãããšãã§ããŸããããããã€ã³ã¹ããŒã«åŸã®ã¹ããããšããŠãã§ãã¯ããbash
/ javascript
/ <whatever>
ã¹ã¯ãªãããç°¡åã«æžãããšãã§ããŸãã package.json
ã
ç§ãèšãããã®ã¯ã devDependencies
ææ
ãå£ããŠã¯ãããªããšããããšã§ããããã«æªãããšã«ãã yarn
ãŸãã¯npm install
ããŠããå¿
ããããã¹ãŠãã€ã³ã¹ããŒã«ãããããã§ã¯ãããŸããããã®ããã±ãŒãžã®å¿
èŠãªäŸåé¢ä¿ãã®æŠå¿µã
äžæ¹ã yarn
ã¯ãããã«é¢ããŠããã«å³æ Œãªããªã·ãŒãå°å
¥ããŸãããããã«ããã dependencies
ãŸãã¯devDependencies
ãšããŠå®çŸ©ãããŠããªãããã±ãŒãžãã¯ãªã¢ããããããå®è¡ãããŸãããåŸã§åé¡ã«ã
@nikolakanackiãã©ã°ã€ã³ã^7.0.0
ãåãå
¥ããææ°ã®ãã¢ã7.9.0
ã§ããŠãŒã¶ãŒãpackage.json
7.4.0
å®çŸ©ãããŠãããšããŸãã
devDependencies
ã«ã^7.0.0
ãããå ŽåãYarnã¯7.9.0
ãš7.4.0
äž¡æ¹ãïŒãŠãŒã¶ãŒçšã«ïŒã€ã³ã¹ããŒã«ããŸãããïŒ
ãããããªããç§ã®ãã©ã°ã€ã³ã¯7.4.0
代ããã«ã€ã³ã¹ããŒã«ããã7.9.0
誀ã£ãŠäœ¿çšãããããããŸããã
@alexilyaevããã±ãŒãžã¯ãä»ã®å Žåãšåæ§ã«ããã®ãã¢éšéã®ããã±ãŒãžã§å®çŸ©ãããŠãã
ãã£ãšå ·äœçã«èšãããã®ã§ãããããªããæ瀺ããäºäŸãããããããŸãããæ確ã«ããŠããã ããŸãããã
ã peerDependency
éäºææ§ãããããã©ã°ã€ã³ã¯^7.0.0
ãæ³å®ããããŒãžã§ã³7.4.0
ãããããšãèŠåããŸãããæŽæ°ïŒ ^7.0.0
ã¯7.4.0
æºãããŸã
Yarnã¯7.9.0ãš7.4.0ã®äž¡æ¹ãïŒãŠãŒã¶ãŒåãã«ïŒã€ã³ã¹ããŒã«ããŸãããïŒ
Yarnã¯peerDependencies
ãã€ã³ã¹ããŒã«ããããã©ã°ã€ã³ã®devDependencies
ãã€ã³ã¹ããŒã«ããã dependencies
äŸåé¢ä¿ã ããã€ã³ã¹ããŒã«ããŸãã
@gaastonsr ^7.0.0
ã7.4.0
ã«ãã£ãŠæºããããããšãé€ããŠãããªãã¯çµ¶å¯Ÿã«æ£ããã§ãã
ããã±ãŒãžãã¡ã€ã³ããã±ãŒãžã§ãªãå Žåããã¢ã®äŸåé¢ä¿ã¯ããã©ã«ãã§ã€ã³ã¹ããŒã«ãããŸãããéçºã®äŸåé¢ä¿ã¯ã€ã³ã¹ããŒã«ãããŸããã ããšã³ããŠãŒã¶ãŒãã¯ããããžã§ã¯ãã®éåžžã®ãäŸåé¢ä¿ãã«ç¯å²ãšãšãã«è¿œå ããããšã«ãããæºããå¿ èŠã®ãããã¢ã®äŸåé¢ä¿ãå®çŸ©ããå¿ èŠããããŸãã ãã©ã°ã€ã³ã§å¿ èŠãªãsemverrangeããæºããããšãæºãããªãããšãããããŠãŒã¶ãŒã«ã¯åŸè ãéç¥ãããŸãã
npmã«ãã£ãŠèª¬æãããŠããSemverã®ç¯å²ïŒ https ïŒ//docs.npmjs.com/misc/semver
çãããå Žåã¯åžžã«ç¢ºèªããŠãã ããïŒ http ïŒ
@nikolakanackiãããã±ãŒãžã®peerdependenciesãç°¡åã«ã€ã³ã¹ããŒã«ã§ããã®ã¯çŽ æŽãããããšã§ãïŒ
@nikolakanackiããããŸãããå®éããšã³ããŠãŒã¶ãŒãããã±ãŒãžãã€ã³ã¹ããŒã«ããŠãã devDependencies
ã¯ã€ã³ã¹ããŒã«ãããªããããããã±ãŒãžã®äœæè
ã¯peerDependencies
ãdevDependencies
ã«ãè¿œå ããå¿
èŠããããŸãã
ãããã£ãŠãããã¯ããŒã«ã«éçºã®åé¡ã解決ããŸãã
ããããå€ãã®ãããžã§ã¯ãããã¢äŸåé¢ä¿ãéçºäŸåé¢ä¿ãšããŠè¿œå ããªãã£ãããã§ãã
ã§ããããç§ãã¡ã¯ãã®èšèãåºãå§ãããããžã§ã¯ããåå ãããã¹ãã ãšæããŸãã
ããã¯å¿
ç¶çã«ããªããããnpmã§æ©èœããYarnã§ã¯æ©èœããªãã®ãã«ã€ããŠã®é·ãè°è«ã«ã€ãªãããŸããçµæã«é¢ä¿ãªããæéããããããã¹ãŠã®ãããžã§ã¯ããå€æŽãè¡ããšã¯éããŸããã
ã ãã...å°ãªããšããã¢ã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããæ¹æ³ããµããŒãããããšãææ¡ããŠããã®ã§ãå°ãªããšãinstall-peerdeps
ã䜿çšããå¿
èŠ
ããã§å®éã®åé¡ã¯äœã§ããïŒ ããéšéã®ãªã¹ããã€ã³ã¹ããŒã«ããããšã¯ãå¥ã®éšéã®ãªã¹ããã€ã³ã¹ããŒã«ãããããè€éã«ãªããšã¯æãããŸããã ãã¢ã®äŸåé¢ä¿ã¯æ°å¹ŽåããååšããŠããŸãã ããã¯ã©ã®ããã«èª°ãæ°ã«ããŸããã§ãããïŒ
@nikolakanackiãœãªã¥ãŒã·ã§ã³ã¯å®å
šã«çã«ããªã£ãŠããŸãã ããã¯ãã©ã€ãã©ãªéçºã«äœ¿çšããŠãããã®ã§ãã åé¢ãã¹ãïŒå¿
èŠãªpeerDependencies
ãæäŸãããã¹ããããžã§ã¯ãã®å€éšïŒã®ããã«ã©ã€ãã©ãªã§devDependencies
é©åã«ã»ããã¢ããããå¿
èŠããããçµ±åãã¹ããšãã¹ãã確èªããããã«peerDependencies
ãå¿
èŠã§ããããžã§ã¯ããæ¶è²»ããã©ã€ãã©ãªã¯åãdependencies
ã䜿çšããŠããã peerDependencies
ãšdevDependencies
ãé©åã«äœ¿çšããŠããªãããããããžã§ã¯ãã¯åé·/éè€ããããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«ãªã
ããããåæãããããšã«ã¯å°ããªé çã®çš®ããããŸãã ãããã @ nikolakanackiãææããããã«ãããã¯post-install
ã¹ã¯ãªããã䜿çšããããšã§ç°¡åã«è»œæžã§ããŸãã
ã©ã®ãããªè§£æ±ºçã§ããïŒ
ç§ã¯ã³ã¡ã³ããååã«éãå®è¡ããŸããããç°¡åãªè§£æ±ºçã«æ°ã¥ããŸããã§ããïŒ
ãããã¬ãã«ã®ããã±ãŒãžã«å«ãŸããŠããå Žåã¯ãåžžã«peerDependenciesãéåžžã®äŸåé¢ä¿ãšããŠã€ã³ã¹ããŒã«ããŠãã ãã
éçº/ãã¹ãã±ãŒã¹ã«å®å šã«é©åããäŸåé¢ä¿ãšããŠããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«åœ±é¿ãäžããŸããã 糞.lockã®ããžãã¯ãšåæ§ã§ãã è¿œå ã®ãéçºãããã®ä»ã®ã¢ãŒãã¯å¿ èŠãããŸããã
å®éãpeerDependenciesã«é¢é£ããä»ã®ã€ãŒã³ã®ãã°ã®ããã«ãå Žåã«ãã£ãŠã¯æ£ç¢ºã«åäœããŠããããã«èŠããŸãã
éåžžã«åæããŸããããªããžããªã§ãyarninstallããå®è¡ãããšãdepsã«ãŸã ãªã¹ããããŠããªããã¢ã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãããŸãã ãã®ç¹ã§ãéçºè ã®äŸåé¢ä¿ãšã©ã®ããã«éãã®ãã¯ããããŸããããã®ã¢ãžã¥ãŒã«ã§éçºããŠããå Žåã¯ããããã®ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
åé¡ãäœã§ããããææ¡ããã解決çãããå Žåã¯ãããäœã§ããããæ確ã«ææ¡ã§ããªãããããããéããŸãã
説æãè¿œå ããããæ°ãããã°ãå ±åããŠãèªç±ã«åéããŠãã ããã
@BYKã¯ã55ã®èŠªæãç«ãŠã34ã®ã³ã¡ã³ããä»ããŠåé¡ã解決ããŠããããšãæ¬åœã«ç¢ºä¿¡ããŠããŸããïŒ
éåžžã«ç°¡åã ãšæããŸãã
ãŸãã¯ãå¥ã®èšãæ¹ããããšãçŸåšã®ããã±ãŒãžã«èšå®ãããŠããå ŽåãpeerDependenciesãéåžžã®äŸåé¢ä¿ãšããŠæ±ããŸãã
ãã®ã¹ã¬ããã§ããã«ææ¡ãããŠããããã«ããã¢ã®äŸåé¢ä¿ãéçºã®äŸåé¢ä¿ãšããŠãè¿œå ãããšãflow-typedãå£ããŸãïŒ //github.com/flowtype/flow-typed/issues/379
@andvgalç§ã¯åé¡ãæŽçããããšããŠããã ãã§ãæ°ãæåããã®ããã§ã®ãã¹ãŠã®è°è«ã¯å§åçã§èŠçŽããã®ãå°é£ã§ããã
éåžžã«ç°¡åã ãšæããŸãããããã¬ãã«ã®ããã±ãŒãžã«èšå®ãããšãã«ãpeerDependenciesãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ããã
ãŸãã¯ãå¥ã®èšãæ¹ããããšãçŸåšã®ããã±ãŒãžã«èšå®ãããŠããå ŽåãpeerDependenciesãéåžžã®äŸåé¢ä¿ãšããŠæ±ããŸãã
ããã¯çŽ æŽãããèŠçŽã§ããããããšãããããŸãã åé¡ãåéããŸããããã®ããã«ããå Žåã¯ãããã©ã«ãã§peerDependenciesãã€ã³ã¹ããŒã«ããããšã®åœ±é¿ã«ã€ããŠæ éã«æ€èšããå¿ èŠããããŸãã
ãŸãã¯ãå°ãªããšããpackage.jsonãã¡ã€ã«ã«è§Šããããšãªããã¢ã®äŸåé¢ä¿ãåå¥ã«ã€ã³ã¹ããŒã«ããæ¹æ³ãæäŸããŸãã addã䜿çšããŠãã¢äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãããšãJSONãã¡ã€ã«ã®ãšã³ããªãå€æŽãããŸãã semveråŒããyarnãããã©ã«ãã§æžã蟌ãæ¹æ³ãšã¯ç°ãªãæ¹æ³ã§èšå®ããå Žåãããã¯å€æŽãããŸãã
--peerã¹ã€ãããè¿œå ããŠã€ã³ã¹ããŒã«ãããšããã¢ã€ãã¢ã¯åé¡ãªããšæããŸããããããã®ã¢ãžã¥ãŒã«ã®ããã€ããé »ç¹ã«ãªã³ã¯ãããªã³ã¯ãšå®éã®éãè¡ã£ããæ¥ããããã®ã§ãå®éã«ã¯1ã€ãã€ã€ã³ã¹ããŒã«ã§ããããã«ããããšæããŸããã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããŸãã npmã䜿çšãããšã 'npmiãå®è¡ã§ããŸãã
@jimsugg ãç§ã¯yarn add <package...> -p
ã䜿çšããŠãpackage.jsonã«ãã§ã«ãªã¹ããããŠãããã¢ã®äŸåé¢ä¿ãæåã§ã€ã³ã¹ããŒã«ããŠããŸããããã¯ééããªãã¢ã³ããã¿ãŒã³ã§ãã ãã¢ã®äŸåé¢ä¿ã¯éçºç°å¢ã«èªåçã«ã€ã³ã¹ããŒã«ãããå¿
èŠãããããã§ãïŒå®éã«ãã¢ã®äŸåé¢ä¿ã§ããå Žåã¯ãå°ãªããšãããã±ãŒãžãå¿
èŠãšãããã¹ããå¿
èŠã§ãïŒã
ç§ã¯åããã®ãæ¢ããŠããŠããªã¹ããããŠãããã¹ãŠã®ãã¢éšéãã€ã³ã¹ããŒã«ããããã«ãã®Bashã¯ã³ã©ã€ããŒãæãã€ããŸããïŒjqãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãïŒïŒ yarn add $(jq -r '.peerDependencies|keys|join(" ")' package.json)
ã
ãããä»ã®èª°ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
@EdwardDrapkinãããããããšããäŒèª¬çãªã¢ã€ãã¢ïŒ ç§ã¯ãããæ¡åŒµãããããè¡ãããã«npmã¹ã¯ãªãããè¿œå ããããšã«ãªããŸããïŒ
"install:peers": "yarn add -P $(jq -r '.peerDependencies | to_entries | map(\"\\(.key)@\\(.value | tostring)\") | join(\" \")' package.json)",
peerDependencies
ã®ããŒãžã§ã³ä»æ§ãç¶æããã ãã§ã;ïŒ latest
ã¿ã°ã䜿çšããããªãå Žåã¯ãããã§åé¡ãçºçããŸããã next
ããã«å¥ã®ã¿ã°ã䜿çšããŸãã
@shousperã¯ã jq
äŸåé¢ä¿ããªãæ¹æ³ã§ãã
node -e "const peers = Object.entries(require('./package.json').peerDependencies || {}).map(d => d.join('@')).join(' '); if (peers.length) process.stdout.write('yarn add -P --no-lockfile ' + String(peers));" | sh
Foo
çŽæ¥äœæ¥ããŠãããšãã«ãããã±ãŒãžFoo
ãã¢äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããããªãã·ããªãªã¯ãããŸããïŒ æãã€ããªãã Foo
ã䜿çšããããã«Bar
ãå¿
èŠãªå Žåã Foo
ã§äœæ¥ãããšãã«å¿
èŠã«ãªããŸããããã¯ãã¢ã®äŸåé¢ä¿ã§ãããããéåžžã®äŸåé¢ä¿ã«ããããšã¯ã§ããŸããã ãã®å Žåãããã±ãŒãžãçŽæ¥æäœããå Žåã«ã®ã¿ã€ã³ã¹ããŒã«ããå¿
èŠããããŸããããã¯ãéçºè
ã®äŸåé¢ä¿ãè¡ãããšã§ãã
ãã®ãããyarnãpeerDependenciesãdevDependenciesãšåãããã«æ±ãã ãã§ãªããçŸåšè¡ã£ãŠããããšãã€ãŸãèŠåãçæããããšãçã«ããªã£ãŠãããšæããŸãã ç§ã¯éåžžããã¹ãŠã®ãã¢ã®äŸåé¢ä¿ãdevdependencyã«ããã ããªã®ã§ãéè€ãç¯çŽã§ããŸãã
ãããè¡ãããšãåé¡ã«ãªãçç±ã¯ãããŸããïŒ ããã¯ããããé倧ãªå€æŽã§ããããã2.0ãŸã§åŸ ããªããã°ãªããŸãããããã以å€ã¯åé¡ãªãããã§ãã
1ã€ã®åé¡ã¯ããã¢èŠä»¶ãããå ·äœçãªããŒãžã§ã³ãéçºçšã«ã€ã³ã¹ããŒã«ããå¿ èŠãããããšã§ãã ãã®å ŽåãdevDependenciesã«è€è£œããããšã§ãããŒã«ã«ã€ã³ã¹ããŒã«ã®ãã¢ããŒãžã§ã³ããªãŒããŒã©ã€ãã§ããã¯ãã§ãã äŸãã°
peerDepdencyïŒreact@^16.0.0
devDependencyïŒreact@~16.1.0
reactã®ããŒã«ã«ã€ã³ã¹ããŒã«ãã16.1.0ã«å¶éããŸããããã¢äŸåé¢ä¿ãšããŠä»»æã®v16ããŒãžã§ã³ãèš±å¯ããŸãã ãã®ãããªãã®ãã©ãã«å¿ èŠãã¯å®å šã«ã¯ããããŸããããç¡å¹ã§ã¯ãªãããã§ãã
@bdwainã«åæãéçºè
ã®äŸåé¢ä¿ã®éããæå³çã«ç解ããŠããŸãããå®éã«ã¯ãŸã£ããåãæ¹æ³ã§ã€ã³ã¹ããŒã«ãããŸãã ã¢ãžã¥ãŒã«ã®éçºäžã®å Žåã¯ãéçºè
ãšãã¢ã®äž¡æ¹ã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸããã¢ãžã¥ãŒã«ã䜿çšããŠããå Žåã¯ããªã¹ããããŠããå®éã®äŸåé¢ä¿ã®ã¿ãã€ã³ã¹ããŒã«ããŸãã ãã®å Žåã install
ã³ãã³ãã§éçºè
ãšãã¢ã®äŸåé¢ä¿ã®åäœãç°ãªããšããçç±ã¯ããŸããããŸããã
@bdwain @kyleholzinger peerDependencies
ã¯ãäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããå®éã®ã¢ã¯ã·ã§ã³ãæ瀺ããã®ã§ã¯ãªããäŸåé¢ä¿ã®å¿
èŠæ§ãéç¥ããããšãå³å¯ã«æå³ããŠãããããåæã
ããã«ãããã«ãŒã/ãããã¬ãã«ããã±ãŒãžã«ãååšããäžæçãªäŸåé¢ä¿ããŒãžã§ã³ã®åé¡ããµã€ã¬ã³ãã«ïŒãããŠèª€ã£ãŠïŒäœ¿çšãããªãããšãä¿èšŒãããŸãã äŸãšããŠbabel-core
ãèããŠã¿ãŸãããã
ããã§yarnã®ã³ã³ããã¹ãã§ãµããŒããäžè¶³ããŠããã®ã¯ãããã§èª¬æããããã«ããã¢ãšéçºéšéã®äž¡æ¹ãšããŠå®çŸ©ããæ©èœ
ãšã¯èšããã®ã®ããã¢éšéã®ããã©ã«ãã®ã€ã³ã¹ããŒã«ä»æ§ã«æºæ ããããè¯ãéçºãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«....å€åyarnã¯installã³ãã³ãã«--include-peers
ãªãã·ã§ã³ãå°å
¥ããå¯èœæ§ããããŸããïŒ
@hulkishç§ã¯ææ ã«åæããŸãããäœãããã¢ã®äŸåé¢ä¿ãšããŠå®£èšããããã
ç¹ã«yarnã§ã®äœ¿çšæ³ãæ£ããç解ããŠããå Žåããã¢ã®äŸåé¢ä¿ã®ãªã¹ãã¯åžžã«devã®äŸåé¢ä¿ã®ãµãã»ããã§ãã ãã®å Žåãããã¯å ¬åŒã«èªèãããã¹ãã§ããããã¢ã®äŸåé¢ä¿ãéçºè ã®äŸåé¢ä¿ãšããŠå®£èšããå¿ èŠã¯ãªããšæããŸãã
ç§ããããæèµ·ããå¯äžã®çç±ã¯ãéçºè ãšãã¢ã®äŸåé¢ä¿ã®äž¡æ¹ãäžè¬çã«ç³žã®è€éããå¢ãããã«æããã®ã§äœããè¿œå ããã³ãã³ã/ãªãã·ã§ã³ãè¿œå ãããšæãéã§ãããããŠç§ã¯ããã®ã©ããã«çŽ æŽããã解決çãããããã«æããŸãã·ã³ãã«ð
@kyleholzinger
@hulkishç§ã¯ææ ã«åæããŸããã
ãŠããããã¹ããŸãã¯.buildãå®è¡ããããã«å¿ èŠãªãå Žåã ç§ã®çµéšã«ãããšããããããäž¡æ¹ã®å Žæã«ããããè¿œå ããå¿ èŠãããã®ã¯ããã ãã§ãã
ããã§ã®è§£æ±ºçã¯ãyarnããã¢ã®èªåã€ã³ã¹ããŒã«ãå¯èœã«ãããªãã·ã§ã³ãå°å ¥ããããšã ãšæããŸãã peerDependenciesã䜿çšããäž»ãªå©ç¹ã¯ãäºææ§ã®ãªãäžæçãªäŸåé¢ä¿ããã€äœ¿çšãããŠããããææ¡ã§ããããšã§ãã ããã§éèŠãªã®ã¯ãã€ã³ã¹ããŒã«æã«ãã¢éšéã®ããã©ã«ãã®åäœãå£ããªãããšã§ãã
@hulkishã¯ãäŸåé¢ä¿ã®äŸåé¢ä¿ã«äŸåããŠããã¢ã®äŸåé¢ä¿ã®1ã€ããã«ããã·ããªãªã«ã€ããŠè©±ããŠãããšæããŸãã ãã ããæšç§»çãªäŸåé¢ä¿ã¯ããã¢äŸåé¢ä¿ã§æå®ãããç¯å²ãšäžèŽããå¿ èŠããããããããã«ãã£ãŠåé¡ãçºçããããšã¯ãªããšæããŸããããã¯ããšã«ããåºãç¯å²ã§ããå¿ èŠããããŸãã æšç§»çãªäŸåé¢ä¿ããã¢ã®äŸåé¢ä¿ãããå ·äœçã§ããå Žåããã®ç¯å²ãåªå ããããã¹ãŠã®èŠä»¶ãæºããããŸãã
@hulkish
ãŠããããã¹ããŸãã¯.buildãå®è¡ããããã«å¿ èŠãªãå Žå
å®å šã«ãããæã«å ¥ãããïŒ ããã¯çåãæããããŸãããäœãããã¢äŸåé¢ä¿ã§ããããåäœãã¹ããŸãã¯ãã«ããå®è¡ããããã«ãããå¿ èŠãšããªãå Žåããªãããããã¢äŸåé¢ä¿ãšããŠæã£ãŠããã®ã§ããïŒ
peerDependenciesã䜿çšããäž»ãªå©ç¹ã¯ãäºææ§ã®ãªãäžæçãªäŸåé¢ä¿ããã€äœ¿çšãããŠããããææ¡ã§ããããšã§ãã
ããã¯ç§ã匷ãåæããŸãããã¢äŸåé¢ä¿ãæã€ã©ã€ãã©ãªãžã®äŸåé¢ä¿ã宣èšããŠããã¢ãžã¥ãŒã«ã®ã³ã³ã·ã¥ãŒããŒããããã¢äŸåé¢ä¿ã¯ä»é©ãã¹ããã®ã ãšæããŸããç§ã®äž»ãªäžæº/åé¡ç¹ã¯ããã¢äŸåé¢ä¿ãæã€ã¢ãžã¥ãŒã«ã§éçºãããšãã§ãã æ··ä¹±ããã£ããããããªããïŒ
ç§ã®äž»ãªè³ªå/ææ¡/åžæã¯ãããèªäœã®package.json
ãã¢ã®äŸåé¢ä¿ãããã¢ãžã¥ãŒã«ã§ã yarn install
ïŒæ¬çªç°å¢ã§ã¯ãªãïŒãååŸããããšã§ãã package.json
ã¯ããã®éçºäŸåé¢ä¿ãšãã®ãã¢äŸåé¢ä¿ã®äž¡æ¹ãã€ã³ã¹ããŒã«ãããŸãã ãããäž»ãªéãã§ããçŸåšãã€ã³ã¹ããŒã«ãããã®ã¯éçºäŸåé¢ä¿ã®ã¿ã§ãããããéçºäŸåé¢ä¿ãšãã¢äŸåé¢ä¿ã®äž¡æ¹ãšããŠdepsã宣èšããå¿
èŠããããŸãã
@bdwain @hulkish
@hulkishã¯ãäŸåé¢ä¿ã®äŸåé¢ä¿ã«äŸåããŠãã¢ã®äŸåé¢ä¿ã®1ã€ããã«ããã·ããªãªã«ã€ããŠè©±ããŠãããšæããŸã
ãã¢äŸåé¢ä¿ã®ããã¢ãžã¥ãŒã«ãå¥ã®ãããžã§ã¯ãã«è¿œå ãããšãã§ã¯ãªãããã¢äŸåé¢ä¿ã®ããã¢ãžã¥ãŒã«ãéçºãããšãã«yarn install
ãå®è¡ãããšãã«ã€ããŠå
·äœçã«è©±ããŸãã
@bdwainã¯æ£ç¢ºã§ã¯ãããŸãããã説æããã®ã¯ééããªãæ»ãããããã®ã§ãã äŸã䜿çšããŠã¿ãŸãïŒ
ããããããã¬ãã«ã®ããã±ãŒãžã ãšããŸãããã
"dependencies": {
"foo": "^4.0.0",
"react": "^15.0.0"
}
次ã«ãfoo / package.jsonïŒ
"dependencies": {
"react": "^16.0.0"
}
ãã®äŸåé¢ä¿ããªãŒã«ãããšãyarn / npm installãå®è¡ãããšãnode_modulesãã£ã¬ã¯ããªã¯æ¬¡ã®ããã«ãªããŸãã
node_modules/
react/ <-- @^15.0.0
foo/node_modules/react/ <-- @^16.0.0
ãã®æç¹ã§ãïŒäœããã®çç±ã§ïŒnode_modulesã®ãã¹ããããdiræ§é ãèªçºçã«æ€æ»ããããšã«æ±ºããªãéããåé¡ãããããšã¯ããããŸããã ããã¯ããã±ãŒãžãããŒãžã£ãŒã®ããã§ã¯ãããŸãã-ããã¯ãã®ä»äºãæ£ç¢ºã«å®äºããŸããã
ãããã£ãŠãpeerDependenciesã¯ãã€ã³ã¹ããŒã«ã®æ瀺ã§ã¯ãªããæ€èšŒãã§ãã¯ãšããŠæ±ãããšã§ããã®ãŠãŒã¹ã±ãŒã¹ã解決ããããšãç®çãšããŠããŸãã
"dependencies": {
"foo": "^4.0.0",
"react": "^15.0.0"
}
次ã«ãfoo / package.jsonïŒ
"peetDependencies": {
"react": "^16.0.0"
}
ãŸãããã®æç¹ã§ãäž¡æ¹ã®ãŠãŒã¹ã±ãŒã¹ã«ã reactããŒãžã§ã³ãäºãã«äºææ§ããªãããããšãæ確ã«ããŸãããã
ãã®ãŠãŒã¹ã±ãŒã¹ã®éãã¯æ¬¡ã®ãšããã§ãã ãã®åé¡ã®ä»£ããã«éãã«ååšããŸãã npm / yarn installãå®è¡ãããšãããã±ãŒãžãããŒãžã£ãŒã¯éäºææ§ããšã©ãŒãŸãã¯èŠåãšããŠå ±åãã矩åããããŸãã
ãããããããããã説æããããšãé¡ã£ãŠããŸãã
@kyleholzinger
ç¹ã«ããã¢äŸåé¢ä¿ã®ããã¢ãžã¥ãŒã«ãå¥ã®ãããžã§ã¯ãã«è¿œå ãããšãã§ã¯ãªãããã¢äŸåé¢ä¿ã®ããã¢ãžã¥ãŒã«ãéçºãããšãã«yarnã€ã³ã¹ããŒã«ãè¡ãå Žåã«ã€ããŠè©±ããŸã
ããããŸãã ãã¢éšéã®ããã©ã«ãã®åäœã¯ãã®ãŸãŸã«ããŠããå¿
èŠããããšæããŸãã ããããç°¡åãªè§£æ±ºçã¯ããããcliããã³/ãŸãã¯envå€æ°ããã³/ãŸãã¯.yarnrc
ä»ããŠæ§æã§ããããã«ããããšã ãšæããŸãã --install-peers-as-dev
ãããªãã®
@hulkish
ããããç°¡åãªè§£æ±ºçã¯ããããcliããã³/ãŸãã¯envvarsããã³/ãŸãã¯.yarnrcãä»ããŠæ§æã§ããããã«ããããšã ãšæããŸãã --install-peers-as-devã®ãããªãã®
ãã¡ããïŒ å人çã«ã¯ãéçºè ã®äŸåé¢ä¿ãšãã¢ã®äŸåé¢ä¿ã®äž¡æ¹ã«å«ããã¹ãã§ã¯ãªããšæããŸãããããã¯å¥ã®è°è«ã«ãªãå¯èœæ§ããããŸãã ãã®ãªãã·ã§ã³ãè¿œå ããããšã¯ã確å®ãªåŠ¥åæ¡ã§ãããåœé¢ã¯åé¡ã解決ããããã®åªããæ¹æ³ã«ãªããšæããŸããããããã§ãã¯ããŠãäœããäžç·ã«æããããšããŸã:)
@kyleholzingerããã¯éå§ããã®ã«é©ããå Žæã§ãhttps://github.com/yarnpkg/yarn/blob/master/src/cli/commands/install.js#L58
ãŸããpeerDependenciesãdevãšããŠã€ã³ã¹ããŒã«ããããã«è»¢éããéã«ãäºææ§ã®èŠåããšã©ãŒãåŒãç¶ãå ±åãããããã«ããããšããå§ãããŸãã
@hulkishãã¢ã®äŸåé¢ä¿ãäœã§ããããç解ããŠããŸãã ç§ã®ãã€ã³ãã¯ãå®éã«ã¯ãéçºç®çã§åžžã«ã€ã³ã¹ããŒã«ããå¿ èŠããããããããŒãžã§ã³ãäžèŽããªãå Žåã«èŠåãåºã圹å²ã«å ããŠãdevDependenciesãšããŠæ±ãå¿ èŠããããšããããšã§ããã
ããã±ãŒãžFooãBarã«ãã¢äŸåããŠããå ŽåãFooã§çŽæ¥äœæ¥ãããšãã«Barãã€ã³ã¹ããŒã«ããããªãå¯äžã®ã·ããªãªã¯ããã«ããšèªåãã¹ãã«Barãå¿ èŠãªãå Žåã§ãã ãããããã®å Žåã¯ããã«ã/ãã¹ãããããããBarãžã®ãã¢äŸåãå¿ èŠãšããæ©èœãå®è¡ããªãã£ãããšãæå³ããŸããããã¯äžè¬çãªã±ãŒã¹ã§ã¯ãªãã¯ãã§ãã
ãã¢ã®äŸåé¢ä¿ã®èªåã€ã³ã¹ããŒã«ãæå¹ã«ãããªãã·ã§ã³ã¯ãå¿
èŠã«ãªãããšãå€ããããæ£ããããšã§ã¯ãªããšæããŸãïŒãã ããéçºã®äŸåé¢ä¿ãšããŠãã¢ãæå®ããå Žåã¯ããã€ã³ããç¡å¹ã«ãªããŸãïŒã ãªãã·ã§ã³ãé »ç¹ã«å¿
èŠã«ãªãå Žåã¯ããããããã©ã«ãã§ããã代ããã«ãããç¡å¹ã«ãããªãã·ã§ã³ãããã¯ãã§ãã yarn install
ã¯ãæãäžè¬çãªã±ãŒã¹ã§ã¯ãªãã·ã§ã³ãªãã§æ©èœããã¯ãã§ããããã¢ã®äŸåé¢ä¿ãéçºã®äŸåé¢ä¿ãšããŠæ±ãå¿
èŠãããã®ãæãäžè¬çãªã±ãŒã¹ã§ãã å¹³åçãªãŠãŒã¶ãŒã®ããã«äœåãªã¹ããããè¿œå ããããšã¯ããã æªãçµéšã§ãã
ãããŠãããããdevãšpeerã®äž¡æ¹ã«èªåçã«è¿œå ããããšã«ã¯ãäŸåé¢ä¿ã2ã€ã®å Žæã§è€è£œãããšããåé¡ããããŸããããã¯ãIMOãåé¡ã§ãããå¿ èŠã§ã¯ãªãã¯ãã§ãã
ãããã«ããããããã®èŠå/ãšã©ãŒãå ±åããå¿ èŠããããŸãã
ãã®æ©èœããŸã ãªãå¯èœæ§ã¯ãããŸããïŒ npmããã±ãŒãžã®äœæã¯åããŠã§ãããnpmããã±ãŒãžãéçºããã³ã¢ã¯ãŒã¯ãããŒã®äžéšã®ããã§ãã
åã@bielsïŒ ç§ã¯å®éã«ããã«åãçµãã€ããã ãšèšã£ãããšãå®å
šã«å¿ããŠããã®ã§ãŸã å§ããŠããŸããããå°ãªããšã人ã
ã«ãã®ãªãã·ã§ã³ã.yarnrc
å
¥ããŠãããããšãã§ããããã«ãã§ããéãããã«åãçµãã€ããã§ããã€ãå¿é
ããå¿
èŠã¯ãããŸãã
ãã®æ©èœã¯éåžžã«éèŠã ãšæããŸãã
ç¹ã«ã©ã€ãã©ãªã®äœæè ã«é¢ããŠã¯ãå€ãã®ãŠãŒã¹ã±ãŒã¹ãèããããšãã§ããŸãã
react
ãšreact-dom
ãpeerDependencies
ãšããŠæã€ã³ã³ããŒãã³ãã©ã€ãã©ãªãéçºããããšããŸãïŒæçµçã«ã¯ãããã䜿çšãã人ã«ãã³ãã«ãããããªãã®ã§ãéè€ããŸããããã®2ã€ã®ã©ã€ãã©ãªã¯ã以åã«çµéšããåé¡ãåŒãèµ·ããå¯èœæ§ããããŸãïŒã
peerDependencies
ã€ã³ã¹ããŒã«ããŠã³ã³ããŒãã³ãã©ã€ãã©ãªããã¹ããããã®ã§ãCIãšèªåã®ãã·ã³ã§yarn --include-peerDeps
ïŒãŸãã¯ãã®ãããªãã®ïŒãå®è¡ãããã®ã§ããã誰ããyarn
èªåã®ããã±ãŒãžã«ç§ã¯åœŒããèªåã®äœ¿ãããreact
ãšreact-dom
圌ãã®ãã¹ããå®è¡ããããã«ãäŸåé¢ä¿ãïŒåœŒãã¯ãããè¡ãæ¹æ³ã¯éèŠã§ã¯ãããŸããïŒã
ãŸãããããæ£ç¢ºã«å®è¡ããããŠã³ããŒãæ°ãå€ãã¢ãžã¥ãŒã«ãããã®ã§ããã®æ©èœããã€ãã£ãã«ããããšã¯ãã§ã«æ£åœåãããŠãããšæããŸãã ïŒã人ã ã欲ãããã®ãäœãããšããå€ãã¢ãããŒãããIMOã«é©çšãããŸãïŒ
--include-peerDeps
æ瀺çã«åãæ¿ããå¿
èŠãããããããããã©ã®ããã«æªãç¿æ
£ã«ãªããã¯ããããŸããã
å¿ èŠã«å¿ããŠãå®è£ ã«ã€ããŠè©±ãåããæ¯æŽãããŠããã ããŸãã
@lucasfcostaã¯ãã以äžåæã§ããŸããã§ããïŒ æè¿ã¯äœæ¥ããæéãããŸããªãã®ã§ãã§ããéã調ã¹ãããšããŠããŸãããã³ãã³ãã©ã€ã³ãªãã·ã§ã³ãããªãã·ã§ã³ãæ£ããååŸã§ããªãããã§ãã ããããæãã®æã倧奜ãã§ã:)
@lucasfcostaããã¯ããªãã·ã§ã³ãååšããå¯èœæ§ããããšæã£ãå Žæã®ç§ã®æªãå®è£ ã§ããããããŸããã ä»ã®ããã€ãã®ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ã®ãã¿ãŒã³ã«åŸãããšããŠããŸããããæ©èœããŠããªãããã§ãã
ç§ã¯çŸåšãè€è£œã¢ãããŒãïŒdevDependenciesãšpeerDependenciesïŒãæ¡çšããŠããŸããããã®æ©èœã倧奜ããªã®ã§ããããããšãã§ããŸãã
ç§ããããå¿ èŠã§ãã ãã®éã«ç§ã¯å°ããªããŒãã¿ã¹ã¯ãå®è¡ããŸãã
const pkg = require('./package.json');
const entries = Object.entries(pkg.peerDependencies);
const shell = require('shelljs');
let deps = ['yarn add'];
for ([dep, version] of entries) {
deps[deps.length] = `${dep}@${version}`;
}
deps.push('--peer');
const cmd = deps.join(' ');
console.log('Installing peer deps!\n -----', cmd);
const result = shell.exec(cmd);
if (result.code !== 0) {
shell.echo('Error: installing peer dependencies');
shell.exit(1);
}
涌ããïŒ ããã§ãããã糞ã«è²Œãä»ããŠãæãªã©ãè¿œå ããããšãã§ããŸãã
æšã2018幎10æ4æ¥ã«ã¯ã17ïŒ29ãã¹ã¯ã¢ãŒã¬Mangialavori [email protected]
æžããŸããïŒ
ç§ããããå¿ èŠã§ãã ãã®éã«ç§ã¯å°ããªããŒãã¿ã¹ã¯ãå®è¡ããŸãã
`const pkg = requireïŒ './ package.json'ïŒ;
constãšã³ããª= Object.entriesïŒpkg.peerDependenciesïŒ;
const shell = requireïŒ 'shelljs'ïŒ;deps = ['yarn add'];
forïŒ[depãversion] of entryïŒ{
deps [deps.length] = $ {dep} @ $ {version};
}deps.pushïŒ '-peer'ïŒ;
const cmd = deps.joinïŒ ''ïŒ;
console.logïŒ 'ãã¢depsã®ã€ã³ã¹ããŒã«ïŒn -----'ãcmdïŒ;
const result = shell.execïŒcmdïŒ;ifïŒresult.codeïŒ== 0ïŒ{
shell.echoïŒ 'ãšã©ãŒïŒãã¢äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«'ïŒ;
shell.exitïŒ1ïŒ;
} `â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/yarnpkg/yarn/issues/1503#issuecomment-427063046 ããŸãã¯ãã¥ãŒã
ã¹ã¬ãã
https://github.com/notifications/unsubscribe-auth/AE64MGxna2iQ-BFNiC52mIVro8sydPu1ks5uhilsgaJpZM4KiMuo
ã
@RWOverdijkãèšã£ãããã«ãç§ãè€è£œã¢ãããŒããåã£ãŠããŸãã å°æ¥çã«ãã®æ©èœãèŠãã®ã倧奜ãã§ãã
ãšããã§ã1ã€ã®ããã±ãŒãžïŒdevDependenciesãšpeerDependenciesïŒã2åè¿œå ããå¿ èŠããªãããã«ã誰ããããè¯ããœãªã¥ãŒã·ã§ã³ãæã£ãŠããŸããïŒ
æªæ¥ããããã«ã¡ã¯ã ããã¯ãpackage / libéçºè ã«ãšã£ãŠã¯äŸç¶ãšããŠåé¡ã§ãã éè€ããæ åœè ãçãã«ãªãã¹ãã§ã¯ãããŸããã
ãã®æ©èœãè¿œå ããŠã»ããã§ãã ããã±ãŒãžã®devDependencies
ã«react
ãè¿œå ããªããšãã³ãŒãã§ãã¹ããå®è¡ã§ããŸããã
ããŒã«ã«ã®peerDependencies
ãªããžã§ã¯ãã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããããã®ãã©ã°ãããã°ããã®ã§ããã_only_ããŒã«ã«peerDependencies
ããã©ã«ãã®åäœã«ããããšã®ãã€ãã¹é¢ãèŠåœãããŸããã ãããŠæå³çã«ã¯ãããã±ãŒãžãä»ã®å Žæã§æ©èœããããã«ã¯ãã¢ã®äŸåé¢ä¿ãååšããå¿
èŠããããŸããããªãããŒã«ã«ã§ç°ãªãã®ã§ããããïŒ
æã®äœ¿çšæ³ã«ã€ããŠã®ç§ã®æèŠã¯ãæãšã®æŽåæ§ã®ããã«æ¬¡ã®ããã«ãªããŸã
yarn add --peer
ã³ãã³ãã
yarn --peer
# and
yarn install --peer
å°ãªããšããã©ã°ãå°å ¥ããå¿ èŠããããŸãã
å¥ã
ã®test
ã¢ããªã䜿çšããããšãããã§è¯ã解決çã§ãããã©ããçåã«æããŸããïŒ æ¬¡ã«ããã¹ãŠã®peerDependencies
ãtest
ã¢ããªã®dependencies
ãšããŠè¿œå ã§ããŸãã ããã¯æ¬¡ã®ããã«æãããŸãã
devDependencies
ããpeerDependencies
é€å€ããŸã"my-package": "file:/path/to/my-package"
ãªã©ã®ããŒã«ã«äŸåé¢ä¿ã䜿çšããŠãããšãã«ãããã±ãŒãžããnode_modules
ãã¯ãªã¢ããã®ãå¿ããå Žåã«ãçºçããInvalid hook call
ãšã©ãŒãåé¿ããŸãããå€ãã®æ
å ±ã人ã
ã«åœ¹ç«ã€å Žåã¯ããã®ã¢ãããŒããã¢ãã«åããŠåé¡ãææžåããããã«ããã¢ãªããžããªãäœæããŸããã
https://github.com/jamstooks/package-peer-dependencies
ä»ã®ãšããã npx install-peerdeps <package>
ãå®è¡ã§ããã¯ãã§ãããã®åŸããã©ã«ãã«ã€ãŒã³ããã¯ãªã©ãããå ŽåãCLIã¯ã€ã³ã¹ããŒã«ã«ã€ãŒã³ã䜿çšãããã©ãããå°ããŸãã å°ãªããšãä»ã¯ããã§ããŸããããŸããã
ãã®NPMRFCã§ãArcanisïŒãæ¬ èœããŠãããã¢depsã®ã€ã³ã¹ããŒã«ã«å€±æãããïŒãšIsaacïŒããã¢depsãèªåçã«ã€ã³ã¹ããŒã«ãããïŒããã®è©³çŽ°ãªèª¬æïŒ
ãã®ããã°æçš¿ã¯ããã®åé¡ã解決ããã®ã«åœ¹ç«ã¡ãŸããïŒ https ïŒ
é¢é£ããåé¡ããããšæããŸãã
æå°éã®åçŸã®ããã«ãç§ã¯äŸåé¢ä¿ã®ãã®ãªã¹ããæã£ãŠããŸãïŒ
"dependencies": {
"prismic-reactjs": "^1.2.0"
},
"peerDependencies": {
"react": "^16.12.0"
},
"devDependencies": {
"react": "^16.12.0",
"redux": "^4.0.5"
}
説æïŒç§ã®ããã±ãŒãžã¯ãå®è¡æã«react
ååšã«äŸåããŠããããã¹ãã«ãå¿
èŠã§ãã redux
ã¯ãã¢çšã§ãã以äžãåç
§ããŠãã ããã
çŸåšã prismic-reactjs
ããã¢ã®äŸåé¢ä¿ãšããŠreact
äŸåããŠããŸãã
yarn --production
ãåŒã³åºãããåŸã¯ã©ããªããŸããïŒ
Reactã¯_installed_ãš_hoisted_ã®äž¡æ¹ã§ã
ç§ã¯2ã€ã®_none_ãèµ·ããããšãæåŸ
ããŸãã
ãã¢ã®ç®çã§ãããã«redux
ãè¿œå ãããŠããŸãããããã¯ã€ã³ã¹ããŒã«ãããŠããŸãããããã¯ãäžæçãªãã¢ã®äŸåé¢ä¿ãåé¡ã®åå ã§ããããšã蚌æããŠããŸãã
ReproãªããžããªïŒ https ïŒ ã ã¯ã€ãã¯ãã§ãã¯ã®ããã«test.sh
ãå®è¡ããŸãã
npmã¯v7ã§ãã®æ©èœãåããŠããŸã...ãããyarnã«è¿œå ããªãçç±ã¯ãããŸããïŒ
@sajadghawamiç§ã®ç¥ãéãã @ arcanisã«ã¯ããããè¡ãããšã«é¢ããŠããªã倧ããªäºçŽããããŸãã
æãåèã«ãªãã³ã¡ã³ã
+1ããã¯å³æžé€šã®äœè ã«ãšã£ãŠéèŠã§ã