泚æïŒãã®åé¡ã¯yarnãªããžããªã§äœæããŠããŸãããããã¯å®éã«ã¯yarnãšnpmã®éã§å ±æãããåé¡ã§ãã
5æã«npm5ããªãªãŒã¹ãããããšã§ãNodeãšã³ã·ã¹ãã ã«ã¯2ã€ã®ããã¯ãã¡ã€ã«ããŒã¹ã®ããã±ãŒãžãããŒãžã£ãŒãè¿œå ãããŸããã ããã¯ãŠãŒã¶ãŒã«ãšã£ãŠå šäœçãªåå©ã§ããããã®åéã§ã®ç«¶äºãèŠãã®ã¯è¯ãã£ãã§ãã
ãã ãã2ã€ã®ç«¶åããããã¯ãã¡ã€ã«åœ¢åŒããããããããã¯ãŠãŒã¶ãŒãç¹ã«åå¿è ã®éçºè ã«ãšã£ãŠæ°ããåé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã
npm 5ããªãªãŒã¹ããããšããã¢ããªã±ãŒã·ã§ã³ãnpmãšyarnããã¯ãã¡ã€ã«ã®äž¡æ¹ã§éä¿¡ãããå ŽåãHerokuã¯ãããHerokuã§ããŒããã«ãã倱æããæãäžè¬çãªçç±ã«ãªããŸããããããã®å€±æã¯ããã©ãããã©ãŒã ã§ã®ãã¹ãŠã®ããŒããã«ã倱æã®çŽ10ã12ïŒ ãå ããŸãã æ¯æäœå人ãã®éçºè ãããããããããŠããŸãã
ãªããžããªã«äž¡æ¹ãå«ãŸããã®ã¯é©ãã»ã©ç°¡åã§ãã çµéšè±å¯ãªéçºè ã§ãããç¹å®ã®ãããžã§ã¯ãã«å¯ŸããŠééã£ãããŒã«ãå®è¡ããŠããŠãã³ãããããåã«èªåèªèº«ãæãŸããªããã°ãªããªãããšã«æ°ã¥ããŸããã ããã±ãŒãžãããŒãžã£ãŒãããã¯ãã¡ã€ã«ããŸãã¯gitãªããžããªãäœã§ããããç解ããŠããªãå¯èœæ§ããããæåã®ãµãŒããŒ/åå¿/è§åºŠãããžã§ã¯ããæ§ç¯ããçµéšã®æµ ãéçºè ã«ãšã£ãŠãããã¯éåžžã«æ··ä¹±ããå¯èœæ§ããããŸãã
ä»ã®ããã¯ãã¡ã€ã«ãååšããå Žåãã©ã¡ãã®ããŒã«ãèŠåãŸãã¯ãšã©ãŒã衚瀺ããŸããã
⯠ls *lock*
ls: *lock*: No such file or directory
⯠npm --version
5.8.0
⯠yarn --version
1.5.1
⯠npm install
npm notice created a lockfile as package-lock.json. You should commit this file.
added 659 packages from 437 contributors in 10.553s
⯠yarn install
yarn install v1.5.1
info No lockfile found.
[1/4] ð Resolving packages...
[2/4] ð Fetching packages...
[3/4] ð Linking dependencies...
[4/4] ð Building fresh packages...
success Saved lockfile.
âš Done in 7.67s.
⯠ls *lock*
package-lock.json yarn.lock
ããã¯ãWebäžã®ã»ãšãã©ã®ããã¥ã¡ã³ãããŠãŒã¶ãŒã«npm install
æ瀺ããŠããYarnãŠãŒã¶ãŒã«ç¹ã«åœãŠã¯ãŸããŸãã ããã¥ã¡ã³ããŸãã¯StackOverflowããã³ãã³ããã³ããŒããŠè²Œãä»ãããŠãŒã¶ãŒã¯ãããã§çµäºããå¯èœæ§ããããŸãã
ç§ã¯ã糞ã«NPMãš@arcanisã§@zkatãš@iarnaã«è©±ãèããããšãã¹ãŠãããããåãçµãã¹ãåé¡ã§ããããã©ã®ããã«å®å šãªåæããªãã£ãããšã«åæããŸããã çæ³çã«ã¯ããã®åé¡ãè°è«ãä¿ããäž¡æ¹ã®ããŒã«ãããã§ãŠãŒã¶ãŒãã©ã®ããã«æ¯æŽã§ãããã«ã€ããŠåæã§ããŸãã
ç§ã«ææ¡ãããæœåšçãªç·©åçã®ãªã¹ãããŸãšããŸããïŒ
ãŠãŒã¶ãŒã2ã€ã®ããã¯ãã¡ã€ã«ãå¿ èŠãšããæè¡çãªçç±ã¯ãããŸããïŒ ãã®å Žåãå€éšããŒã«ã¯ã©ã®ããã±ãŒãžãããŒãžã£ãŒããã®ã¢ããªã±ãŒã·ã§ã³ã«äœ¿çšããå¿ èŠãããããã©ã®ããã«æ±ºå®ã§ããŸããïŒ
package-lock.json
ãååšããå ŽåãYarnã¯ãšã©ãŒãåºåããŠçµäºããå¯èœæ§ãããããã®éãåæ§ã§ãã
é·æïŒ
çæïŒ
ã€ãŒã³ã¯package-lock.json
èªã¿åãããããyarn.lock
ã«å€æãã package-lock.json
ãåé€ããããšãã§ããŸãã npmã¯å察ã®ããšãããããšãã§ããŸãã
é·æïŒ
çæïŒ
ä»ã®ããã¯ãã¡ã€ã«ãåé€ããŠãæ°ããããã¯ãã¡ã€ã«ãäœæããã ãã§ã
é·æïŒ
çæïŒ
糞ã¯èŠãŠããå Žåã¯package-lock.json
ã§ã¯ãªãyarn.lock
ããã¯èŠåããã°ã«èšé²ããåŒã³åºãããšãã§ããŸãnpm install
ãŠãŒã¶ãŒã®ããã«
é·æïŒ
çæïŒ
package.json
ã«èšå®ãè¿œå ããŠç€ºãpackage.json
ã«ãã£ãŒã«ããè¿œå ããŠããããžã§ã¯ãã§äœ¿çšããããã±ãŒãžãããŒãžã£ãŒã瀺ããŸã
"package-manager": "yarn"
é·æïŒ
çæïŒ
ãã¶ãç§ã¯ãã£ãšããŸãããäœããæ¬ ããŠããŸã
package.jsonã«æ§æãè¿œå ããŠã
engine
ãã£ãŒã«ãã®è¯ããŠãŒã¹ã±ãŒã¹ã«ãªãå¯èœæ§ããããŸãð€
ã©ãŠã³ãããªããpackage-lock.json
â yarn.lock
â package-lock.json
ã¯æ倱ããããŸãããããã¯ããããéèŠã§ã¯ãããŸããã yarn.lock
â package-lock.json
â yarn.lock
ã¯æ倱ããªãã¯ãã§ããAFAIKã
npm
èŠç¹ãç§ã¯å Žåã¯ãªãã·ã§ã³è³æyarn
èŠpackage-lock.json
ããŠããªãyarn.lock
ããããã€ã³ããŒãããåé€ãããããšã«package-lock.json
ã åæ§ã«ã npm
yarn.lock
ãã package-lock.json
ã衚瀺ãããªãå Žåãåãããã«ã `yarn.lockãã€ã³ããŒãããŠåé€ããŸãã
ããã«ãããäž¡æ¹ã®ããŒã«ã®ãŠãŒã¶ãŒã¯ããŠãŒã¶ãŒã®ãããžã§ã¯ããæ··ä¹±ãããç¶æ ïŒãã¡ã€ã«ãäž¡æ¹ããã®ãã®ã§ããããã«èŠããïŒã®ãŸãŸã«ããããšãªããã·ãŒã ã¬ã¹ã«ååŸã«åãæ¿ããããšãã§ããŸãã
package-lock.json
ãyarn.lock
ããã¡ã€ã«ã«ã¡ã¿ããŒã¿ãè¿œå ã§ããïŒYarnã¯çŸåšè¿œå ã§ããŸãããããªãããã§ã¯ãªãã®ãïŒãäžéšãåé€ããããšãæå³ãããããç§ã¯ããã«å°ãæžå¿µãæ±ããŠããŸããã®éçšã§ç§ãã¡ã®ãã©ãŒãããã«èªç±ãã
ãã®åé¡ã¯ãããšããšå¥ã®ã¹ã¬ããã§è°è«ããäžè¬çã«ç³žãšNPMã®éã®çžäºéçšæ§ã®åé¡ãæèµ·ãã-ç§ãçžäºéçšã§ããããã«ããããšããããã«æãããŠãŒã¶ãŒã¯ããã®åŸããã¹ãŠããŸã£ããåãããã«åäœããããšãæåŸ ãæã£ãŠããã§ããããããç§éã®äž¡æ¹ã«å€ãããããããŸããäž¡æ¹ã®ãããžã§ã¯ãã§ãããã¯å±éºãªä»®å®ã ãšæããŸãïŒ1ã€ã®æçœãªäŸã¯ã誰ããã¯ãŒã¯ã¹ããŒã¹ãå©çšãããããžã§ã¯ãã§npmãå®è¡ãããšãã¯ãŒã¯ã¹ããŒã¹ããµã€ã¬ã³ãã«å£ããããšã§ãïŒã
@ yarnpkg / coreãèãïŒ
äž¡æ¹ã®ããŒã«ã1ã€ã®ããã¯ãã¡ã€ã«ããã«ç§»è¡ããã@iarnaã®ã¢ã€ãã¢ã奜ãã§ã
èªåçã«ã€ã³ã¹ããŒã«ããå¥ã®ã
åé¿ããããã«ã移è¡åŸã«ã€ã³ããŒããããããã¯ãã¡ã€ã«ãåé€ããããšã¯çã«ããªã£ãŠããŸã
1ã€ã®ãããžã§ã¯ãã§äž¡æ¹ã®ããã±ãŒãžãããŒãžã£ãŒã競äºããŸãã
ã©ã¡ãã®ããŒã«ãèŠåãåºåããç¶è¡ããããã«ãŠãŒã¶ãŒããã³ãããèŠæ±ããå¯èœæ§ããããŸãã
100ïŒ
ã®äºææ§ãéæãããšããã¯ããããšããMaelã®äž»åŒµã«ãåæããŸã
æ°ããæ©èœãæ¢æ±ããããšãããç§ãã¡ã¯ãããäžåéãã®ãã®ãšããŠæ±ãã¹ãã ãšæããŸã
移è¡ãã¹ãããã¯ç§ãã¡ã®install.jsã®ããªãå°ããªæ©èœã§ããå¯èœæ§ããããŸã
åŽã
9ïŒ49 PM MAELäºå°é¢ã®ã§ã¯æ°Žã2018幎4æ11æ¥ã«[email protected]æžããŸããïŒ
ç§ã¯ããã«å°ãå¿é ããŠããŸãããªããªãããã¯ã©ã¡ããæå³ããªãããã§ã
package-lock.jsonãyarn.lockãããã¡ã€ã«ã«ã¡ã¿ããŒã¿ãè¿œå ã§ããããã«ãªããŸã
ïŒç³žã¯çŸåšããã§ã¯ãããŸãããããªãããã§ã¯ãããŸããïŒãç§ãã¡ã®ãã©ãŒãããã«ããã€ãã®èªç±ãåãé€ããŸã
éçšã®äžã§ããã®åé¡ã¯ãŸããã€ãŒã³ãšã®éã®çžäºéçšæ§ã®åé¡ãæèµ·ããŸã
npmå šè¬ãå ã ã¯å¥ã®ã¹ã¬ããã§è°è«ãããŠããŸãã-è©ŠããŠã¿ãããšæããŸã
çžäºéçšæ§ãé«ããããšããŠãŒã¶ãŒãããããã®ã§ãç§ãã¡ã®äž¡æ¹ã«å€ãããããããŸãã
ãã¹ãŠãäž¡æ¹ã§ãŸã£ããåãããã«æ©èœããããšãæåŸ ããŠããŸã
ç§ãæãããããžã§ã¯ãã¯å±éºãªä»®å®ã§ãïŒ1ã€ã®æçœãªäŸã¯
誰ããnpmãå®è¡ãããšããã®ã¯ãŒã¯ã¹ããŒã¹ã¯ãµã€ã¬ã³ãã«å£ããŸã
ã¯ãŒã¯ã¹ããŒã¹ãå©çšãããããžã§ã¯ãïŒã@ yarnpkg / core https://github.com/orgs/yarnpkg/teams/core ãèãïŒ
â
ããªãã¯èšåãããããŒã ã«æå±ããŠããã®ã§ããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/yarnpkg/yarn/issues/5654#issuecomment-380677110 ããŸãã¯ãã¥ãŒã
ã¹ã¬ãã
https://github.com/notifications/unsubscribe-auth/ACBdWI9jnLJeFqH8v2T-AB74sQO1PMIjks5tntzrgaJpZM4TQ5-B
ã
æ°é±éåã«ãä»ã®ããã¯ãã¡ã€ã«ãå€æããããœãªã¥ãŒã·ã§ã³ã®å®è£ ã«é¢å¿ã瀺ããããã éä¿¡ããŸãã 圌ã¯ä»ã§ã¯ããã€ãã®å®çšçãªã³ãŒãããæã£ãŠãããããããŸããã
pingãããããšãïŒ
ããã§ããç§ã¯å®éã«ãŸãã«ããã«åãçµãã§ããæäžã§ãã ç§ã¯æ¥é±ãã€ãŒã³RFCãäœæãããã¹ãŠã®å©å®³é¢ä¿è ã«pingãéä¿¡ããããšãèšç»ããŠããŸããã
ç°¡åã«èšããšãyarn.lock <==> package-lock.jsonã®å€æã«ã€ããŠããã€ãã®äœæ¥ãè¡ããŸããã ããã»ã¹ã«ã¯ããã€ãã®æ倱ããããŸãããè«ççãªãã®ã¯ã»ãšãã©ãããŸããã ç§ã®ç®ã«ã¯ãäžèšã®ã1åéãã®å€æãã·ããªãªã«ã€ããŠè©±ããŠããå Žåãããã¯å®å šã«åãå ¥ããããŸãã ããã«ã€ããŠããã«è°è«ãããå Žåã¯ãããã«è©³ãã説æããŸãã
ç§ã¯çŸåšãããè¡ãããã€ãã®åºæ¬çãªã³ãŒããæã£ãŠããŸãïŒ https ïŒ
ããã¯100ïŒ
ã§ã¯ãªããå€æãããããžã§ã¯ããæ¢åããã³çŸåšã®node_modules
ãã©ã«ããŒã«äŸåããŸãã ã¬ãžã¹ããªããããã±ãŒãžã®ç¶æ
ãååŸããïŒãã©ã³ã2.0.0
ïŒåæžã蟌ã¿ã®æçµæ®µéã«ãããŸãïŒãã°ãããpacote
libã䜿çšïŒã
ãããçµãã£ããç§ãããããã®ã¯ããããyarn
ãšnpm
äž¡æ¹ã«æ£ç¢ºã«å®è£
ãããæ¹æ³ïŒãããŠãããããªãïŒã«ã€ããŠè©±ãå§ããããšã§ãã
ããã«ã€ããŠã¿ããªã®èããèããŠã¿ããã§ãã
ç§ã®ç®ã«ã¯ãäžèšã®ã1åéãã®å€æãã·ããªãªã«ã€ããŠè©±ããŠããå Žåãããã¯å®å šã«åãå ¥ããããŸãã
ããã»ã©äžè¬çã§ã¯ãªããšæããŸãã ç§ã¯ééã£ãŠãããããããŸããããããäžè¬çãªãŠãŒã¹ã±ãŒã¹ã¯Yarnã䜿çšãããããžã§ã¯ãã§ãããéçºè
ã®1人ãREADMEããã³ãã³ããã³ããŒããŠè²Œãä»ãã yarn
代ããã«npm
ã䜿çšããŠäŸåé¢ä¿ãè¿œå ãyarn
ã
ãã®ã³ã³ããã¹ãã§ã¯ãããŒã¿ã倱ããæ£ããããšãããããšããŠããã±ãŒãžã¬ã€ã¢ãŠãããµã€ã¬ã³ãã«å€æŽããããšãè¯ãããšã ãšã¯ãŸã 確信ããŠããŸããããããããåé¡ãçºçãããŸã§æ°ä»ããªãã§ãããïŒç¢ºèªããã³ããã衚瀺ãããå¯èœæ§ããããŸããããããã®ã³ãã³ããã³ããŒããŠè²Œãä»ãã人ã¯ãã€ã³ã¹ããŒã«ããã³ãããç²ç®çã«ç¢ºèªããããšãæåŸ ããŠããŸãïŒã ããã«æªãããšã«ãããã¯èªåã®ãã·ã³ã§åäœããå¯èœæ§ããããŸãããYarnã«æ»ããšãååã®ãã·ã³ã§æ©èœããªããªããŸãã
@ arcanis-ãã¹ãŠã®ã·ããªãªãšãšããžã±ãŒã¹ã«ã€ããŠè°è«ãã䟡å€ããããšæããŸãã ããªãããã£ããã£ãã·ããªãªã§ã¯ãç§ã¯éåžžã«åæããŸããã1ã€ã®ããã¯ãã¡ã€ã«ã«å¯ŸããŠæ確ãªãã€ã¢ã¹ãå¿ èŠãªã·ããªãªã¯ä»ã«ããããšæããŸãã
ãã®æ©èœã¯ãäž»ã«CIç°å¢ã§äœ¿çšãããŠãããšæããŸããããã§ã¯ãïŒOPãè¿°ã¹ãããã«ïŒèŒãããšæããŸãã å°ãªããšããäž¡æ¹ã®ããŒã«ãä»ã®ããŒã«ã®ããã¯ãã¡ã€ã«ãèªèããŠããå¿ èŠããããšæããŸããïŒ åœŒããå€æãè¡ãããšã決å®ãããšãã®è©³çŽ°ã圌ãã«ä»»ããŸãã ã©ãæããŸããïŒ
ãã®æ©èœã¯ãäž»ã«CIç°å¢ã§äœ¿çšãããŠãããšæããŸããããã§ã¯ãïŒOPãè¿°ã¹ãããã«ïŒèŒãããšæããŸãã
äŸã¯ãããŸããïŒ CIã·ã¹ãã ã¯éåžžã«æ±ºå®è«çãªæ¹æ³ã§åäœããããšã«ãªã£ãŠããŸããå€æãããããã¯ãã¡ã€ã«ã誀ã£ãŠã³ãããããããšã¯ãPRæã®imoã§ããã«æªåããã¯ãã§ãããCIã¯ããã«ã¯é ãããŸãã
å°ãªããšããäž¡æ¹ã®ããŒã«ãä»ã®ããŒã«ã®ããã¯ãã¡ã€ã«ãèªèããŠããå¿ èŠããããšæããŸããïŒ
å€åã engine
ããŒãžã§ã³ã䜿çšããŠç¹å®ã®ããã±ãŒãžãããŒãžã£ãŒã匷å¶ãããšãã©ã¡ãã®ãããžã§ã¯ããæä»çãšã³ãžã³ã®ãªã¹ããä¿æããå¿
èŠããããŸãïŒãyarnãã¯ãnpmãã§ã¯æºããããšãã§ãããéãåæ§ã§ãïŒã
ç§ã®èãã§ã¯ãããã¯ãã¡ã€ã«ããã®å Žã§å€æããããšãããŸãã¹ã±ãŒã©ãã«ã§ã¯ãããŸããã ããšãã°ããããŸã§ã¯package-lock.json
ãã¡ã€ã«ã«ã€ããŠã®ã¿è©±ããŠããŸããããpnpmã«ã¯shrinkwrap.yaml
ãšããç¬èªã®ããã¯ãã¡ã€ã«ããããšæããŸãã ãããã®äž¡æ¹ãšã1ã€ã®ç³ãæãä»ãå¯èœæ§ã®ããä»ã®åœ¢åŒã«å¯ŸåŠããæ¹æ³ãèŠã€ããããšãã§ããã°çŽ æŽããããšæããŸãã
ãã®æ©èœã¯ãäž»ã«CIç°å¢ã§äœ¿çšãããŠãããšæããŸããããã§ã¯ãïŒOPãè¿°ã¹ãããã«ïŒèŒãããšæããŸãã
ãŸããç§ãæ£ããç解ããŠããã°ãnpmã¯çŸåšCIåºæã®éåžžã«è»œãããã±ãŒãžãããŒãžã£ãŒã«åãçµãã§ããŸããããã¯ãããã¯ãã¡ã€ã«ã³ã³ããŒã¿ãŒãªã©ã®éãããžãã¹ããžãã¯ãå¿ èŠãšãããã®ã§ã¯ããŸãæ©èœããªãå¯èœæ§ããããŸãã
CIã«ã€ããŠïŒ
ç§ã®æåã®èãã¯æ¬¡ã®ãšããã§ããïŒå察ã®ããŒã«ã§æ°ããããã±ãŒãžãè¿œå ãããšãã«èŠåãããã¬ãã·ã¥ã€ã³ã¹ããŒã«ãè¡ããšãã«å€æããŸãïŒãŸãã¯ããä¿å®çã«ïŒãã¬ãã·ã¥ã€ã³ã¹ããŒã«ã§ããã©ã«ãã§å€±æãã import
ã³ãã³ããŸãã¯æ§æãã©ã°ãä»ããŠåé·ã«å€æãèš±å¯ããŸãã€ã³ã¹ããŒã«çšïŒã
以åã«npm / yarnãæ··åšããç°å¢ã§äœæ¥ããŠãããšãã¯ãåºæ¬çã«gitå±¥æŽã䜿çšããŠæåã§ãããè¡ããŸããã ããã¯éªšã®æããããã»ã¹ã§ããããããŠç§ãã¡ã¯ããã§äžäººã§ã¯ãªãã£ããšç¢ºä¿¡ããŠããŸãã
ã¹ã±ãŒã©ããªãã£ã«é¢ããŠïŒ
ããã«ã€ããŠã説æããããšæããŸãã
å€æãå®è¡ããããšãäžéã®è«çããã³ç©çããã±ãŒãžããªãŒïŒããã¯ãã¡ã€ã«ã«ããå ŽåïŒãäœæãããŸãã ç®çã®ããã¯ãã¡ã€ã«ã«å€æãããšãããããã®ããªãŒã䜿çšãããŸãïŒãŸãã¯ã yarn
ããå€æããŠããŠãç©çããªãŒããªãå Žåã¯ãé©åãªããã©ã«ãã§äœæãããŸãïŒã
ãã®ããã«ããŠãä»ã®ããã¯ãã¡ã€ã«ã¿ã€ãéã§ç°¡åã«å€æã§ããŸãïŒåã¿ã€ãã®è«ç/ç©çããªãŒãšã®éã®å€æãæäŸããã ãã§ãïŒã
ããã¯æããã«çŸåšã®ããŒã«ã®æ©èœãããå°ãé²ãã§ããŸããããããå®è£ ããããšã¯å€§ããªåé¡ã§ã¯ãªããšæããŸãã
ïŒnpmã®æ°ããciããŒã«ã«é¢ããŠã¯-ç§ã¯ããªããäœãæå³ããã®ãããããŸãããããã¯çŸåšã®è°è«ããå°ãé²ãã§ãããšæããŸããïŒïŒ
ãŸãã¯ããä¿å®çã«ïŒæ°èŠã€ã³ã¹ããŒã«ã§ã¯ããã©ã«ãã§å€±æããã€ã³ããŒãã³ãã³ãã«ããå€æã詳现ã«èš±å¯ããŸã
ã¯ããç§ã¯å®å
šã«ãã®å€æããžãã¯ãyarn import
ã³ãã³ãã«è¿œå ããããšã«ãªããŸããYarnãã©ã°ã€ã³ãå®è£
ããå Žåã¯ãå¥ã®ããã±ãŒãžã«æœåºã§ãã䟿å©ãªæ©èœã®ããã§ã:)ç§ã®ã³ã¡ã³ãã¯æ¡çšãã¹ãããã©ã«ãã®åäœã«çŠç¹ãåœãŠãŸãã
npm@6
æç¹ã§ãæåã«ã€ã³ã¹ããŒã«ãå®è¡ããªããŠãã package-lock.json
-> yarn.lock
ãã¹ã¬ã¹ã§å€æã§ããã¯ãã§ãã å¿
èŠãªãã¹ãŠã®ããŒã¿ãèââå¥åãªã©ãå«ãŸããŠããå¿
èŠããããŸãïŒnpm @ 6ã®pkglockã®requires
ãã£ãŒã«ãã«ã¯ã yarn.lock
䜿çšãããã®ãšäžèŽããããŒãžã§ã³ç¯å²ããããŸããïŒïŒ
ããããããåœãŠã¯ãŸãåã«https://github.com/yarnpkg/yarn/pull/5042ãåºè·ããå¿
èŠãããsha1
ããªãããã§ããã±ãŒã¹ã
@ arcanis-çŽ æŽãããïŒ ã ããPRã¯ïŒ
package-lock.json
ãã¡ã€ã«ãã€ã³ã¹ããŒã«ããŠèŠã€ãããšãã®èŠåpackage-lock.json
ãã¡ã€ã«ãè¿œå ããã³æ€çŽ¢ããéã®èŠåimport
ã³ãã³ãã䜿çšããŠpackage-lock.json
ããå€æããæ©èœãè¿œå ããŸãïŒãã®åŸããã¡ã€ã«ãåé€ããŸãïŒ@ zkat-ããã¯npm@6
ã«ã€ããŠçŽ æŽãããã§ãïŒ ãããç§æ¬¡ç¬¬ã§ããå Žåããã¹ãŠã®ããã¯ãã¡ã€ã«ããŒãžã§ã³ããµããŒãããããã«ãããã䜿çšããŠãããã§ã¹ããã¡ã€ã«ã«ãã©ãŒã«ããã¯ããããšãéžæããŸãã npm
ã«å¯ŸããŠãåæ§ã®ïŒãŸãã¯å€å°ç°ãªãïŒåäœãå®è£
ããŠããããã©ããå°ããŠããããŸããïŒ
ãŸããç§ãæ£ããç解ããŠããã°ãnpmã¯çŸåšCIåºæã®éåžžã«è»œãããã±ãŒãžãããŒãžã£ãŒã«åãçµãã§ããŸããããã¯ãããã¯ãã¡ã€ã«ã³ã³ããŒã¿ãŒãªã©ã®éãããžãã¹ããžãã¯ãå¿ èŠãšãããã®ã§ã¯ããŸãæ©èœããªãå¯èœæ§ããããŸãã
ãçŸåšäœæ¥äžããšã¯ãåºè·æžã¿ããæå³ããå Žåã¯ãã¯ãã =ïŒ
ããªãã瀺åããŠããããã«ãçŸåšyarn.locksãããŒãããããšã¯ãã®ç¯å²ãè¶ ããŠããŸãïŒããã±ãŒãžããªãŒãã¬ã€ã¢ãŠãããæ¹æ³ãããããªãããïŒããç§ãã¡å šå¡ããã®ã¬ã€ã¢ãŠããå®è¡ã§ããã©ã€ãã©ãªã«ãªã£ãŠããŸã£ãå ŽåãããŒãããµããŒãããããšã«å察ããŠããŸãã糞ãããã¯ã ïŒçæ³çã«ã¯ãããã¯Yarnãšã®éã§å ±æãããã©ã€ãã©ãªã«ãªããŸããïŒæããã«ããã®å Žåãæ¢åã®ããã¯ãã¡ã€ã«ãåé€ããã¹ãã§ã¯ãããŸããã ããã±ãŒãžã®ã¡ã¿ããŒã¿ã«é¢ããéããããã¯çŽç²ã«èªã¿åãå°çšã§ãã
package-lock.jsonãã¡ã€ã«ãã€ã³ã¹ããŒã«ããŠèŠã€ãããšãã®èŠå
ãµããŒããããŠããªãçš®é¡ã®ããã¯ãã¡ã€ã«ãååšãããšãã«èŠåã衚瀺ããã ãã§ã¯ãHerokuãæ±ããŠãã@jmorrellã«ãã£ãŠçºçããåé¡ã«å¿é ããŠããŸãã
ãµããŒããããŠããªãçš®é¡ã®ããã¯ãã¡ã€ã«ãååšãããšãã«èŠåã衚瀺ããã ãã§ã¯ãHerokuãæ±ããŠãã@jmorrellã«ãã£ãŠçºçããåé¡ã«å¿é ããŠããŸãã
èŠåã¯æ¹åãããŸãããé©åãªã¡ãã»ãŒãžã³ã°ã䌎ããšã©ãŒã¯ããŠãŒã¶ãŒimoã«ãšã£ãŠçæ³çã§ãã ç§ã¯èªåèªèº«ã§ãã話ãããšãã§ããŸããããyarnã䜿çšãããããžã§ã¯ããšnpmã䜿çšãããããžã§ã¯ããããã€ãããããã®ãããžã§ã¯ãã«ééã£ããããžã§ã¯ããå ¥åããããšããããããŸãã ã¯ã€ãã¯ãšã©ãŒã¯ãæåããæã£ãŠããã¯ãã®ãã®ãããã«äœ¿çšã§ããããšãæå³ããŸãã
èŠåã®å Žåã¯ã倧ãããŠæçœãªã¯ãã§ãã IMEãŠãŒã¶ãŒã¯ãããã±ãŒãžãããŒãžã£ãŒã®åºåãæ©èœããéãããããç¡èŠããããšãæåŸ ããããã«ããªãèšç·ŽãããŠããŸãã
ç§ã¯ãåå¿è ã®éçºè ãšã®çµéšãè±å¯ãªäººã«é£çµ¡ãåããŸããã圌ãã¯ãå§ããã°ããã®äººã«ãšã£ãŠããã®çµéšãã©ã®ããã«èŠãããã«ã€ããŠè©±ããŠãããããšãé¡ã£ãŠããŸãã
CIã·ã¹ãã ã¯éåžžã«æ±ºå®è«çãªæ¹æ³ã§åäœããããšã«ãªã£ãŠããŸããå€æãããããã¯ãã¡ã€ã«ã誀ã£ãŠã³ãããããããšã¯ãPRæã®imoã§ããã«æªåããã¯ãã§ãããCIã¯ããã«ã¯é ãããŸãã
åæããã çæ³çã«ã¯ããã«ã/ CIãµãŒãã¹ã«å°éãããŸã§ã«ãã¢ããªã±ãŒã·ã§ã³ã¯äžç¢ºå®ãªç¶æ
ã§ã¯ãããŸããã ãã®å Žåããã«ãã«å€±æããªãããã«ç§ãå®å¿ã§ããå¯äžã®æ¹æ³ã¯ããŠãŒã¶ãŒãèªåã®å¥œã¿ãpackage.json
ã§ç€ºãããã®åãå
¥ããããæ¹æ³ãããå Žåã§ãããããã®ãœãªã¥ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒã«ããå€ãã®è² æ
ããããŸãã
ãµããŒããããŠããªãçš®é¡ã®ããã¯ãã¡ã€ã«ãååšãããšãã«èŠåã衚瀺ããã ãã§ã¯ãHerokuãæ±ããŠãã@jmorrellã«ãã£ãŠçºçããåé¡ã«å¿é ããŠããŸãã
å®éã«Herokuãããã·ã¥ããåã«ããŠãŒã¶ãŒããããããããããªãããšãããŠããããšããŠãŒã¶ãŒã«èŠåããããšã§ããŠãŒã¶ãŒãæ¯æŽããŸãã å®éã«ã©ãã ãæ°å€ãå€ãããã¯
èŠåãææ¡ãã人ãžã®æ£çŽãªè³ªåïŒ package-lock.json
ãååšãããšãã«yarn install
ãŸãã¯yarn add
ãå®è¡ããããšã¯ééãã§ã¯ãªããšããç¶æ³ã¯ãããŸããïŒ npm install
ãšyarn.lock
åäž
npmããYarnãžã®ç§»è¡ããŸãã¯Yarnããnpmãžã®ç§»è¡ãæãæµ®ãã³ãŸãã ä»ã®ããã±ãŒãžãããŒãžã£ãŒãè©ŠããŠã¿ãããšãã¯ãæ©æŠãå ããªãããã«ããããšæããŸãã
ãŸããèŠåãšãšã©ãŒã¯çžäºã«æä»çã§ã¯ãªãããšããŸãã¯å°ãªããšãengine
ãã£ãŒã«ãã§ã¯ããã§ã¯ãªãããšãèŠããŠããå¿
èŠããããŸãã ããã±ãŒãžãããŒãžã£ãŒãåºå®ãããŠããªããããžã§ã¯ãã¯èŠåãåºåããããã±ãŒãžãããŒãžã£ãŒãåºå®ãããŠãããããžã§ã¯ãã¯ãšã©ãŒã«ãªãå¯èœæ§ããããŸãã ãã®ããã«ããŠããŠãŒã¶ãŒã¯ãéžæãè¡ããããã«å¿ããŠpackage.jsonãæ§æãããŸã§ã1ã€ã®ããã±ãŒãžãããŒãžã£ãŒããå¥ã®ããã±ãŒãžãããŒãžã£ãŒã«èªç±ã«åãæ¿ããããšãã§ããŸãã
ãšã³ãžã³ãã£ãŒã«ãã®ãã1ã€ã®å©ç¹ã¯ãã©ã®ããŒãžã§ã³ã®ããã±ãŒãžãããŒãžã£ãŒã䜿çšããå¿ èŠããããã確å®ã«ç¥ãããšãã§ããããšã§ãã ã©ããã§èšå®ã§ãããšæããŸããããã®ã·ã¹ãã ã§ã¯éåžžã®ã¯ãŒã¯ãããŒã®äžéšã«ãªããŸãã
ãšã³ãžã³ãã£ãŒã«ãã®ãã1ã€ã®å©ç¹ã¯ãã©ã®ããŒãžã§ã³ã®ããã±ãŒãžãããŒãžã£ãŒã䜿çšããå¿ èŠããããã確å®ã«ç¥ãããšãã§ããããšã§ãã ã©ããã§èšå®ã§ãããšæããŸããããã®ã·ã¹ãã ã§ã¯éåžžã®ã¯ãŒã¯ãããŒã®äžéšã«ãªããŸãã
engine
ãã£ãŒã«ãã¯ãããŸããããããšãengines
ãåç
§ããŠããŸããïŒ engine
ãåç
§ããŠããããã¥ã¡ã³ããèŠã€ãããŸããã äœãã足ããªãå Žåã¯ãè©«ã³ããŸãã
engines
ãã£ãŒã«ãã§ã®ããŒãžã§ã³ã®æå®ããµããŒãããŠããŸãïŒ https ïŒ
äŸïŒ
"engines": {
"npm": "5.6.x"
}
ããã䜿çšããŠã䜿çšããããã±ãŒãžãããŒãžã£ãŒã決å®ããããšã«é¢ããŠãããã€ãã®æžå¿µäºé ããããŸãã
ä»æ¥ã®ç¶æ³ïŒèªæã§ã¯ãªãæ°ã®ãŠãŒã¶ãŒãnpm
ãšyarn
äž¡æ¹ããŸãã¯npmããŒãžã§ã³ãå®çŸ©ããŠããŸããã yarn.lock
ãŸãã npm
ããã³yarn
å°æ¥ã®ããŒãžã§ã³ã§ã¯ããã匷å¶ãããå¯èœæ§ããããŸãããé »ç¹ã«ã¢ããã°ã¬ãŒãããªããŠãŒã¶ãŒã¯ãçŸåšã®ããŒãžã§ã³ãé·æé䜿çšãç¶ããŸãã
ã»ãšãã©ã®ãŠãŒã¶ãŒã¯ããã®æ§æã«è§Šããããšã¯ãããŸããã 圌ãã¯ãnodejs.orgããããŠã³ããŒããããã®ãèªåã®ãã·ã³ã§äœ¿çšããŠããã«ãããããããããŒã0.10
ãæå®ããå€ããã€ã©ãŒãã¬ãŒãããã©ãŒã¯ããŸããã ããã«ãããHerokuã§éèŠãªæ°ã®åé¡ãçºçããŸãã
å€ãã®å ŽåãããŒã ã¯ã€ã³ã¹ããŒã«ããããŒãžã§ã³ã調æŽããŸããã ã€ã³ã¹ããŒã«ããNodeãnpmãyarnã®ããŒãžã§ã³ã¯ãå€ãã®å Žåããããžã§ã¯ããéå§ãããšãããŸãã¯æåŸã«ãããããå£ããŠåã€ã³ã¹ããŒã«ãäœåãªãããããšãã®ææ°ã®ãã®ã§ãã ãããçæ³çãšããããã§ã¯ãããŸããããç§ã®ç解ã§ã¯ãnpm /ã€ãŒã³ãŠãŒã¶ãŒã®å€§å€æ°ã¯åå¿è ã§ãããããã¯éå§ã«æ°ããªããŒãã«ãè¿œå ããŸãã
äŸïŒããµã³ãã«ã®hello-worldãããžã§ã¯ãã®ã¯ããŒã³ãäœæãã httpsïŒ //nodejs.orgããNodeãããŠã³ããŒãããŸããããæ©èœããŸããã§ããã
ããã¯èšã£ãŠããããŒã«ãå³å¯ãªããŒãžã§ã³ãé©çšãããããengines
èšé²ããŠãããã°ãç§ã¯å€§å¥œãã§ãã ããã¯ç§ãæ¯æ¥ç®ã«ãããšã©ãŒã®å€ããé²ãã§ãããããããã¯ã¯ããã«å€§ããªå€åã®ããã«æããŸãã
ããã¯èšã£ãŠããããŒã«ãå³å¯ãªããŒãžã§ã³ãé©çšããŠãšã³ãžã³ã«èšé²ããå Žåãç§ã¯å€§å¥œãã§ãã ããã¯ç§ãæ¯æ¥ç®ã«ãããšã©ãŒã®å€ããé²ãã§ãããããããã¯ã¯ããã«å€§ããªå€åã®ããã«æããŸãã
AFAIK Yarnã¯ããã©ã°ãæž¡ããŠç¡å¹ã«ããªãéãããã®ãã£ãŒã«ããå³å¯ã«é©çšããŸãã
å€ãã®å ŽåãããŒã ã¯ã€ã³ã¹ããŒã«ããããŒãžã§ã³ã調æŽããŸããã ã€ã³ã¹ããŒã«ããNodeãnpmãyarnã®ããŒãžã§ã³ã¯ãå€ãã®å Žåããããžã§ã¯ããéå§ãããšãããŸãã¯æåŸã«ãããããå£ããŠåã€ã³ã¹ããŒã«ãäœåãªãããããšãã®ææ°ã®ãã®ã§ãã
ããã¯ãYarnã®åãã¡ãžã£ãŒããŒãžã§ã³éã§ã®äžè²«æ§ã®ã¿ãä¿èšŒãããããç¹ã«Yarnã䜿çšããå Žåã¯éåžžã«å±éºã§ãã
ãããçæ³çãšããããã§ã¯ãããŸããããç§ã®ç解ã§ã¯ãnpm /ã€ãŒã³ãŠãŒã¶ãŒã®å€§å€æ°ã¯åå¿è ã§ãããããã¯éå§ã«æ°ããªããŒãã«ãè¿œå ããŸãã
YarnïŒããã³ã¢ã€ãã¢ãæ°ã«å
¥ã£ãå Žåã¯npmïŒãengines
ãã£ãŒã«ãã«"yarn": "^<current_version>"
ãšã³ããªãè¿œå ããŠãæ©æŠãããŸããããã«å®å
šæ§ãå°å
¥ã§ããããã«ããã®ã¯ã©ãã§ããïŒ yarn init
ã yarn import
ãå®è¡ãããšãããŸãã¯ããã¯ãã¡ã€ã«ãæåããäœæãããšãã«ããããèªåçã«è¿œå ã§ããŸãã
Yarnã«ã€ããŠã¯ããããããŸãããã package-lock.json
ããŒãµãŒãYarnã«è¿œå ãã yarn.lock
ãååšããå Žåã¯äœæããªãã®ãæåã®è§£æ±ºçã ãšæããŸãã
æçµçãªç®æšã¯ãYarnãšnpmã®éã§1ã€ã®ããã¯ãã¡ã€ã«åœ¢åŒãå ±æããããšã ãšæããŸãã
@thatlittlegit https://github.com/yarnpkg/yarn/pull/5745ã«ã€ããŠç¥ã£ãŠããã ããã°
è¿œå ã®ããã«ç·šéïŒåäžã®ããã¯ãã¡ã€ã«åœ¢åŒã¯ãããã¯ãã¡ã€ã«åœ¢åŒéã«ããŸããŸãªãã¬ãŒããªãããããã©ããæé©ãã«ã€ããŠã®ã³ã³ã»ã³ãµã¹ããªããããèµ·ãããããªçµæã§ã¯ãªããšæããŸãã äž¡æ¹ã®ããŒã«ãäºãã®ããã¯ãã¡ã€ã«ãçžäºã«ç解ã§ããããã«ããããšã§ååã ãšæããŸãã
ãã以å€ã«ãããŠãŒã¶ãŒã®ãŠãŒã¹ã±ãŒã¹ãåäžã®äžè¬çãªãœãªã¥ãŒã·ã§ã³ãããé©åã«æºããããšãã§ãããããããŸããŸãªãã¬ãŒããªããè¡ãè€æ°ã®ã¢ã¯ãã£ãã«äœ¿çšãããããŒã«ã䜿çšããããšã«ã¯å€ãã®å©ç¹ããããŸãã
@BYKãšã³ãžã³ãã£ãŒã«ãã®åäœã«é¢ããããã€ãã®å±¥æŽã¯ãããããããã§åœ¹ç«ã¡ãŸãã
ã§1 @ NPMãšNPM @ 2 ãæã
ã¯æã£ãŠããpackage.json
ãšåŒã°ããengineStrict
ã«å ããŠã engine
ãã£ãŒã«ãã engineStrict
ãtrueã®å Žåããšã³ãžã³ãã£ãŒã«ãã¯_resolutionå¶çŽ_ãšããŠäœ¿çšãããããŒãžã§ã³ã®ãªã¹ãã«semverç¯å²ãé©çšããåã«ãäºææ§ã®ãªããšã³ãžã³ãæã€ããŒãžã§ã³ãé€å€ãããŠããŸããã ããã«ããããã©ãããã©ãŒã ã§[email protected]
ããµããŒããããŠããªãå Žåã [email protected]
ãå
¬éãããŠããŠãã npm install foo
ãããªããšãã§ãã [email protected]
npm install foo
ãååŸã§ããŸãã ããã¯æãŸãããšæãããŸãããå®éã«ã¯éåžžã«æ··ä¹±ããŠããŸãããç¹ã«ãWebãµã€ãã®ããã¥ã¡ã³ãã¯ææ°ããŒãžã§ã³ã®ã¿ã§ãã£ãããã§ãã
engineStrict
ãfalseã®å Žåããšã³ãžã³ãã£ãŒã«ãã«é¢ä¿ãªã解決ãè¡ãããçµæã«äºææ§ããªãå Žåã¯èŠåãçºè¡ãããŸããã
engine-strict
ãªãã·ã§ã³ããããŸãããããã¯package.json
ããããã£ãšåãããšãè¡ããŸãããããã¹ãŠã®ããã±ãŒãžã«é©çšããŸããã
npm @ 3以éã engineStrict
package.jsonããããã£ã®ãµããŒããçµäºãã engine-strict
ãªãã·ã§ã³ã®åäœãå€æŽããŸããã configãªãã·ã§ã³ã¯ããªãã«ãããšãã«çºçããèŠåããšã©ãŒã«å€ããããã«ãªããŸãããã解決ã«ã¯åœ±é¿ããŸããã
engine
ãã£ãŒã«ãã¯ããããã¬ãã«ã®ãããžã§ã¯ãã ãã§ãªãæšç§»çã«é©çšãããŸãã yarn
ãšã³ãžã³ãã©ã°ãå°å
¥ãããšãäŸåé¢ä¿ã¯yarnã§ã®ã¿ã€ã³ã¹ããŒã«ã§ããããšãæå³ããŸãããããã§ã¯ããã§ã¯ãªããšæããŸãã
次ã®yarn
ãªãªãŒã¹ã§ã¯ã package-lock.json
ãyarn.lock
ã«ã€ã³ããŒãã§ããããã«ãªãã¯ããªã®ã§ãèŠå/ãšã©ãŒã®åé¡ã®èª¬æã«æ»ããããšæããŸãã
ç§ã®èŠæ¹ïŒåäžã®ããã±ãŒãžã«package-lock.json
ãšyarn.lock
äž¡æ¹ã®ãã¡ã€ã«ãããã®ã«ã¯ååãªçç±ã¯ãªããšæããŸãã ç§ãèŠãã»ãšãã©ã®ãããžã§ã¯ãã¯ããããæ
æã«ãæãŸããç¶æ³ã§ã¯ãªãä¿®æ£ãå¿
èŠãªåé¡ãšèŠãªããŠããŸãïŒãã ãããã¡ããä¿®æ£ã®äœå°ã¯ãããŸãïŒã
äžèšã®@iarnaã®èª¬æããç解ã§ããããã«ã engine
ãã£ãŒã«ãã¯ãããã±ãŒãžã䜿çšããŠããããã±ãŒãžãããŒãžã£ãŒãæ瀺çã«æå®ããããã®é©åãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸããã
ã€ãŸããIMOãããã¯ããŠãŒã¶ãŒã«1ã€ã®ãã¡ã€ã«ãåé€ãããããããå€æããããã«ä¿ã詳现ãªãšã©ãŒãçæããã¯ãã®ç¶æ³ã§ãã
ãããããã®ãããªãšã©ãŒãçã¿åºãããšã¯æãããªé倧ãªå€åã«ãªããšæããŸãã ã€ãŒã³åŽã§ã¯ãïŒäžèšã®ããã«ïŒèŠåããå§ããŠããšã©ãŒã«å€æŽããã次ã®ã¡ãžã£ãŒããŒãžã§ã³ïŒããããäž¡æ¹ã®ãã¡ã€ã«ãèš±å¯ããæ§æãã©ã°ãè¿œå ããïŒãŸã§ããã®åäœãåŸã ã«éæšå¥šã«ããããšãææ¡ããŸãåæã«ååšããŸãïŒã
ã¿ããªã©ãæããŸããïŒ @ jmorrell ã @ BYK ã @ arcanis ã@ iarnaïŒ
ã©ã®ãããªçš®é¡ã®ãããžã§ã¯ãã§ãã䜿çšããããã±ãŒãžç®¡çããŒã«ãæå®ããå¿ èŠãããã®ã¯å¥åŠã«æããŸãã ç§ãééã£ãŠããå Žåã¯èšæ£ããŠãã ããããã ããYarnã¯ãäž»ã«ãšã³ããŠãŒã¶ãŒã®å¥œã¿ã«äŸåããããããã€ã³ã®ä»£æ¿åãšèŠãªããŠããŸãã Yarnã¯äºå®äžã®æšæºãšããŠNPMãå®å šã«çœ®ãæããããšããŠããŸããããããšãå ±åããããšããŠããŸããïŒ
@BrainBaconå
šå¡ãåãããã¯yarn.lock
ããã誰ããnpm install
ãå®è¡ããå Žåã§ãããã®äººã¯ç°ãªãäŸåé¢ä¿ã®ã»ããã«ãªã£ãŠããŸãå¯èœæ§ããããŸãã æ®å¿µãªããããšã³ããŠãŒã¶ãŒã®å¥œã¿ã«ã¯äŸåããŸãããã§ããã°ããããžã§ã¯ãã®å
šå¡ãåãããã±ãŒãžãããŒãžã£ãŒã䜿çšããããšããå§ãããŸãã
ããã¯ããããžã§ã¯ãã«2ã€ã®ããã¯ãã¡ã€ã«ãå«ããããšã¯æå³ããªãããšãæå³ããŸãã ããããåãäŸåé¢ä¿ããªãŒã«è§£æ±ºãããå¯èœæ§ã¯äœããã©ã®ããã±ãŒãžãããŒãžã£ãŒã䜿çšããããå¯çš¿è ã«äžæ確ã«ããŸãã
ïŒããããã€ã³çœ®æéšåã¯ãnpmãããã¯ãã¡ã€ã«ãçæããªãã£ãå Žåã«ç¹ã«åœãŠã¯ãŸããŸãããããã§å€±ãããæ
å ±ããªãã£ãããã§ããïŒ5745ãå®éã«Yarnãpackage-lock.json
åºã¥ããŠããã¯ãã¡ã€ã«ãçæã§ããããšãæå³ããå ŽåãåœãŠã¯ãŸããŸãã
ç§ãééã£ãŠããå Žåã¯èšæ£ããŠãã ããããã ããYarnã¯ãäž»ã«ãšã³ããŠãŒã¶ãŒã®å¥œã¿ã«äŸåããããããã€ã³ã®ä»£æ¿åãšèŠãªããŠããŸãã
ã€ãŒã³ã¯ãå
¬éãããAPIã®èŠ³ç¹ãããçã£çŽããªããããã€ã³ã®ä»£æ¿åã§ã¯ãããŸããã yarn add <pkg>
ãšnpm install <pkg>
ã¯ãç§ãã¡ãå¥ã®æ¹æ³ã§è¡ãããšã®æãããªäŸã§ãã ç§ãã¡ã¯åãæ©èœã»ãããæã£ãŠããåŸåããããŸãããæçµçã«ã¯2ã€ã®ç°ãªãããŒã«ã§ãããåãåé¡ã«å¯ŸããŠç°ãªã解決çãããå ŽåããããŸãã
yarn.lock
ãšpackage-lock.json
ã¯ãããã®éãã®1ã€ã§ãããYarnãnpmãç°ãªãæ
å ±ãå«ãã§ãããããåäžã®ãã®ã䜿çšããããšã«èå³ããªããšæããŸãã
糞ã®åŽã§ã¯ãèŠåããå§ããããšãææ¡ããŸãïŒäžèšã®ããã«ïŒ
ããã§å€§äžå€«ã§ãã äœãã®ãããªãã®ïŒ
WARN Your project seem to contain lock files (package-lock.json, shrinkwrap.json) generated
WARN by other tools than Yarn. It is advised not to mix package managers, in order to avoid
WARN resolution inconsistencies caused by desynchronized lock files.
誰ããPRãéãããã§ããïŒ
èŠåãè¿œå ããPRãéããŠããã ããã°å¹žãã§ã:)
package-lock.json
ãååšãã+ yarn import
å Žåãããã§å¿
èŠãªæçµãœãªã¥ãŒã·ã§ã³ã¯æçšãªãšã©ãŒã§ããïŒ ç§ã®ç解ã§ã¯ã @ iarnaã¯ãå察ã®ããã¯ãã¡ã€ã«ãåé€/å€æããå¿
èŠããããšäž»åŒµããŠããŸããã
ã©ã¡ãã®è§£æ±ºçããŠãŒã¶ãŒã«ãšã£ãŠã¯å€§å¹ ãªæ¹åã«ãªããŸãããyarnãšnpmã®äž¡æ¹ãåãæŠç¥ãéžæããã®ãæåã ãšæããŸãïŒãã ããåæããªãã人ã ãããã«ã€ããŠåŒ·ãæããŠããå Žåã¯å³å¯ã«ã¯å¿ èŠãããŸããïŒã
@ jmorrell-ç§ã®ç解ã§ã¯ãèªåå€æã¯ããã§ã¯æªãèãã§ããããšã«åæããŸããã
äž»ãªçç±ã¯ã2ã€ã®ããã¯ãã¡ã€ã«éã®ãã«ã¿ãã©ãããã¹ãããç¥ãã®ãé£ããããã§ãã
äŸãã°ã äžèšã®èŠåãéçºè
ãšããŠèŠããšããããããããããããšã¯ãä»ã®ããã¯ãã¡ã€ã«ããã€äœæãããããã¡ã€ã³ã®ããã¯ãã¡ã€ã«ã«è¿œå ãããªãã£ãããã±ãŒãžãè¿œå ãããããšã確èªããŠããè¿œå ããããšã§ãã ãã¶ãimport
ãªãã·ã§ã³ãåç
§ãšããŠäœ¿çšããŸãããå¿
ããããããšã¯éããŸããã
npm
人ã
ãããã«åæããããšãé¡ã£ãŠããŸããïŒ
çæ³çã«ã¯ããããéæšå¥šã®ç¶æ³ã§ããïŒæèšãããããªãïŒãå°æ¥ã®ã€ãŒã³ããŒãžã§ã³ã§ãšã©ãŒãçºçããããšã«ã€ããŠã®èŠåãå«ããããšæããŸãã ãã¶ãããããšããã«å¯ŸåŠããæ¹æ³ã«ã€ããŠã®ããã€ãã®è©³çŽ°ãªããã¥ã¡ã³ãã«ãªã³ã¯ããŠããŸãã @ arcanis-ããã¯å®çŸå¯èœã ãšæããŸããããããšãwarning
æ¯ãèããç¶ãããã§ããïŒ
è€æ°ã®ããã¯ãã¡ã€ã«ããããšãã«äž¡æ¹ã®ããŒã«ãerror
çºè¡ããå Žåãéçºè
ã¯ãŸã ãå°ãããéã«ãã®åé¡ã«è¿œãã€ããïŒåç
§ãšããŠã€ã³ããŒããããã©ããã«ãããããïŒè¿
éã«å¯ŸåŠã§ãããšæããŸãã ã
@arcanis npm add <pkg>
ã¯å®å
šã«æå¹ã§ãããYarnãè¡ãããšãå®è¡ããŸãðŒ
pkglockãšyarnlockã«é¢ããéãã package-lock.json
ã®åœåã®æå³ã¯ãããããã®ããã±ãŒãžãããŒãžã£ãŒãå¿
èŠãšãããã¹ãŠã®ããŒã¿ãå«ããã©ãŒããããäœæããããšã§ããã å®éã npm@6
ã®æç¹ã§ã®pkglockã¯ãé¢é£ãããã¹ãŠã®ã¡ã¿ããŒã¿ãå«ãå®å
šãªããªãŒãèšè¿°ããŠãããããã€ã³ã¹ããŒã©ãŒãå®è¡ããã«ééçã«yarn.lockã«å€æã§ããŸãã ããã_æå³çã«_ïŒ requires
ãã£ãŒã«ããªã©ïŒè¡ããYarnããŒã ãšpnpmããŒã ã®äž¡æ¹ã«ãã£ãŒââãããã¯ãæ±ããŠãäž¡æ¹ãã€ã³ããŒãå¯èœãªããã¯ãã¡ã€ã«ãšããŠäœ¿çšããã®ã«ååã§ããããšã確èªããŸããã代æ¿ãªãã·ã§ã³ãšããŠã æ®å¿µãªãããyarn.lockã¯äžå¯éãµãã»ããã§ããããããã®éã¯åœãŠã¯ãŸããŸãããããšã«ããã€ã³ããŒããããã®ãè¿œå ããŸãã npmã¯ãYarnã§èšç®ãããããªãŒã®åœ¢ç¶ã«ãåŸããŸãïŒYarnãšã¯ç°ãªããŸãïŒã
å®éã npm @ 6以éã®pkglockã¯ãé¢é£ãããã¹ãŠã®ã¡ã¿ããŒã¿ãå«ãå®å šãªããªãŒãèšè¿°ããŠãããããã€ã³ã¹ããŒã©ãŒãå®è¡ããªããŠãééçã«yarn.lockã«å€æã§ããŸãã
ç§ã¯ãããã§ãããšã¯æããŸããïŒããããç§ã¯ééã£ãŠãããããããŸããã誀解ãææããŠãã ããïŒã Yarnããã¯ãã¡ã€ã«ã¯ãåäžã®ããŒãžã§ã³ã«è§£æ±ºãããè€æ°ã®ç¯å²ãèšèšäžãµããŒãããŠããŸããã ãããããlodash@^1.0.0
ã«äŸåããè€æ°ã®ããã±ãŒãžãããå Žåããããã¯ãã¹ãŠãŸã£ããåãããŒãžã§ã³ã䜿çšããŸãã ããã¯æé©åã§ããã ãã§ãªããããã¯ãã¡ã€ã«ã§ç©äºããšã³ã³ãŒãããæ¹æ³ã§ããããŸãã
npmããã¯ãã¡ã€ã«ã¯ããªãŒã§ããããã®ããããã£ã¯ä¿èšŒãããŠããããè€æ°ã®åäžã®ç¯å²ãç°ãªãããŒãžã§ã³ã䜿çšããå¯èœæ§ããããŸãïŒããŒã解決ã«ãŒã«ãå©çšããããšã§ãããã«åªããæé©åãå¯èœã«ãªãå¯èœæ§ããããããããã¯åé¡ãããŸããïŒã ãã®ãããªç¶æ³ã§ã¯ãpackage-lock.json-> yen.lockã®å€æã¯ããããã1ã€ã«ããŒãžãã以å€ã«éžæè¢ããªããããæ倱ãçºçããŸãã
äžæ¹ãYarnããã¯ãã¡ã€ã«ã¯æ¯èŒçåé¡ãªãpackage-lock.jsonã«å€æã§ããŸããããã¯ãã«ãŒã«ãããå³å¯ãªãµãã»ããã§ããããã§ãïŒããŒãžãããç¯å²ã¯æ倱ãªãããªãŒã«å€æã§ããããªãŒã¯ã«å€æã§ããŸããïŒæ倱ã®ãªãããŒãžãããç¯å²ïŒã äŸåé¢ä¿ããªãŒèªäœã«ã€ããŠã®ã¿è©±ããŠããããšã«æ³šæããŠãã ãããã¡ã¿ããŒã¿ãã£ãŒã«ãã«ã€ããŠã¯ããç¥ããŸããã
æ£çŽãªãšãããåãããšãèšã£ãŠããã®ãããŸã£ããéãããšãèšã£ãŠããã®ãå®å šã«ã¯ããããŸããããç¶æ³ãå°ãæ確ã«ãããã£ãã ãã§ãð
çæ³çã«ã¯ããããéæšå¥šã®ç¶æ³ã§ããïŒæèšãããããªãïŒãå°æ¥ã®ã€ãŒã³ããŒãžã§ã³ã§ãšã©ãŒãçºçããããšã«ã€ããŠã®èŠåãå«ããããšæããŸãã ãã¶ãããããšããã«å¯ŸåŠããæ¹æ³ã«ã€ããŠã®ããã€ãã®è©³çŽ°ãªããã¥ã¡ã³ãã«ãªã³ã¯ããŠããŸãã
@imsnifãããéCIç°å¢ã§ã®ãšã©ãŒã§ãããšã¯ç¢ºä¿¡ããŠããŸããïŒCIã«ã€ããŠã®è³ªåã¯ãããŸãã-ããã¯ééããªããšã©ãŒãåŒãèµ·ããã¯ãã§ãïŒã åã«çŸåšã®ç¶æ ã説æãããããçæ³çã§ã¯ãªãçç±ã説æããèŠåã«ãšã©ãŸããããšæããŸãã
è¯ãããšã¯ã @ jmorrellãèŠåãååã§ãã£ããã©ããã確èªããããã®æ£ç¢ºãªã¡ããªãã¯ãæäŸã§ããããšã§ããããã«åºã¥ããŠã次ã®åããéžæããŸãã
ããã§ã®æãŸããæçµãœãªã¥ãŒã·ã§ã³ã¯ãpackage-lock.jsonãååšããå Žåã«åœ¹ç«ã€ãšã©ãŒ+ã€ãŒã³ã®ã€ã³ããŒãã§ããïŒ
ã¯ãããCIã§ãšã©ãŒã«ã¢ããã°ã¬ãŒããã¢ãŒããšçµã¿åããããš*ããã¯åççãªæåã®ã¹ãããã ãšæããŸãïŒ
ïŒ*ããã¯ãŸã ååšããŸãããïŒ5773Yarn 2.0 WGã§èšåããŸãïŒ
@ arcanis-ããã¯ãã¡ã€ã«ã«ã€ããŠïŒ @zkatãåç
§ããŠããã®ã¯ïŒãã ããééã£ãŠããã誀解ããŠããå Žåã¯@zkatã§èšæ£ããŠãã ããïŒã package-lock.json
ã¯ç©çããªãŒãšè«çããªãŒãä¿åãã yarn.lock
ã¯è«çããªãŒã®ã¿ãä¿åããŸãã ãããã£ãŠãåè¿°ã®ããã«ã package-lock.json
=> yarn.lock
=> package-lock.json
ãå€æãããšãç©çããªãŒããŒã¿ã倱ãããŸãã ã»ãšãã©ã®å ŽåãIMOã¯åé¡ãããŸããããäŸå€ããããŸãã ãã³ãã«ãããäŸåé¢ä¿ã
ç§ã®å人çãªæèŠã§ã¯ãäž¡æ¹ã®ããã±ãŒãžãããŒãžã£ãŒã¯ãç©çããªãŒã®æ§ç¯ãåæããããšã§ã¡ãªãããåŸãããšãã§ããŸãã ç§ãèŠããã®ãããç©çããªãŒã®äœææ¹æ³ã«ã€ããŠæ確ã«å®çŸ©ãããã«ãŒã«ãããã€ãæœåºããäž¡æ¹ãšããããã«åŸãããšãã§ããŸãïŒçæ³çã«ã¯ãã¹ãŠã®å©å®³é¢ä¿è
ã«ãã£ãŠç¶æãããã¢ãžã¥ãŒã«ã䜿çšïŒã ããã«ãããäºææ§ã®åé¡ã解決ããããšæããŸãã yarn
ã¯ããã³ãã«ãããäŸåé¢ä¿ã«é¢ããããã€ãã®åé¡ããããŸãããåããã±ãŒãžãããŒãžã£ãŒã¯ç¬èªã®çãç¶æã§ããŸãã ïŒç¢ºãã«ãç§ã¯ãã®è°è«ã«ãŸã£ããæ
£ããŠããªãã®ã§ãç§ãæ°ä»ããŠããªãããšããããããããŸãã-ç ã£ãŠããç¬ãèµ·ãããŠããŸã£ãããè©«ã³ããŸãïŒã
ããããç®åã®åé¡ã«ã€ããŠã¯ã
ãããCIã¬ãã«ã§ãã£ããããããšã¯ç¢ºãã«éåžžã«éèŠã§ãããããã«ãããšã©ãŒã¯ãéçºè
ã®ããŒã«ã«ç°å¢ã§ã®ãšã©ãŒãããïŒå¹³åããŠïŒãããã°ããã®ãéåžžã«é£ãããšæããŸãã
éçºè
ãééã£ãããŒã«ã䜿çšããããã«ããŒã«ã«ç°å¢ã§ãšã©ãŒãçºçããå Žåãéçºè
ã¯ïŒããããïŒäžæ©ãå
ã«é²ãŸãªãã§ãããã 圌ãã¯ãã ããã£ãšããšèšã£ãŠãä»ã®ããŒã«ã䜿ãã§ãããã æ©èœãéçºããŠããããã¯ãã©ãã¯ããåŸãCIã§ãã£ãããã代ããã«ã倧å¹
ãªæéãç¯çŽã§ããŸãã
èŠåïŒããã§åè¿°ããããã«ïŒã¯ãçµäºã¹ããŒã¿ã¹ã0ã®å Žåãéçºè
ãç¡èŠããåŸåãããä»ã®ããªãã®æ°ã®èŠåã«é£²ã¿èŸŒãŸããå¯èœæ§ããããŸãã
ã©ãæããŸããïŒ
ãŸããäžèšã®ç¶æ³ã§ã¯ããå€éšãããã¯ãã¡ã€ã«ã¯åœç¶ã®ããšãªãã.gitignore
é
眮ãããå¯èœæ§ããããããCIã¯ããã«ã€ããŠç¥ãæ©äŒãããããŸããã ãŒãããããéçºè
ãšããŠãããŸããããã¯ç§ã®ããŒã«ã«ç°å¢ã«ããã€ãã®ãããŸããªèŠåãäžããŸãããããã¯CIãééããŸã-ããã¯ããããç§ã®åŽã®ããŒã«ã«ãªåé¡ã§ã-ããã
èŠåïŒããã§åè¿°ããããã«ïŒã¯ãçµäºã¹ããŒã¿ã¹ã0ã®å Žåãéçºè ãç¡èŠããåŸåãããä»ã®ããªãã®æ°ã®èŠåã«é£²ã¿èŸŒãŸããå¯èœæ§ããããŸãã
ç§ã®ãã€ã³ãã¯ãæ å ±ã«åºã¥ãã決å®ãäžãããã«ããŒã¿ãåéããæ¹æ³ã¯ãããã®ã®ããã®è¯å®ã¯ããŒã¿ã«è£ä»ããããŠããªããšããããšã§ãã ãã®æèã§ã¯ã人ã ã®ã¯ãŒã¯ãããŒãå£ãããæ ¹æ¬çãªãªãã·ã§ã³ãéžæããããšã¯ãç§ã«ã¯å°ãç¡é§ã§æœåšçã«æ害ã§ããããã«æãããŸãð
ãŸãããããã±ãŒãžãããŒãžã£ãŒã䜿ã£ãŠããã®ã§ãå¥ã®ããã±ãŒãžãããŒãžã£ãŒãè©ŠããŠã¿ããããšãããŠãŒã¶ãŒã¹ããŒãªãŒãèŠèœãšããŠãããšæããŸããããã¯ãããã±ãŒãžãããŒãžã£ãŒã®ã¡ã³ãããŒãšãŠãŒã¶ãŒã®äž¡æ¹ã«ãšã£ãŠéåžžã«éèŠã ãšæããŸãã 人ã ãYarnãããžã§ã¯ãããnpm6ãç°¡åã«è©Šãããšãã§ããªãã£ãå ŽåïŒãŸãã¯éã«ãnpmãããžã§ã¯ãããYarnãè©Šãããšãã§ããªãã£ãå ŽåïŒã¯çŽ æŽãããããšã§ã¯ãããŸããã
ç§ã®å人çãªæèŠã§ã¯ãäž¡æ¹ã®ããã±ãŒãžãããŒãžã£ãŒã¯ãç©çããªãŒã®æ§ç¯ãåæããããšã§ã¡ãªãããåŸãããšãã§ããŸãã
ããã¯å¥ã®ãããã¯ã§ãããç§ã¯åæããŸããã Yarnãnpmã§ãããšãã誀解ããããšæããŸãããããã¯æ£ãããããŸããã å°çšã®ã³ãã³ãã䜿çšããŠãããžã§ã¯ããå¥ã®ãããžã§ã¯ãã«ã€ã³ããŒããããå Žåã¯ãç§ããã¹ãŠã§ããããµãŒãããŒãã£åœ¢åŒããããã¯ãã¡ã€ã«ããµã€ã¬ã³ãã«å€æïŒãŸãã¯èªã¿åãïŒããããšã¯ãçœå®³ã®ã¬ã·ãã§ãã
ç§ã®ãã€ã³ãã¯ãæ å ±ã«åºã¥ãã決å®ãäžãããã«ããŒã¿ãåéããæ¹æ³ã¯ãããã®ã®ããã®è¯å®ã¯ããŒã¿ã«è£ä»ããããŠããªããšããããšã§ãã ãã®æèã§ã¯ã人ã ã®ã¯ãŒã¯ãããŒãå£ãããæ ¹æ¬çãªãªãã·ã§ã³ãéžæããããšã¯ãç§ã«ã¯å°ãç¡é§ã§æœåšçã«æ害ãªæ··ä¹±ã®ããã«æããŸã
True-ããŒã¿ã«è£ä»ããããŠããŸããã ç§ã¯ééããªãããã§æšæž¬ããŠããŸãïŒããã匷調ããªãã£ãå Žåã¯ç³ãèš³ãããŸããïŒã èŠåä¿®æ£ã®åŸåãææ¡ããããšã¯ã§ãããããããŸããããããããŠãŒã¶ãŒã«ãšã£ãŠã©ãã»ã©äŸ¿å©ã§ãããããããŠãã䟿å©ãªè§£æ±ºçããããã©ãããææ¡ããããšã¯ã§ããŸããã ããŒã¿ã«äŸåããŠããå ŽåããHerokuã®ãããã€ãšã©ãŒçã«ãŸã£ããå€åããªãã£ãã以å€ã«ãå æ¬çãªãšã©ãŒãœãªã¥ãŒã·ã§ã³ã«åããçµæã¯ãªããšæããŸãã
ç§ã¯ã人ã
ã®ã¯ãŒã¯ãããŒãå£ããªãããšãéåžžã«éèŠã§ããããšã«åæããŸãã ãã®ããããã®ç¶æ³ãéæšå¥šã§ããããšããŠãŒã¶ãŒã«èŠåããèŠåã®æèšã䜿çšããŠã 2.0.0
é倧ãªå€æŽãšããŠãšã©ãŒãææ¡ããŸããã ãŸãããã®åäœããªãŒããŒã©ã€ãããããã«--forceãŸãã¯configãã©ã¡ãŒã¿ãŒã®äœ¿çšãèš±å¯ã§ãããšæããŸãã ïŒããã¯ãä»ã®ããã±ãŒãžãããŒãžã£ãŒã®æžå¿µäºé
ãè©Šãããšã«ã察åŠãããšæããŸããïŒïŒ
ããã¯å¥ã®ãããã¯ã§ãããç§ã¯åæããŸããã Yarnãnpmã§ãããšãã誀解ããããšæããŸãããããã¯æ£ãããããŸããã å°çšã³ãã³ãã䜿çšããŠãããžã§ã¯ããå¥ã®ãããžã§ã¯ãã«ã€ã³ããŒããããå Žåã¯ãç§ã¯ããã§ãã¹ãŠã§ããããµãŒãããŒãã£åœ¢åŒããã®ããã¯ãã¡ã€ã«ã®ãµã€ã¬ã³ãå€æïŒãŸãã¯èªã¿åãïŒã¯çœå®³ã®ã¬ã·ãã§ã
ããã§ããªããéèŠãªæžå¿µãæèµ·ããŠãããšæããŸãã ããããããªããèšãããã«ãããã¯å¥ã®ãããã¯ã§ãããç§ã¯äŒè©±ãçãããããããŸããã ãã¶ããå¥ã®åé¡ã§ããã«ã€ããŠè°è«ããããšãã§ããŸããïŒ
ããã§ã®äŒè©±ã¯å°ãè±ç·ãããšæãã®ã§ãããã€ãã®èª¬æãšèŠçŽãä»ããŠæŽçããããšæããŸãã
yarn.lock
ãã¡ã€ã«ãšpackage-lock.json
ãã¡ã€ã«ã¯ã©ã¡ããç¹å®ã®ç®æšã念é ã«çœ®ããŠäœæãããŠãããç§ãèŠãéãããããã®ç®æšã¯å®å
šã«ã¯äžèŽããŠããŸããããããã€ãã®éè€ããããŸãããããã«åºã¥ããŠãäž¡æ¹ã®ãã©ãŒããããç¶æããããšã¯ãã€ãããŒã·ã§ã³ãšããŸããŸãªããŒãºã«å¯Ÿå¿ããããã«å®éã«éèŠã§ãããšæããŸãã å¿ èŠãªã®ã¯ãç¡æã®å®éšãå¯èœã«ããããã«ç¹å®ã®ããã±ãŒãžãããŒãžã£ãŒæŠç¥ãä»ã®ããã±ãŒãžãããŒãžã£ãŒã«èª²ãããšãªããããã±ãŒãžãããŒãžã£ãŒéã®ããŒã¿æ倱ãæå°éã«æããŠãããžã§ã¯ãã®ç§»æ€æ§ã確ä¿ããããšã§ãã
ä»ã®ããã¯ãã¡ã€ã«ã«å¯Ÿãã確èªãšèŠåãããã³é©åãªå€æãšãä¿åãããŠãããã®ãšå€±ãããŠãããã®ã«ã€ããŠã®æ確ãªã¡ãã»ãŒãžããããããã®åŽã®ãŠãŒã¶ãŒã«ãšã£ãŠå€§ããªäŸ¡å€ãšããŠèŠãããŸãã ãããã£ãŠããã®å·ã®ããã§ã®è³ªåã¯ãyarnãå®è¡ãããšãã«ãªããžããªã«ããã±ãŒãžããã¯ãã¡ã€ã«ããããŠãŒã¶ãŒã«ãšã£ãŠæé©ãªãããŒã¯
èªåå€æã¯æœåšçã«å±éºã§ãããæ¹æ³ãªãã§ã€ã³ã¹ããŒã«ã«å€±æãããšãç¹å®ã®äººã ãå·ã€ããå¯èœæ§ãããããã§ãã ããã±ãŒãžããã¯ãã¡ã€ã«ãæã€ããšãCIã¢ãŒãã§æå³ãããŠããããšãç¥ãããã«ãyarnã®æ§æãèšå®ããå¿ èŠãããã®ã¯ã©ãã§ããïŒ ããã¯éçºè ãã糞ãžã®åå³ã§ããããç§ã¯èªåãäœãããŠããã®ãç¥ã£ãŠããã®ã§ãççŸããç§ãå®ãããšããªãã§ãã ããããšèšã£ãŠããŸãã
èãïŒ
ããã±ãŒãžããã¯ãã¡ã€ã«ãæã€ããšãCIã¢ãŒãã§æå³ãããŠããããšãç¥ãããã«ãyarnã®æ§æãèšå®ããå¿ èŠãããã®ã¯ã©ãã§ããïŒ ããã¯éçºè ãã糞ãžã®åå³ã§ããããç§ã¯èªåãäœãããŠããã®ãç¥ã£ãŠããã®ã§ãççŸããç§ãå®ãããšããªãã§ãã ããããšèšã£ãŠããŸãã
@ BYK-ããã§ããã 1ã€è¿œå ãããšã @ arcanisãããã§äžåã«ç§ãçŽåŸãããã®ã§ãconfigãã©ã°ãèšå®ãããŠããªããšãã«éciã¢ãŒãã§èŠåãè¿œå ããã®ãè¯ããããããŸããã éçºè
ã¯ãããã·ã¥ããåã«CIãã«ãã倱æããå¯èœæ§ãããããšãç¥ãæ©äŒããããŸãïŒãŸãã package-lock.json
ã.gitignore
ããã®ãé²ãããïŒã
@imsnifãè¿°ã¹ãããã«@arcanis ïŒpkglockã«ã¯ãããªãŒã®è«çã¬ã€ã¢ãŠããšç©çã¬ã€ã¢ãŠãã®äž¡æ¹ãå«ãŸããŠããŸãã ããªãŒã®è«çããŒãžã§ã³ïŒéè€æé€ããç¯å²ãå«ãïŒã«åŸãããšã§ãã€ã³ã¹ããŒã«ãã€ã³ã¹ããŒã©ãŒããžãã¯ã®å®è¡ãªãã§yarn.lockãã¡ã¢ãªå ã«æ§ç¯ã§ããŸãã ãã ããªãŒã«ãã¯ã¢ãã:)
NPM 5ãªãªãŒã¹ããŒãããïŒ
ããã±ãŒãžãããŒãžã£ãŒéã®äºææ§ãç®çãšããæ°ããæšæºåãããããã¯ãã¡ã€ã«æ©èœïŒpackage-lock.jsonïŒ
NPMããŒã ã¯ãŠãããŒãµã«ãœãªã¥ãŒã·ã§ã³ãšããŠpackage-lock.json
ã宣äŒããŠããããã§ãã ãã®åã«å ããããšã¯ïŒæè¡çã«ïŒå¯èœã§ããïŒ
ç§ãææ¡ããã解決çã®1ã€ã¯ãããã§ã«ååšããå Žåã¯package-lock.json
ã®ã¿ã䜿çšãããããšã§ãã ãããåºæ¬çã«ãNPMãshrinkwrapããlockjsonãã¡ã€ã«ã«ã移è¡ãããæ¹æ³ã§ãã
NPMããŒã ã¯package-lock.jsonããŠãããŒãµã«ãœãªã¥ãŒã·ã§ã³ãšããŠå®£äŒããŠããããã§ãã ãã®åã«å ããããšã¯ïŒæè¡çã«ïŒå¯èœã§ããïŒ
ãã§ã«è°è«ããŸãããããŸã è°è«ããŠããªãå Žåã¯ãã¹ã¬ããã®æ®ãã®éšåã確èªããŠãã ããã ããã¯çæçã«ã¯èµ·ãããªãã§ãããã
ãããã±ãŒãžãããŒãžã£ãŒã䜿ã£ãŠããã®ã§ãå¥ã®ããã±ãŒãžãããŒãžã£ãŒãè©ŠããŠã¿ããããšãããŠãŒã¶ãŒã¹ããŒãªãŒãèŠèœãšããŠãããšæããŸãããããã¯é¢ä¿è å šå¡ã«ãšã£ãŠéåžžã«éèŠã ãšæããŸãã
ããã¯ããããé »ç¹ãªããšã§ã¯ãªããã³ã³ããã¹ãã®åãæ¿ãã§ãã å°ãåã«ã€ãŒã³ãéžãã ã®ã§ãããæ¯ãè¿ããŸããã§ããã ããã¯ãã¡ã€ã«ãååšããçç±ã®æ·±å»ãã®èåŸã«ããããã®éã¿ã眮ãæ¹ãè¯ããšæããŸãã ç¡èŠãããèŠåã§ã¯ãªãããªããã¢ãŠãã§ãããšã©ãŒã«ããŸãã 誰ããããã¯ãã¡ã€ã«ãã³ããããããšããããã¯çç±ããããŸãã
ç§ãã¡ã®çµ±èšã«ãããšãYarnãŠãŒã¶ãŒã®å€§å€æ°ãnpmã䜿çšããŠããŸãã æ··å_ãããžã§ã¯ã_ã¯äžè¬çã§ã¯ãããŸããããè€æ°ã®ãããžã§ã¯ãã«åãçµãã§ãã1人ã®äººããnpmã§ããå ŽåãšãYarnã§ããå ŽåããããŸãã åé¡ãããã«è€éã«ããŠããã®ã¯ãnpmãçŽæ¥å®è¡ããã¹ã¯ãªãããã€ã³ã¹ããŒã«ããããšã§ãã
ã€ãŒã³ã䜿ãããã®ã§ãããç§ãåãçµãã§ãããããžã§ã¯ãã®ã»ãšãã©ã«ã¯package-lock.json
ãã¡ã€ã«ãããããŸããã yarn.lock
ãã¡ã€ã«ãè¿œå ã§ããŸããã yarn import
ãé
ãããå£ããŠããŸãã çŸåšç§ã®
_only_ãªãã·ã§ã³ã¯ã糞ãæšãŠãŠnpmã«åãæ¿ããããšã§ãã
糞ã¯ã糞ã®ã¿ã®ãããžã§ã¯ãã®ããã«ç³žã®ã¿ã®éçºè ã«ãã£ãŠäœæãããŠããããšãç解ããŠããŸãã ããããç§ãã¡ã®æ®ãã®éšåã¯ã©ãã§ããïŒ
ãã@Spongman - yarn import
ã¯å£ããŠã¯ãããŸããã ããã§ã package-lock.json
ãã€ã³ããŒãã§ããããã«ãªããŸãã åé¡ãçºçããå Žåã¯ãç¥ãããã ããã
ïŒ6103ããŸãã
ã¡ãã£ãš@ Spongman-ç§ã¯åé¡ã«ã³ã¡ã³ãããŸããããã®ç¹å®ã®ã±ãŒã¹ã¯å£ããpackage-lock.json
ãåå
npmã¯ãã®package-lock.json
ãã¡ã€ã«ãåé¡ãªã䜿çšã§ããŸãã 糞ã¯ãã匟åæ§ãããå¿
èŠããããŸãã
ä»ã®åé¡ã§ããã«çããŸãã-ãã®åé¡ã話é¡ã«ä¿ã€ããã«ãè°è«ãããã«ç§»ããŠãã ããã ããããšãïŒ
ç§ã¯https://github.com/yarnpkg/yarn/issues/3614 ïŒçŸåš254ïŒ+1ïŒsïŒã泚ææ·±ãèŠãŠãåå ããŠããŸããã ãã®åé¡ã¯çŸåšã¯ããŒãºãããŠãããè°è«ã¯ããã«ç§»ãããŸããã
å®çšçãªèª²é¡ãç¡èŠãããšãç§ã®æèŠã§ã¯ãæé«ã®UXã¯ãäžéšã®èŠçŽã«ã¯èšèŒãããŠããªããã @ thatlittlegitã«ãã£ãŠèšåãããŠãããªãã·ã§ã³ã«ãã£ãŠæäŸãããŸãã
æçµçãªç®æšã¯ãYarnãšnpmã®éã§1ã€ã®ããã¯ãã¡ã€ã«åœ¢åŒãå ±æããããšã ãšæããŸãã
ããã@BrainBaconã®ãã€ã³ãã«ãã£ãŠããã¯ã¢ãããããŠããŸãïŒ
ã©ã®ãããªçš®é¡ã®ãããžã§ã¯ãã§ãã䜿çšããããã±ãŒãžç®¡çããŒã«ãæå®ããå¿ èŠãããã®ã¯å¥åŠã«æããŸãã
ç¹°ãè¿ãã«ãªããŸãããå®éã®èª²é¡ã1åéç¡èŠããŠãããã«å¯Ÿããçè«çãªåè«ã¯ããã®ã¹ã¬ããã®@iarna ïŒããã³ä»ã®ã¹ã¬ããã®@jhabidas ïŒã«ãã£ãŠè¡ãããŸããã
åäžã®äžè¬çãªãœãªã¥ãŒã·ã§ã³ããããŠãŒã¶ãŒã®ãŠãŒã¹ã±ãŒã¹ãããé©åã«æºããããšãã§ãããããããŸããŸãªãã¬ãŒããªããè¡ãè€æ°ã®ã¢ã¯ãã£ãã«äœ¿çšãããããŒã«ã䜿çšããããšã«ã¯ãå€ãã®å©ç¹ããããŸãã
å人çã«ã¯ãä»ã®ã¹ã¬ããïŒ95ïŒ+ 1ïŒsã2ïŒ-1ïŒsïŒã®
ã¯ããåæããŸããYarnã¯ãå¯èœãªéãç¬ç«ããã¹ããŒã¹ãç¶æãããã®ã§ãããè¯ããšã¯ã¹ããªãšã³ã¹ãæäŸããæè»æ§ããããŸãã ãã®ãããããšãã°ãYarnã®CLIã¯æå³çã«NPMãšäºææ§ããããŸããã
ãã ããããã¯ãã¡ã€ã«ã¯ãYarnãåççã«ç¬ç«æ§ãç¶æã§ããã¹ããŒã¹ã®å€ã«ãããšæããŸãã
package-lock.json
ãšcomposer.lock
ã¯ãpackage.json
ãšcomposer.json
ãšãšãã«ãªããžããªã«..ã
Yarnã䟿å©ãªããŒã«ã§ããããã«ã¯ãéçºè ãããââãžã§ã¯ãã§æšæºã¢ãã«ã«åŸãããšãã§ããããã«ããå¿ èŠããããŸããããã«ããããããžã§ã¯ãã¯ããŒã«ã«äŸåããªããªããŸãã çµå±ã®ãšãããYarnãç¬èªã®äŸåé¢ä¿ãã¡ã€ã«ã§ã¯ãªã
package.json
äžã«æ§ç¯ãããã®ã¯ãã®ããã§ãã
ãã®ã¹ã¬ããã®ã»ãšãã©ãèªãã åŸã§ããæåã®è©äŸ¡ã«åæããŸã-Yarnããªããžããªããåãpackage.json
äŸåé¢ä¿ãã¡ã€ã«ãæ¶è²»ãç¶ããå Žåãçæ³çã«ã¯åãpackage-lock.json
ãã¡ã€ã«ããªããžããªã«åºåããå¿
èŠããããŸãããªããžããªã¯ããŒã«ã«äŸåããªããŸãŸã«ããããšãã§ããŸãã Yarnãpackage.json
ã§ã¯ãªãyarn.json
ããäŸåé¢ä¿ãèªã¿åã£ãå Žåãç§ã¯ãã®ç¹ãææãç¶ããããšã¯ãããŸããã
ãããçæ³çãªç¶æ³ã§ãããã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã§ããããšãèªããã¹ãã ãšæããŸãã ããããç§ã¯@iarnaã®ä»ã®ãã€ã³ããç解ããŠããŸãïŒ
åäžã®ããã¯ãã¡ã€ã«åœ¢åŒã¯ãããã¯ãã¡ã€ã«åœ¢åŒéã«ããŸããŸãªãã¬ãŒããªãããããã©ã¡ããæé©ãã«ã€ããŠã®ã³ã³ã»ã³ãµã¹ããªããããèµ·ãããããªçµæã§ã¯ãªããšæããŸãã
ïŒãäž¡æ¹ã®ããŒã«ãäºãã®ããã¯ãã¡ã€ã«ãçžäºã«ç解ã§ããããšã§ååã§ããããšããããšã«åæããŸãããïŒã
ãªããžããªãããŒã«ã«äŸåããªãããã«ãããšããçæ³çãªã·ããªãªã確å®ã«éæã§ããªãå ŽåïŒãããŠãããŸããŸãªããã¯ãã¡ã€ã«ãåºæ¬çã«ããŸããŸãªæ¹æ³ã§æ§ç¯ãããããŸããŸãªæ å ±ãå«ãŸããŠããæ¹æ³ã«ã€ããŠå€ãã®ã³ã¡ã³ãããããŸãïŒãç§ãã¡ãã©ãã«åãã£ãŠããããã«èŠãããã¯ã»ãŒåãã§ãå£åœãããè¯ããããã¯ïŒ
ãããªãç¶æ³ã«ãããŠããçžæã®ããã¯ãã¡ã€ã«ãå€æããŠåé€ããã¹ãã§ã¯ãªããšæããŸãã ããã¯ãéçºè
ãããŸããŸäœ¿çšããããŒã«ã«å¿ããŠãæ°ããéçºè
ãæ°žé ã«äžæ¹ããä»æ¹ãžããããŠãã®éã«å€æããããšãæå³ããŸãïŒ git commit -a
ã³ããããã人ãå€ãããå ŽåïŒã
ç§ã@imsnifã®ãã€ã³ãã«åæããŸããïŒ
1ã€ã®ããã±ãŒãžã«package-lock.jsonãã¡ã€ã«ãšyarn.lockãã¡ã€ã«ã®äž¡æ¹ãå«ãŸããã®ã«ã¯ååãªçç±ã¯ãªããšæããŸãã
éçºè
ãèªåã®ã³ã³ãã¥ãŒã¿ãŒãŸãã¯å®çšŒåç°å¢ã§äœãå®è¡ããããæ瀺ããã®ã¯ãæããããªãããšã ãšæããŸãã å¿
èŠä»¥äžã«å¶éããªãããšã¯ãå°ãªããšã瀌åæ£ããããšã§ãã ãããžã§ã¯ããéçºè
ã®ããŒã ã«ãã£ãŠã®ã¿å®è¡ããããã¹ãŠã®éçºè
ããŸã£ããåããœãããŠã§ã¢ãå®è¡ããŠããå Žåã¯ããã°ãããããšã§ãã ããããäœããã®çç±ã§YarnãããNPMã®æ¹ãã¯ããã«äœ¿ãããããšæããéçºè
ããããããããŸããã ç¹ã«ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ãäœæããå Žåã¯ãã³ãã¥ããã£ã¡ã³ããŒãã§ããã ãç°¡åã«ç«ã¡äžããŠå®è¡ã§ããããã«ããå¿
èŠããããŸãã NPMãšYarnã¯ã package.json
ããåãäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããããã®åãªãããŒã«ã§ããããããããã¯æ£åžžã«æ©èœããã¯ãã§ãã éçºè
ã¯package.json
ãèŠãããšãã§ããããã解éããããã®ããŒã«ãæã£ãŠããå¿
èŠããããããã«å¿é
ããå¿
èŠã¯ãããŸããã ããã¯ããã®ããã¯ãã¡ã€ã«ã®ç«¶åãåç¬ã§çºçããåã®ã±ãŒã¹ã§ããã
ãã@ nottrobin-ç§ã¯ããªããã©ãããæ¥ãŠããã®ãç解ããŠãããšæããŸãã å®çšçãªèª²é¡ãšå²åŠçãªéããç¡èŠãããšãããŸããŸãªããŒã«ã®ãŠãŒã¶ãŒããã¹ãŠåãããã¯ãã¡ã€ã«ãæ¶è²»ããæ¹ãééããªãè¯ãã§ãããïŒãã¡ãããããã¯ç§ã®å人çãªæèŠã§ãïŒã
ããããåè¿°ã®å®éçãªèª²é¡ãç¡èŠããããšã¯ã§ãããå²åŠçãªéãããã®å Žæã«ããããšã«ã»ãšãã©åæããŠããããã«èŠããã®ã§ãç§ãã¡ãåŸã劥åæ¡ïŒäžèšã§æŠèª¬ãããã®ïŒã¯ééããªããååãã ãšæããŸãã
äžèšã®åŠ¥åæ¡ã«é ãããä»®å®ã¯ãããŒã«ã®éžæã¯éçºè ã®ãã·ã³ãæ¬çªç°å¢ã§ã¯ãªãããããžã§ã¯ãããšã«è¡ããããšããããšã§ãã
äžèšã®åŠ¥åæ¡ã«é ãããä»®å®ã¯ãããŒã«ã®éžæã¯éçºè ã®ãã·ã³ãæ¬çªç°å¢ã§ã¯ãªãããããžã§ã¯ãããšã«è¡ããããšããããšã§ãã
ã¯ãããããç§ã«ãšã£ãŠæãæžå¿µãããããšã ãšæããŸããäžèšã§æŠèª¬ããã·ããªãªã§ã¯ããããžã§ã¯ãã§YarnãšNPMã®äž¡æ¹ããµããŒãããããšã¯å¯èœã ãšæããŸãã
æçµçã«ã2ã€ã®ãããžã§ã¯ããããããžã§ã¯ããããŒã«ã«äŸåããªãããã«ãããšãã䜿åœãæŸæ£ããå Žåãå®éã«ã¯äŸåé¢ä¿ãã¡ã€ã«ã®å
±æãåæ¢ããå¿
èŠããããšæããŸãã 糞ã¯èªæžã«åãæ¿ããå¿
èŠããããŸãyarn.json
ã§ã¯ãªãpackage.json
ã ä»ã®ãã®ã¯ãã åä»ã§æ··ä¹±ããŸãã
npmããã¯ãã¡ã€ã«ã«Yarnããã¯ãã¡ã€ã«ããµããŒãããäŸåé¢ä¿ã®ã¹ãŒããŒã»ããããã§ã«ããå Žåã¯ãYarnã§äž¡æ¹ããµããŒãããªãã®ã¯ãªãã§ããïŒ Yarnã¯package.jsonã«åãæ¿ããããšãã§ããYarnãå¿ èŠãšããå¯èœæ§ã®ããè¿œå ãã£ãŒã«ããå°æ¥è¿œå ãããå¯èœæ§ããããŸãïŒInkscapeãªã©ã®äžéšã®SVGãšãã£ã¿ãŒããšãã£ã¿ãŒã¡ã¿ããŒã¿ã管çããæ¹æ³ãšåæ§ïŒã ãã®å ŽåãYarnã¯npmãšåãäŸåé¢ä¿åœ¢åŒãæã¡ãyarn.lockãšã®äžäœäºææ§ããããnpmããã¯ãã¡ã€ã«ãYarnãã¡ã¢ãªå ã§å¿ èŠãšããæ§é ã«å€æããŸãã
æçµçã«ã2ã€ã®ãããžã§ã¯ããããããžã§ã¯ããããŒã«ã«äŸåããªãããã«ãããšãã䜿åœãæŸæ£ããå Žåãå®éã«ã¯äŸåé¢ä¿ãã¡ã€ã«ã®å ±æãåæ¢ããå¿ èŠããããšæããŸãã 糞ã¯èªæžã«åãæ¿ããå¿ èŠããããŸã
yarn.json
ã§ã¯ãªãpackage.json
ã ä»ã®ãã®ã¯ãã åä»ã§æ··ä¹±ããŸãã
ãããããããã§ã¯ãªããããããŸããã 確ãã«ãããã«ã¯ããŒã«ïŒæ¯ç³žïŒã®å€§èŠæš¡ãªç Žå£å€æŽãå¿ èŠã«ãªããŸãã ããçŽæ¥çã§æž¬å®å¯èœãªå©çã䌎ããããã»ã©æ ¹æ¬çãªå€æŽã¯åãç¶ãããŠããŸããã
ç§ã¯ãããæªãèãã ãšèšã£ãŠããã®ã§ã¯ãªãããããå®çšçãªãã®ã ãšã¯æããªããšèšã£ãŠããã ãã§ãã
ç§ã¯ãããæªãèãã ãšèšã£ãŠããã®ã§ã¯ãªãããããå®çšçãªãã®ã ãšã¯æããªããšèšã£ãŠããã ãã§ãã
ç§ã¯ããã倧ããªè³ªåã®ããã«æãããããšã«åæããŸãã ããããç§ãèšã£ãŠããã®ã¯ãããã¯ãããžã§ã¯ãã«ãšã£ãŠæ¥µããŠéèŠãªåé¡ã®ããã«æããããšããããšã§ãã
ãããŸã§ãYarnã¯ãéçºè
ãNPMã®ä»£ããã«äœ¿çšããŠã package.json
ãããžã§ã¯ãã®ããŒãäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããããšãéžæã§ããããŒã«æ瀺çã«éžæããå¿
èŠããããŸãã ããã¯å€§ããªå€æŽã§ããã誀ã£ãŠè¡ãããã¹ãã§ã¯ãããŸããã ããã¯ããã®åŒã³åºããè¡ãããã®ã¯ã©ã³ããã€ã³ãã§ãã
ç§ã®èãã§ã¯ãåé²ããæ¹æ³ã¯3ã€ãããŸãã
yarn.json
ãšyarn.lock
ïŒã䜿çšããŠãæå³çã«NPMããåå²ããŸããããã§ã®3çªç®ã®ãªãã·ã§ã³ã¯ãããŒãã¹ããŒã¹å šäœãæ··ä¹±ãããäž¡æ¹ã®ããŒã«ãå€§å¹ ã«åŒ±äœåããããšæããŸãã
ããã§ãäžäœäºææ§ããããŸãã Yarnã«ã¯npmlockfileã³ã³ããŒã¿ãŒãçµã¿èŸŒãŸããŠããå¯èœæ§ããããããpackage-lock.jsonãæ€åºãããšãYarnã¯ããã«ä¿æãããã¡ã¢ãªå ã§yarn.lockã®åœ¢åŒã«å€æãããŸãã ç§ã®ç¥ãéããYarnã®ããã¯ãã¡ã€ã«ã¯npmãããæ å ±ãå°ãªããããnpmã¯ãããå®è¡ã§ããŸããããããã£ãŠãç§ã®æèŠã§ã¯ãYarnã¯npmã§æšæºåããã®ãæåã§ãã
@nottrobinãã ããåæã¯ã»ãŒæ£ãããšæããŸãã
ããŠããææã®ãšããããããžã§ã¯ãã§ã¯YarnãšNPMã®ã©ã¡ãããæ瀺çã«éžæããå¿ èŠããããŸãã ããã¯å€§ããªå€æŽã§ããã誀ã£ãŠè¡ãããã¹ãã§ã¯ãããŸããã
ããã¯åžžã«åœãŠã¯ãŸããšæããŸããå°ãªããšããYarnãæåã«ãããããšå®£äŒãããäž»ãªå©ç¹ã§ããäŸåé¢ä¿ããªãŒã®åçŸæ§ã«ã€ããŠã§ãã yarn.lock
ããã§ãã¯ã€ã³ã§ããŸãããä»ã®éçºè
ããã®ããã¯ãã¡ã€ã«ãå°éããã«äŸåé¢ä¿ãè¿œå /åé€ããå Žåãããã¯å®éã«ã¯åœ¹ã«ç«ã¡ãŸããã
@ nottrobin- @ Vinnlã«åæããŸãã åè¿°ããããã«ãã©ã®ããã«æ©èœãããã誰ãã«äŒããç«å Žã«ã¯ãªããããããŸããããåããããžã§ã¯ãã«äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããããã«yarnãšnpmã®äž¡æ¹ã䜿çšããããšã¯ã¢ã³ããã¿ãŒã³ã ãšæããŸãã
ã©ã¡ãã®ããŒã«ãæè¡çã«ã¯ãã®äœæ¥ãè¡ãããã«å€ãã®äœæ¥ãè¡ãããšãã§ããŸãããããã¯ã¡ã³ãããšããŠç§ãã¡ã奚å±ãã¹ãããšã§ã¯ãªããšæããŸãã 亀æå¯èœãªããã¯ãã¡ã€ã«ãæã€ããšã«ã¯ä»ã«ãç¡æ°ã®å©ç¹ããããŸãïŒããŸããŸãªã¹ã¬ããã§ã®ããŸããŸãªè°è«ã瀺ãããã«ïŒããå人çã«ã¯ããããããã®1ã€ã§ã¯ãªããšæããŸãã
ããããä»ã®éçºè ããã®ããã¯ãã¡ã€ã«ãå°éããã«äŸåé¢ä¿ãè¿œå /åé€ããå Žåãããã¯å®éã«ã¯åœ¹ã«ç«ã¡ãŸããã
ã¯ããç§ã¯ããçšåºŠã€ãŒã³ãæåãããã®æ³¥æ°Žã«ãã£ããšæããŸã- yarn.lock
ã®ååšã¯ããããéšåçã«ããèªèº«ã®ã€ã³ã¿ãŒãã§ãŒã¹ãæã£ãŠããããšããã§ã«æå³ããŠããŸããã ããã¯ãã€ãå°ãé¢åãªããšã ã£ããšæããŸããããã¯ã人ã
ã«NPMããYarnã«ç§»åããŠãããããããæ»ã£ãŠã¯ãããªããšããYarnã®ç®çãæãããŸããã
ããããå°ãªããšãNPMããŸã å®å šã«ãµããŒããããŠããããšãç¥ã£ãŠããã®ã§ããããžã§ã¯ãã®ææ決å®ãããå¿«é©ã«ãªã£ããšæããŸãããããããããã¯ãæäŸãããŠããªãã£ãããããã€ãã®ããã«æ©èœãç¶ããŸãã
NPMã¯äŸåé¢ä¿ãããã¯ããããããããå€æŽãããŸããã ãããžã§ã¯ããYarnã«ãã€ã³ãããããšãéžæããå Žåã package-lock.json
ã§ã¯ãªãã yarn.lock
ææ°ã®ç¶æ
ã«ä¿ã€ããã誰ããNPMãå¹æçã«äœ¿çšã§ãããšããã®ã¯ãã¯ãçå®ã§ã¯ãããŸãããäºæ¥ã
ã€ãŒã³ã¯ãã¯ãnpmã®ããããã€ã³ä»£æ¿åã§ã¯ãªããšèšã£ãŠããããã§ããã 糞ã®ã¿ã®ãããžã§ã¯ãã§ã®ã¿äœ¿çšãããããšã«ãªã£ãŠãããšããããšã§ããïŒ
ãã®å Žåã¯ãyarnã®ããŒã ããŒãžã§ãã®äºå®ãæ確ã«ããå¿ èŠããããŸããäž¡æ¹ã§ã¯ãªããthisãŸãã¯npmã䜿çšããŠãã ããã
ã€ãŒã³ã¯ãã¯ãnpmã®ããããã€ã³ä»£æ¿åã§ã¯ãªããšèšã£ãŠããããã§ããã
決ããŠããã§ã¯ãããŸããã§ããã ã€ã³ã¿ãŒãã§ãŒã¹ã¯ããŠãŒã¶ãŒãããã䜿çšããæ¹æ³ãç解ããããããããã«npmãããããæš¡å£ããŸããããæåããããã€ãã®ããšãç°ãªã£ãŠæ©èœããŸããã äžéšã®äººã ããããããããã€ã³ã®ä»£æ¿åã§ãããšèããäž»ãªçç±ã¯ãnpmãæ¯èŒããæ©èœãæ¬ ããŠããããšã§ããã
npmãããã€ãã®åŽé¢ã«è¿œãã€ããå¥ã®æ¹æ³ã§å®è£ ããããšã決å®ããã®ã§ãç°ãªãã¢ãããŒããšç°ãªã決å®ãè¡ãããšã瀺ãå§ããŸãïŒããšãã°ãæè¿å®è£ ããããªãã©ã€ã³ãã©ãŒæ©èœnpmã¯æ¢åã®ãã®ãšäºææ§ããããŸããïŒã ã€ãŸãããå®å šãã§ã¯ãªããå¶ç¶ã«æ©èœããã ãã§ãã
ãã®å Žåã¯ãyarnã®ããŒã ããŒãžã§ãã®äºå®ãæ確ã«ããå¿ èŠããããŸããäž¡æ¹ã§ã¯ãªããthisãŸãã¯npmã䜿çšããŠãã ããã
å®éã®ãšããã移è¡æé ã¯ãããŸãã ããªãã®çºèšã¯ãæ®å¿µãªããã人ã ã«ééã£ãå°è±¡ãäžããå¯èœæ§ã®ãŠããããšã«æ°ã¥ããŸããðç§ãã¡ã¯ããã®æ®µèœãç§ãã¡ã®æšå¥šã«æ²¿ã£ããã®ã«å€æŽããããã®PRãåãã§åãå ¥ããŸãïŒã€ãŸããããŒã éã§äžè²«ããŠYarnã䜿çšããããã«ãããžã§ã¯ãã§äœ¿çšãããå¯èœæ§ã®ããããŸããŸãªæ©èœããã¹ãŠã®äººãå©çšã§ããããã«ããããïŒã
ããã¯æ±ºããŠãããŸããã§ãã
ããŒãš...ããªãã¯ããªãã®ããŒã±ãã£ã³ã°æ åœè ãšè©±ãå¿ èŠããããŸãã https://yarnpkg.com/lang/en/docs/
Yarnã¯ãããã±ãŒãžã¡ã¿ããŒã¿åœ¢åŒãå«ãnpmã®å€ãã®æ©èœãšçŽæ¥çžäºéçšããç°¡åãªç§»è¡ãå¯èœã«ããŸãã
ããŒã±ãã£ã³ã°æ åœè ã¯ããŸããããçŽ æµãªPRãåãå ¥ããŠããŸãð
ãã®ç¹å®ã®ã±ãŒã¹ã§ã¯ãããã¯ããã»ã©ééã£ãŠããããã«ã¯èãããŸãããã ç§ãã¡ã¯å€ãã®æ©èœãšçžäºéçšããŸããããã¹ãŠã§ã¯ãããŸãããã»ãšãã©ã®å Žåã移è¡ã¯ç°¡åã§ãïŒææªã®å Žåã yarn import
é¢ããŠããŸãïŒã
移è¡ã¯ç¡çã§ã
移è¡ã«ã¯ããŸãèå³ããããŸããã ç§ã¯ããã§çŽæããããã®ãæ¢ããŠããŸãïŒãããã®äººã¯_ééããªã_ããŒã±ãã£ã³ã°æ åœè ãããŸãïŒïŒ https ïŒ//code.fb.com/web/yarn-a-new-package-manager-for-javascript/
æ¢åã®ã¯ãŒã¯ãããŒãšåãæ©èœã»ãããåããªãããããéããããå®å šã«ããã確å®ã«åäœããŸãã
ä»æ¥ã®ç³žã¯ããã§ã¯ãããŸããã
AFAICTããã«ã¯4ã€ã®ã¯ã©ã¹ã®ãŠãŒã¶ãŒãããŸãã
ç§ã¯æ¬åœã«æåŸã®ã«ããŽãªãŒã«ãªããããããŸããããããã¯ç§ãããã·ã¥ãããŠãããšããã®ããã§ãã
@Spongmanäœãããªãããã®æåŸã®ãã®ããæ¢ããŠããã®ã§ããïŒ ç§ãã¡ã¯ãããããããä¿®æ£ããããšãã§ããŸã;ïŒ
@Spongmanç§ã¯
ïŒããããããã°æçš¿ãç·šéããããšã¯ã§ããªããšæããŸãããããã§ã¯ããããWebãµã€ããæãéèŠã§ããïŒ
@imsnifãš@arcanisã®åçãããããã§ã®å ¬åŒã®èŠè§£ã¯ãYarnãNPMãšã·ãŒã ã¬ã¹ã«é£æºãç¶ããããšããæå³ããŠããªãã£ããããã«æãããããšã
ããããç§ã¯@Spongmanã«å®å šã«åæã
ãããã®å Žåãããã®åé¡ã«ãããããã«å¯ŸããYarnã®ç«å Žã以åãããã¯ããã«æ確ã«ãªããŸãããã¡ãããYarnã®ã¡ã³ããã¯ãéžæããæ¹åã«ãããéžæã§ããŸãã
ããããYarnãïŒãããžã§ã¯ãã¬ãã«ã§ïŒNPMãšã®äºææ§ãç¶æããŠãããšä¿¡ããŠããããã«ãYarnã䜿çšãã人ã®æ°ãå€§å¹ ã«éå°è©äŸ¡ããŠãããšæããŸãããã以å€ã®å Žåã¯ãåãæ¿ããè¡ãããšã¯ãããŸããã§ããã https://github.com/yarnpkg/yarn/issues/3614ã®254ïŒ+ 1ïŒsãš10ïŒ heartïŒs ãããã³ã yarn.lockãšpackage-lock.jsonãã³ãããããå¿ èŠããããã«é¢ãã57ã®è³æ
Yarnããã®é¢ã§è²¬ä»»ãæŸæ£ããå Žåã @ Spongmanãšç§ã®ããŒã ã ãã§ãªããä»ã®å€ãã®ããŒã ã倱ãããšã«ãªããšæããŸãã
ççŽã«èšã£ãŠãYarnã®ã¿ããŸãã¯npmã®ã¿ã䜿çšããå Žåã®åé¡ãæ¬åœã«ç解ããŠããŸããã ããªããèšã£ãŠããã®ã¯ãåºæ¬çã«ãããŒã ã«Yarnã®äœ¿çšã匷å¶ããããšã¯ã§ããªãã®ã§ãnpmã®äœ¿çšã匷å¶ããããšããããšã§ãã ããã¯ç§ã«ã¯æå³ããããŸããã Yarnã®æ©èœã䜿çšããå Žåã¯ãå šå¡ã«Yarnã䜿çšãããnpmæ©èœã䜿çšããå Žåã¯ãå šå¡ã«npmã䜿çšãããŸãã ãããšåããããç°¡åã§ãã
äžéã«ãããšããããšã¯ãå°ãªããšãããã«ããããŒã å šäœã§äžè²«ããŠããªãããšãæå³ããŸããããã¯ãåè¿°ã®ããã«ãYarnã®åæã«åããŸãã ãšã³ãžãã¢ã®1人ãã¯ãŒã¯ã¹ããŒã¹ã®äœ¿çšãéå§ã§ããããã¯æ©èœããŸãããnpmã§æ©èœããªããªããŸãã ãªãã©ã€ã³ãã©ãŒãåãã§ãã äŸåé¢ä¿ã®è§£æ±ºã«ã€ããŠãåãã§ãã ããã«æªãããšã«ãäžéšã®ãã£ãŒã«ãã¯npmã«ãã£ãŠå®å šã«äžæã§ãããããé»ã£ãŠééã£ãããšãããŸãã
ã³ãã¥ãã±ãŒã·ã§ã³ã«é¢ããŠã¯ãfbã®ããã°æçš¿ã¯ããããã€ã³ã®çœ®ãæãã«ã€ããŠèšåããŠããŸããã 糞ã玹ä»ãããŠããéšåãåŒçšãããŠãã ããã æåéããã¯ãŒã¯ãããŒã«åã£ãŠä»£ãããšèšã£ãŠããŸãã ãnpmã¬ãžã¹ããªãšã®äºææ§ãç¶æãããããšã«æ··ä¹±ãããšæããŸããããã¯ãç§ãã¡ã§ã¯ãªããnpmã«æã£ãŠããã¹ãå ¬æ£ãªãã€ã³ãã§ãïŒnpm cliãnpmã¬ãžã¹ããªããããŠãã¡ããnpm IncèªäœããããŸãïŒã
Yarnã¯ãnpmã¬ãžã¹ããªãšã®äºææ§ãç¶æããªãããnpmã¯ã©ã€ã¢ã³ããŸãã¯ä»ã®ããã±ãŒãžãããŒãžã£ãŒã®æ¢åã®ã¯ãŒã¯ãããŒã眮ãæããæ°ããããã±ãŒãžãããŒãžã£ãŒã§ãã
ãã®æåŸã®ãã®ããããªããæ¢ããŠããã®ã¯äœã§ããïŒ ç§ãã¡ã¯ãããããããä¿®æ£ããããšãã§ããŸã;ïŒ
@zkatãããããé¡ãããŸããããããšãããããŸãã
@ nottrobin-åœæç§ã¯åšãã«ããªãã£ãã®ã§ãç§ã¯ç³žã®æ¬æ¥ã®æå³ã«ã€ããŠè©±ãããšãã§ããŸããã ããããç§ã¯æ°åã®ãªããžããªãããæ··åã€ãŒã³/ npmç°å¢ã§äœæ¥ããŠããŸããã
åœæé¢ä¿ãããã¹ãŠã®éçºè ã«ãšã£ãŠãyarn / npmã®éžæã¯ãexpress / hapiãmobx / reduxãªã©ã®éžæãšåãããã«ããªããžããªããšã®éžæã§ãã£ãããšã¯å®å šã«æããã§ãããããã¯ã npmãšããŠããã«æ確ã«ãªããŸããã
éçºè ãééã£ãããŒã«ã䜿çšããŠäŸåé¢ä¿ãã€ã³ã¹ããŒã«ãããšããã®äŸåé¢ä¿ãäžè²«ããŠããã¯ãããªãããã npm @ 5ã®åã§ãæ··ä¹±ãçããŸãã ããã¯ç§ãã¡ã®ããŸããŸãªç°å¢ã§åé¡ãåŒãèµ·ããããããééãã§ããããšãé¢ä¿è å šå¡ã«éåžžã«æçœã§ãã*ã
ããã¯çŽãããããããããŸããããããŠãããããã¹ãŠã®äººã«100ïŒ æ確ã§ãããšã¯éããªãããšã¯ç解ããŠããŸããããã®èª€è§£ã«åãããã«ããŒã«ãå€§å¹ ã«å€æŽããã®ã¯æ£ãããšã¯æããŸããã ç§ã®èŠæ¹ã§ã¯ãyarnã¯ãããã¯ã¹ããšã§ã¯ãªãããªããžããªããšã«npmã®ä»£ããã«ãããããããŸãã
*確ãã«ãæ··åã€ãŒã³/ npmããŒã«ã䜿çšããè€æ°ã®éã¯ãŒã¯ã¹ããŒã¹ãªããžããªã®ç¹å®ã®ç¶æ³ã¯ããŸãã«ãããã®ééãã®å¯èœæ§ã«å¯Ÿããæè¡ã¬ãã«ã§ã¯ãªãã人éã¬ãã«ã§ã¯çæ³çã§ã¯ãªããæçµçã«ä¿®æ£ãããŸããã ããã§ã¯ãã®äŸã䜿çšããŠãæ£ããã¢ãããŒãããã°2ã€ã®ããŒã«ã䞊è¡ããŠæ©èœããããšã瀺ããŸãã
ççŽã«èšã£ãŠãYarnã®ã¿ããŸãã¯npmã®ã¿ã䜿çšããå Žåã®åé¡ãæ¬åœã«ç解ããŠããŸããã
ã¯ãã @ arcanisãš@imsnifã¯ããªããç解ããŠããªãããšãæããã«ããŸããã ç§ãææããŠããå¯äžã®ãã€ã³ãã¯ãå€ãã®äººïŒïŒ+ 1ïŒsãèŠãŠãã ããïŒãåãã誀ã解éãè¡ãããããç解ããŠãããã©ããã«é¢ä¿ãªããYarnãNPMãšäžç·ã«æ©èœããããšãæãã§ãããšããããšã§ãã 糞ãç§ãã¡ã®ããã®ããŒã«ã§ã¯ãªãå Žåã¯ãããã§ãã
ïŒæåŸã®ãã€ã³ãã¯ã @ imsnifã§ãããŒãã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããããã®ããŒã«ããexpressãšhapiãmobxãšreduxãªã©ã®ãããžã§ã¯ãã®éžæãšæ¯èŒããã®ã¯ãŸã£ããã°ãããŠããŸãããããã¯ã¢ããªã®åºæ¬çãªç¹åŸŽã§ããæãããªéããããããªãå Žåã¯ãããªããç§ã®äž»åŒµãç解ããŠããªãã®ãäžæè°ã§ã¯ãããŸãããïŒ
ãšã«ãããç§ã¯ä»çµãããŸããã ç§ã¯ã§ããéãèªåã®äž»åŒµããããšæããŸãã
ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®å ŽåããããŒã ãã«yarnãŸãã¯npmã®äœ¿çšã匷å¶ããããšã¯æ±ºããŠåé¡ã§ã¯ãããŸããã ããã¯èª°ã«ãšã£ãŠãæã䟿å©ãªãã®ã®åé¡ã§ãã çŸå®ã®äžçã§ã¯npmãçæ§ãªã®ã§ãnpmã®äžçã§ç³žãããŸãæ©èœããªãéããããã¯æ»ãã§ããŸããŸãã
^ãã
ããã誀解ã ãšæããŸãã éå»1幎éã§ãYarnã¯npmã¬ãžã¹ããªãžã®ãªã¯ãšã¹ãã®ç·æ°ã®20ïŒ ãã4æã«ã¯
ç®åã®ãããã¯ã«æ»ãããšãã§ããã°å¹žãã§ããã€ãŸããã€ã³ã¹ããŒã«æã«package-lock.json
ãã¡ã€ã«ãæ€åºãããšãã«ãèŠåãæžã蟌ãããã«PRãäœæããã®ã¯èª°ã§ããã ããããšãã
Psstã @ arcanis - httpsïŒ//github.com/yarnpkg/yarn/pull/5920
çŽ æŽãããïŒheart_eyesïŒ
ãããšyarn import
ã§ã®äœæ¥ã®éã«ããã®åé¡ã解決ã§ããŸããïŒ
@jmorrellãããããHerokuã®åé¡ã«ã©ã®ããã«åœ±é¿ãããã«ã€ããŠã®çµ±èšãæäŸããã®ãåŸ ã£ãŠãããã§ååããäœãïŒèŠå/ãšã©ãŒãªã©ïŒãå€æŽãããããå€æã§ãããšæããŸããã
ç·šéïŒèŠåã¯ãŸã ãªãªãŒã¹ãããŠããªãã®ã§ããŸã åŸ ã€æéããããŸãã
ããã誀解ã ãšæããŸãã
ã©ãããŠïŒ npmã®ãã©ãã£ãã¯éã¯ããããžã§ã¯ãããªãŒãã³ãœãŒã¹ã§ãããã©ããã«ã€ããŠã¯äœãæããŠãããŸããã
ããæ£ç¢ºãªè©äŸ¡ã¯ãã©ã®githubãããžã§ã¯ãã«0ã1ããŸãã¯2ã®ïŒyarn.lockãpackage-lock.jsonïŒãããããæ°ããããšã§ãã å人çã«ã¯ãyarn.lockãã¡ã€ã«ãš_no_ package-lock.jsonïŒæãããªãã®ãé€ãïŒãæã€githubã§ïŒããªãã®ãµã€ãºã®ïŒãªãŒãã³ãœãŒã¹ãããžã§ã¯ããèŠãããšããããŸããã
å¥ã ã®ããã¯ãã¡ã€ã«ãä¿æããå Žåã¯ãIMOã䜿çšãããšãäž¡æ¹ã®ããã±ãŒãžãããŒãžã£ãŒãä»æ¹ã®ããã¯ãã¡ã€ã«ãšãšã©ãŒïŒãããããªãŒããŒã©ã€ããã©ã°ã䜿çšïŒãæ€åºããå¿ èŠããããŸãã
ãã¹ãŠ-ç§ãã¡ã¯ãããã¯ã«ãšã©ãŸããçŽæ¥é¢ä¿ã®ãªãã³ã¡ã³ãããªãã©ã€ã³ã«ããããšããé¡ãããŸãïŒäŸïŒDiscordãã£ã³ãã«ïŒã ãã®ã¹ã¬ããã賌èªããŠãã人ã¯ããããããŸãããå ¬å¹³ãæãããã«ãnpm <> yarnã®è°è«ã¯ããã«ã¯å±ããŠããªãããã«æããŸãã ããããšãïŒ
ãã¬ããå šäœãèªãã ããšã¯ãããŸããããå°ãªããšããããŸãããããããšãIHMOãŠãŒã¶ãŒã«éç¥ããå¿ èŠããããŸãã
npmãyarn.lockãã¡ã€ã«ãæ€åºããå Žåãnpmã¯æ¬¡ã®ããã«åºåããå¿
èŠããããŸãã
ãèŠåïŒãã®ãããžã§ã¯ãã¯yarnã䜿çšããŠããããã§ããããããããnpminstallãã®ä»£ããã«ãyarnãã䜿çšããå¿
èŠããããŸãã
ã€ãŒã³ãpackage-lock.jsonãã¡ã€ã«ãåç
§ããå Žåãã€ãŒã³ã¯æ¬¡ã®ããã«åºåããå¿
èŠããããŸãã
ãèŠåïŒãã®ãããžã§ã¯ãã¯npmã䜿çšããŠããããã§ããããããããyarnãã®ä»£ããã«ãnpminstallãã䜿çšããå¿
èŠããããŸãã
ãããŠãäžã§ç€ºåããããã«ãïŒpackage.jsonå ã®ïŒããã±ãŒãžãããŒãžã£ãŒããåªå ãããæ¹æ³ã
åœæé¢ä¿ãããã¹ãŠã®éçºè ã«ãšã£ãŠãyarn / npmã®éžæã¯ãexpress / hapiãmobx / reduxãªã©ã®éžæãšåãããã«ããªããžããªããšã®éžæã§ãã£ãããšã¯å®å šã«æããã ã£ããšèšããŸãã
ããã¯ç§ã«ã¯ãŸã£ããããããŸããã§ããã ãããŸã§ã¯ãéçºè ããŒã«ã«ã®éžæã ãšæã£ãŠããŸãããè€æ°ã®éçºè ã¯ã奜ããªãªããžããªã䜿çšããŠ1ã€ã®ãªããžããªã«å ±åã§ããŸããããäžè²«ããŠ1ã€ã ãã䜿çšããæ¹ã_ããå°ã䟿å©ã§ã_ã ããããexpress / hapiãªã©ã®äŸã¯è¯ããã®ã§ããããããéžæã§ã¯ãªãããšãæ確ã«ããŠããŸãã ããã«ãããããå€ãã®å¯èŠæ§ãåŸãããã¯ãã§ãã
package.jsonã«ãã£ãŒã«ããè¿œå ããŠããããžã§ã¯ãã§äœ¿çšããããã±ãŒãžãããŒãžã£ãŒãæå®ããŸã
"package-manager": "yarn"
ãã¹ãŠã®ããã±ãŒãžãããŒãžã£ãŒã«å®è£ ãããŠããå Žåã¯ããããæåã®è§£æ±ºçã ãšæããŸãã
ããã±ãŒãžãããŒãžã£ãŒã¯ãreduxãå¿ èŠãªå Žåã«ãšã©ãŒãçºçããã®ãšåãããã«ãééã£ããããžã§ã¯ãã§åŒã³åºãããå Žåã¯ç¶è¡ã100ïŒ æåŠããå¿ èŠããããŸããããã®ãããžã§ã¯ãã§mobxé¢æ°ãåŒã³åºãããšããŸããã èŠåã§ã¯ãªããšã©ãŒãçºè¡ããæ£ããããã±ãŒãžãããŒãžã£ãŒã䜿çšããæ¹æ³ããŠãŒã¶ãŒã«éç¥ããå¿ èŠããããŸãã
package.jsonã«ãã£ãŒã«ããè¿œå ããŠããããžã§ã¯ãã§äœ¿çšããããã±ãŒãžãããŒãžã£ãŒãæå®ããŸã
"package-manager": "yarn"
ãã¹ãŠã®ããã±ãŒãžãããŒãžã£ãŒã«å®è£ ãããŠããå Žåã¯ããããæåã®è§£æ±ºçã ãšæããŸãã
npmã«ãããæ€èšããŠãããããå Žåã¯ãé©åãªå Žæã§ãã£ã¹ã«ãã·ã§ã³ãéãããšããå§ãããŸãããç§ã¯ãã®æ¹åæ§ãæ°ã«å ¥ããªããšèšããŸãã ããã±ãŒãžãããŒãžã£ãŒéã®åæãçºæ£ã§ã¯ãªãããšãæãã§ããŸãã
ããã€ãã®æ°ãããããã±ãŒãžãããŒãžã£ãŒããã£ãŒã«ãã«å¯ŸããŠæšå¥šããŸãã代ããã«ããã§ã«å
è¡æè¡ãæã£ãŠããæ¢åã®engines
ã¹ã¿ã³ã¶ãæšå¥šããŸãã
ã€ãŒã³ãšnpmã®ããã¥ã¡ã³ãã¯ã©ã¡ããã䜿çšãäºæ³ãããããããã®ããŒãžã§ã³ãæå®ããããã«ã engines.npm
ãšengines.yarn
䜿çšæ³ã«ã€ããŠèšåããŠããŸãã 糞ã®ããŒãžã§ã³ãengines.yarn
æºãããªãå Žåã糞ã¯ãšã©ãŒã«ãªããŸãã
https://yarnpkg.com/en/docs/package-json#engines-
https://docs.npmjs.com/files/package.json#engines
npmãyarnãã競åããããããŒãžã£ãŒã®engines
ããã§ãã¯ããªãå Žåã§ãïŒããã¯çŽ æŽãããããšã§ãïŒããã®ãã£ãŒã«ãã䜿çšããããšã¯ãã©ã®ãããŒãžã£ãŒã䜿çšããããšäºæ³ãããããä»ã®éçºè
ã«äŒããããã®åªããæ¹æ³ã§ãã ïŒpackage-lock.jsonãŸãã¯yarn.lockã®ååšãæããããšããŠååã§ãªãå ŽåïŒ
ããã±ãŒãžãããŒãžã£ãŒéã®åæãçºæ£ã§ã¯ãªãããšãæãã§ããŸãã
åæããŸããã åæãŸãã¯æåŠã®ããããã
ããããçŸåšã®ãããŸãã§èª€ã£ãäžéç¹ã¯æ害ã§ãã
ä»ã®äººã®ããã¯ãã¡ã€ã«ã®ååšäžã§ãšã©ãŒãã¹ããŒããã ãã§ãæ¢åã®ãããžã§ã¯ãã®æ©æŠãæå°éã«ãªããšç§ã¯ãŸã èããŠããŸãã
npmã«ãããæ€èšããŠãããããå Žåã¯ãé©åãªå Žæã§ãã£ã¹ã«ãã·ã§ã³ãéãããšããå§ãããŸã
ããããšãããµã€ã³ã¢ããããŸããã ãã®æ¹åã«æè¿ã®ã¹ã¬ããããããŸãïŒ //npm.community/t/npm-install-should-warn-about-the-presence-of-yarn-lock-files/1822
ç§ã®æ祚ã¯ãèŠåã ãã§ãªãçµæ¢ç¬Šããšã©ãŒã«ããããšã§ãããã®ãããæ°ããã¹ã¬ãããéå§ããã¹ã¬ããã«è¿œå ããå¿ èŠããããã©ããã¯ããããŸããã
ããã±ãŒãžãããŒãžã£ãŒéã®åæãçºæ£ã§ã¯ãªãããšãæãã§ããŸãã
ãã£ã¡ãäžç·ã ãããã¯çŸåšäºææ§ããããŸãããããã®ãããçžéã¯ãã§ã«çºçããŠããããã§ã«å€ãã®ãŠãŒã¶ãŒããããžã§ã¯ãã«æ©æŠãåŒãèµ·ãããŠããŸãã
ããŒã éã®ãããªã話ãåãããåŸãããåæãäœã§ãããæéããããã§ãããã ãããå°çãããšãææ¡ããããšã©ãŒãåãé€ãããšãã§ãããŠãŒã¶ãŒã¯ç°¡åã«ããã±ãŒãžãããŒãžã£ãŒã®åãæ¿ããšæ··åãéå§ã§ããŸãã
ãšã©ãŒãè¿œå ããããšã§ããããªãæ··ä¹±ãåé¿ããåæã®æ¹åãžã®åãçµã¿ãåæ¢ããŸããã
ããã€ãã®æ°ãããããã±ãŒãžãããŒãžã£ãŒããã£ãŒã«ãã«å¯ŸããŠæšå¥šããŸãã代ããã«ããã§ã«å è¡æè¡ãæã£ãŠããæ¢åã®ãšã³ãžã³ã¹ã¿ã³ã¶ãæšå¥šããŸãã
ããã¯åççã«èãããŸãã ç§ã¯ãäºææ§ã®ãªãããã±ãŒãžãããŒãžã£ãŒã®ååšãæ€åºããç¹å®ã®æ¹æ³ã«å·çããŠããŸããã
説æãè¿œå ããããã«ãç¹ã«ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯gatsbyjsã§ãã ç¶æ³ã¯ã @ gaearonãããã§å ±åãããã®ãšãŸã£ããåã
React AppãŠãŒã¶ãŒãäœæããã«ã¯ããããžã§ã¯ããYarnã§äœæãããããïŒYarnãã·ã¹ãã ã«ååšããå ŽåïŒãããã¯éåžžã«æ··ä¹±ããŸãããnpm installãæ瀺ããã©ã€ãã©ãªã®ããã¥ã¡ã³ãã«åŸããããªãŒå šäœãå¹ãé£ã°ãããŸãã
ãã®åé¡ãåé¿ããããã«ãgatsbyã¯yarnã䜿çšããŸãããpackage-lock.json
ãè¿œå ããŸãã ãããããã®åŸããŠãŒã¶ãŒã¯äž¡æ¹ã®ããã¯ãã¡ã€ã«ã䜿çšããããšã«ãªããèŠåã衚瀺ãããããã«ãªããŸãã ãããã®1ã€ãåé€ããã®ã¯ç°¡åã§ããããªã³ããŒãã£ã³ã°ãšã¯ã¹ããªãšã³ã¹ãæ··ä¹±ããŸãã
ãæèŠããããšãããããŸãã
@ jmorrell - httpsïŒ//github.com/yarnpkg/yarn/pull/5920ã¯7æ25æ¥ã«1.9.2
ã§ãªãªãŒã¹ãããŸããã1ãæã¡ãã£ãšçµã¡ãŸããããããã»ã©æéã¯ããããªãããšã¯ããã£ãŠããŸãïŒç¢ºãã«ããã§ã¯ãããŸããïŒã誰ããã¢ããã°ã¬ãŒãããŸããïŒ-ãããããã以æ¥ãHerokuã§ã®ããã«ããã¯ãã¡ã€ã«ãšã©ãŒã«é¢ããŠå
±æã§ããæŽå¯ããããŸããïŒ
@imsnifã¡ãŒã«ãªãã€ã³ããŒãããããšãïŒ ããã§ã¢ããããŒããèŠéããŠãã¿ãŸããã
ããã¯ã2018幎ã«æ¯é±ãã®ç¹å®ã®é害ãçºçããã¢ããªã®æ°ã®ã°ã©ãã§ãã
ïŒç§ã¯yã¹ã±ãŒã«ãç·šéããŸããããããã¯æ°çŸäººã®éçºè ãè¡šããŠãããåŸåã瀺ããŠããŸãïŒ
7æã®èœã¡èŸŒã¿ã¯ãS3ãšã¯ç¡é¢ä¿ã®åé¡ã«ãããã®ã§ãã
7æ25æ¥ä»¥éã®åŸåãèŠããšããã®èŠåã¯ãã®ãšã©ãŒãçµéšããŠãã人ã ã®æ°ã«å€§ããªåœ±é¿ãäžããããã§ãã ã·ããã®å€§ããã«å°ãé©ããŠããŸãã
@ jmorrell-ããã¯æ¬åœã«çŽ æŽãããã§ãïŒ
ç§ãããã«ããªãé©ããŠããããšãèªããŸãã
ïŒç³žåŽã§ã¯ïŒãã®åé¡ã¯è§£æ±ºãããšèããããŸãã åæããŸããïŒ
ãšã©ãŒãä¿®æ£ããããã«package-lock.json
ãåé€ãããšããã¢ããã€ã¹ã¯èª€è§£ãæããšæããŸããããã«ãããäžè¬ã«ç°ãªãããã±ãŒãžããŒãžã§ã³ã®ã»ããã䜿çšãããïŒäžè¬ã«ïŒéäºææ§ãšç ŽæãçºçããŸãã ãŸãããã®ã¢ããã€ã¹ã¯ããããžã§ã¯ãã䜿çšããŠããããã±ãŒãžãããŒãžã£ãŒã決å®ãã人ã«ã®ã¿åœ¹ç«ã¡ãŸãã ãã®ã¢ããã€ã¹ã«åŸãäžè¬çãªè²¢ç®è
ãåé¡ã«ã¶ã€ããã§ãããã
IMOãpackage-lock.json
ãååšãã yarn
ãã€ã³ã¹ããŒã«ããããŒãžã§ã³ãã npm
ãã€ã³ã¹ããŒã«ããããŒãžã§ã³ãšåãã§ããããšãä¿èšŒã§ããªãå Žåããšã©ãŒã§å€±æããã¯ãã§ãã
@Spongmanã«ãå ¥åããã ãããããšãããããŸãã ããã¯ãã¹ãŠãäžèšã®ïŒéåžžã«é·ãïŒã¹ã¬ããã§ååã«è°è«ãããŠãããšæããŸãããŸããåèµ·åããã®ã¯æå³ããªããšæããŸãã ç§ãã¡ã¯çãããªãã®ç«å Žãç解ããŠãããšæããŸãã åå ããŠããã ãããããšãããããŸãã
@jmorrellãæ¥é±ããããã§å¥ã®ããšãæããŠãããªãéããç§ã¯ãããå®äºãããšèŠãªãããã®åé¡ãã¯ããŒãºããŸãã
@imsnifãããŸã§ã®9æïŒ9æ1æ¥ãã9æ20æ¥ïŒãŸã§ã®å€±æãå¥ã®æ¹æ³ã§èŠãŠã¿ããšããããNodeãHerokuã§å€±æããæ倧ã®çç±ã§ãã ããã¯ã次ã«æãäžè¬çãªæ¢ç¥ã®é害ã±ãŒã¹ã®2åçºçããŸããpackage.jsonãç¡å¹ãªJSONã§ãã ããäžåºŠæ£ç¢ºãªæ°ãç·šéããŠããããä»ã®åé¡ãšã©ã®ããã«éãªããã§ãã
ããã«ã€ããŠã¯npmããã®åãã¯èŠãããšããªãã®ã§ãããã«ãèŠåãè¿œå ããŠPRãäœæããåãå ¥ããããããšã確èªããŸãã
ïŒç³žåŽã§ã¯ïŒãã®åé¡ã¯è§£æ±ºãããšèããããŸãã åæããŸããïŒ
ããã¯ãŠãŒã¶ãŒã«ãšã£ãŠè§£æ±ºããããšã¯æããŸãããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã¯ãŸã è¯ããããŸããã ããããnpmããã®ã±ãŒã¹ãããããããŠãŒã¶ãŒã«ãã£ãŒãããã¯ãæäŸãããšãæ°å€ãã©ã®ããã«å€åãããã確èªã§ããŸãã
ãããéããããããã«å€æŽãããã¯ãããªãã«ä»»ããŸãã ããããŸã ãŠãŒã¶ãŒã«ãšã£ãŠå€§ããªåé¡ã§ããå Žåã¯ãæ°ãæ以å ã«æ°ããåé¡ãéãããšãã§ããŠããããã§ãã
@ jmorrell-ãã®åé¡ã倧ããªæ³šç®ãéããŠãããäŒè©±ãåéãããç¹°ãè¿ããç¶ããŠããããšãèãããšãç§ãã¡ãæã£ãŠããæ å ±ã§ä»ããéããæ¹ããããšæããŸãã
npmãèŠåã衚瀺ããŠãåé¡ãçºçããå Žåã¯ãééããªããšã©ãŒã®è°è«ãåéããŸãïŒãŸãã¯ä»ã®è§£æ±ºçãæ€èšããŸãïŒã ãã®å Žåã¯ãå人çã«pingãå®è¡ããŠãã ããã
ãããæã¡åºããè²¢ç®ããããããã¹ãŠã®å€æŽãè¡ã£ãŠãããŠããããšãïŒ å人çã«ã¯ããã®å·ä»¥éã¯ç³žã®æ¹ãè¯ããšæããŠããŸãã
æãåèã«ãªãã³ã¡ã³ã
ãã¹ãŠ-ç§ãã¡ã¯ãããã¯ã«ãšã©ãŸããçŽæ¥é¢ä¿ã®ãªãã³ã¡ã³ãããªãã©ã€ã³ã«ããããšããé¡ãããŸãïŒäŸïŒDiscordãã£ã³ãã«ïŒã ãã®ã¹ã¬ããã賌èªããŠãã人ã¯ããããããŸãããå ¬å¹³ãæãããã«ãnpm <> yarnã®è°è«ã¯ããã«ã¯å±ããŠããªãããã«æããŸãã ããããšãïŒ