package.jsonã«è§Šããã«yarnã䜿çšããŠããã±ãŒãžãã€ã³ã¹ããŒã«ããå¯èœæ§ã¯ãªãããã§ãã ïŒ--saveparamsãªãã®npminstallã®ããã«ïŒã ãã®ãããªæ©èœãè¿œå ããã¹ãã§ã¯ãããŸãããïŒ
ãããããã®æ©èœã¯æå³çã«çç¥ãããŠããŸãã package.jsonã«åæ ãããã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããããšã¯å±éºã§ãããšèããããŠããŸãã ãªããããªãã®ãååšãããã®ã§ããïŒ
Facebookã®çºè¡šãã
npminstallã®ãç®ã«èŠããªãäŸåé¢ä¿ãã®åäœãåé€ããŸãã
ã³ãã³ããåå²ããŸãã yarn add <name>
ãå®è¡ããããšã¯ãnpm install --save <name>
ãå®è¡ããããšãšåãã§ãã
ç§ã¯ç©äºããã¹ãããããã«ãã®æ©èœãããªãé »ç¹ã«äœ¿çšããŠããŸããã ç¹ã«ãç§ãç¶æããŠããã©ã€ãã©ãªã䜿çšããŠããŠããªãªãŒã¹ãäœæããåã«å€æŽããã¹ãããããã ãã«ããŒã«ã«ããŒãžã§ã³ïŒ file:
depãäœæããïŒãã€ã³ã¹ããŒã«ããå¿
èŠãããå Žåã
ããã©ã«ãã§ãããè¡ãnpmã®å®è£ ã¯æªãéžæã§ãã£ãããšã«åæããŸãããããã¯æ瀺çã«äœ¿çšãããšäŸ¿å©ãªãã®ã ãšæããŸãã
ãããæ瀺çãªãã©ã°ã§ãããèš±å¯ããã®ã¯è¯ãããšã ãšæããŸããçŸåšãããã¯ãŸã npm i
=ïŒã䜿çšã§ããŸãããnpmã®å¿
èŠæ§ãåãé€ãããã ãã§ãã
ããã¯ã«äžå¯æ¬ ã®å€åã ãšç§ãã¡ã¯ããããæ瀺çã«ãµããŒãããŠããŸããnode_module
ããã®åŸã§æãããšã«ãªãyarn install
æã
ã¯èããã®ã§ãS package.json
ãšyarn.lock
ãªããã°çå®ã®æºã
WindowsïŒlibxsltïŒã«ç°¡åã«ã€ã³ã¹ããŒã«ã§ããªãäŸåé¢ä¿ãããããã次ã®ããã«ãªããŸãã
糞ã䜿çšããŠãããè¡ãããã®ã¯ãªãŒã³ãªæ¹æ³ïŒãŸãã¯ãã®çµæãéæããããã®ããè¯ãæ¹æ³ïŒã¯ãããŸããïŒ
ïŒããã±ãŒãžã¯package.jsonã«åæ ãããã¹ãã§ããããšã«åæããŸãããããã§ã¯ã¯ãªãŒã³ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããããšãã§ããŸããïŒ
@GuillaumeLeclerc yarn add -D xxx
ã©ãã§ããïŒpackage.jsonãããšã³ããªãèªåã§åé€ããŸããïŒ
次åå¥ã®ããã±ãŒãžãè¿œå ããããšãã«åé€ãããŸããïŒ ãããããªãïŒ
@GuillaumeLeclercæ®å¿µãªãããã¯ãã
@GuillaumeLeclercã³ã¡ã³ããã¯ãªãŒã³ã¢ããããããšããå§ãããŸã...
package.jsonãŸãã¯yarn.lockãå€æŽããã«ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ã§ããããã«ã yarn add --no-save
ãããªåŒæ°ãè¿œå ããŠãã ããã ã¢ãžã¥ãŒã«ã«ã³ãããããåã«ãã¢ãžã¥ãŒã«ããã¹ãããå¿
èŠãããããšããããããŸãã
ãæ倧åŒã³åºãã¹ã¿ãã¯ãµã€ãºãè¶
ããŸããããšããã¡ãã»ãŒãžã衚瀺ããããããéåžžã®npm install
䜿çšã§ããŸããã ãããã£ãŠã糞ã¯ã€ã³ã¹ããŒã«ããå¯äžã®å®è¡å¯èœãªæ¹æ³ã§ãã
package.jsonyarn.lockãžã®å€æŽãå ã«æ»ããªãã§ãã ããïŒ
ç§ã«ãšã£ãŠãpeerDepãã€ã³ã¹ããŒã«ããããšããŠããã®ã§ãããã¯ç§ãåã¿ãŸãã Yarnã«ã¯install
éã«ãã¢ããããã€ã³ã¹ããŒã«ããæ¹æ³ããªããããæåã§ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã package.json / yarn.lockã«è¿œå ããªããšyarn add <package>
ã§ããŸããã ç§ã¯ç«ã¡åŸçããŠããŸãã
@viveleroiããã¯å®å
šã«æ£ããããã«èãããŸãã package.json
è¿œå ããã«ããã¢ã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããã®ã¯ãªãã§ããïŒ
@hpurmann peerDependencies
ãdependencies
ïŒãŸãã¯devDependencies
ã䜿çšããå Žåã¯--dev
ïŒã«è€è£œããŠããããã§ãã ãããæå³ãããŠããã®ã§ããã°ãããã¯ç¢ºãã«çŽæçã§ã¯ãããŸããã
@hpurmannåå¿ã³ã³ããŒãã³ããå ¬éãããã®ã§ãreactã¯peerDepã§ããå¿ èŠããããŸãã ãã ãããããžã§ã¯ããéçºããã«ã¯ããããžã§ã¯ãã«reactãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
--no-saveãè¿œå ããã ãã§ã=>ããã¯ãšãŠãéèŠã§ã
ç¹å®ã®ããã±ãŒãžã®ç¹å®ã®ãªãã·ã§ã³ã®äŸåé¢ä¿ãã¹ãããããå¿
èŠããããŸãã ç§ã¯ããªãã®ç³žã§ãããããããšã¯ã§ããŸããã --no-saveãªãã·ã§ã³ã䜿çšããŠããå¯èœæ§ããããŸãã
yarn link local-pkg
ã¯local-pkgã®äŸåé¢ä¿ããã¹ãã¢ããªã«ã€ã³ã¹ããŒã«ããªããããçŽæ¥ã€ã³ã¹ããŒã«ãããã®ã§ãããå
¬éããããšlocal-pkgã«ãã£ãŠæäŸããããããã¢ããªpackage.jsonã«ä¿åããŸããã ã
ãªããªãŒããŒããããªã«æèŠãèšã£ãŠããã®ãããããŸããã ããªããããã®äœ¿çšæ³ãèŠãªããªãã°ãããããªããšããæå³ã§ã¯ãããŸããã 人ã
ããããæ±ããã°ãããã¯åœŒãããããå¿
èŠãšããŠããããšãæå³ãã圌ãã¯å¿
ãããæãã§ã¯ãªããšç§ã¯ä¿¡ããŠããŸãã
ãªãã·ã§ã³ã®--no-save
ãªãã·ã§ã³ãè¿œå ãããšãäžéšã®äººã
ã®åé¡ã解決ãããæ¬ ç¹ã¯ãŸã£ãããããŸããã
AWSLambdaã§å®è¡ãããNodeJSãããžã§ã¯ãã«Yarnã䜿çšããããšããŠããŸãã ãã®æ©èœããµããŒããããŠããªãçç±ã«ã¯ã¡ãã£ãšé©ããŠããŸãã ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ãããŒã«ã«éçºç°å¢ã«aws-sdkãã€ã³ã¹ããŒã«ããå¿
èŠããããšãããã®ã§ãããAWS Lambdaããã§ã«ç°å¢ã«ã€ã³ã¹ããŒã«ããŠããããã package.json
ä¿åããããããŸããã aws-sdkãå«ããããšã¯ãæçµçãªããã±ãŒãžãè¥å€§åããããšãæå³ããŸãã
ã€ãŒã³ãªã³ã¯ãšã€ãŒã³ã¢ãã¯å ±åã§ããŸããã ã€ãŒã³ã®è¿œå ã¯package.jsonã«äŸåããŸãããã€ãŒã³ãªã³ã¯ã¯ããŒã«ã«ããã±ãŒãžãå¥ã®å Žæã«ãªã³ã¯ããã ãã§ãã
Yã«äŸåããããã±ãŒãžXãéçºããŠãããšãããšãããªãã¯XãšYã®äž¡æ¹ã®éçºè ã§ãããããXãšYãããŒã«ã«ã«ä¿æããYãXã®ãã£ã¬ã¯ããªã«ãªã³ã¯ããŸããXã«yarn addãå®è¡ãããšãã¯ã€ãã¢ãŠããããŸãã Yãžã®ãªã³ã¯ã
ãããã©ã®ããã«åé¿ããŸããïŒ
ããã®ãããªå Žåã¯ãããã±ãŒãžjsonãŸãã¯yarn.lockã«ãããããªã³ããäœæããã«ãnpm-commandsã䜿çšããŠã€ã³ã¹ããŒã«ã§ããŸãïŒã
ã npm install [packages ...] --no-save --no-package-lock
ã
@heikomatã以äžã«è¿°ã¹ãããã«ãnpm5ã¯ã€ã³ã¹ããŒã«åŸã«èªåãã«ãŒãã³ã°ã䜿çšããããïŒhttps://github.com/npm/npm/issues/16853 + https://github.com/npm/npm/pull/18921ãåç §ïŒãããã¯ãªãã·ã§ã³ã§ã¯ãªããnode_modules-folderãå®å šã«å£ãå¯èœæ§ããããŸãã
ããŠãä»ã¯npmãªãã§ã¯çããããŸãã
ããŒã«ã«ãµãã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ãã¡ã€ã³node_modulesã«ã€ã³ã¹ããŒã«ããã¹ã¯ãªããã®1ã€ã§npm install
ã䜿çšããŠããŸããã ããã¯npm4ã§æ£åžžã«æ©èœããŠããŸãããnpm5ã¯ã€ã³ã¹ããŒã«äžã«äžéšã®ããã±ãŒãžãåé€ããããšã決å®ãããããnpm5ã§ã¯å®å
šã«æ©èœããŸãã-.-ïŒhttps://github.com/npm/npm/pull/18921ãåç
§ïŒ
ãã®ãããã¹ã¯ãªããã®npm install
ãyarnã«çœ®ãæããããšããŸããããã€ã³ã¹ããŒã«äžã«yarnãåžžã«ããŒã«ã«ãµãã¢ãžã¥ãŒã«ã®package.jsonsã«æ¥è§Šããå Žåã¯ãå®éã«ã¯ãããè¡ãããšãã§ããŸãããç§ã®ã¹ã¯ãªããã¯éãã«ä¹±éã«ãªãã糞ã®åŸã§ãã¯ãªãŒã³ã¢ãããããŸã
ãã§ã«--no-lockfile
ãªãã·ã§ã³ãããã®ã§ãnode_modulesãã©ã«ããŒãèããããªããªããŸãã
ãã ããéçºè
ã¯package.jsonãäžå€ã«ä¿ã€ããã®åé¿çãå¿
èŠã§ãã
ããããšãããããŸããã
ç§ã¯ã誰ããã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããããã®åœŒãã®ç¬ç¹ã®ãŠãŒã¹ã±ãŒã¹ã説æãããããããèšé²ããªããã³ã«ãã¡ã³ãããæ»ã£ãŠããŠåœŒãã®ã·ãã¬ã¹ãæå±ããæ¹æ³ã奜ãã§ãã é埳çãªå€±æã«èŠããã§ãã人ã
ããæ¥ãŠããã®ãšåãããã«å€ãã®ç°ãªã人ã
ããã®åãèŠæ±ãåãå
¥ããããšãã§ããã°ãããªãã®é åºãã«èªä¿¡ãæã£ãŠç°¡åã«æããããšãã§ããªããã°ãªããŸããã 劥åæ¡ãšããŠãã¹ã€ããã«--i-am-a-heritic-and-a-bad-programmer
ãšããååãä»ããããšãã§ããŸããïŒ
yarn
ãnpm
ããä¿æããŠãã1ã€ã®éèŠãªæ¬ é¥ãèŠãã®ã¯æ²ããããšã§ãããããã¯çµç¹å€ã®èª°ã«ãšã£ãŠãæµå¯Ÿçã§ãã
ãããŠç§ã®å ŽåãïŒ4297åé¡ã®åé¿çãšããŠããã䜿çšãããã£ã:)
éçºè
ãç©äºãè¡ãããšã人çºçã«å¶éãããšãç¹å®ã®ç¶æ³ã§è£œåã䜿çšã§ããªããªãå¯èœæ§ããããŸãã
åè«ã§ããïŒ ããã¯æ²åã§ãã ãã¹ãŠã®éçºè ã¯ãŒã¯ãããŒãã©ã®ããã«æ©èœããããæ瀺ããã®ã¯ãããŠãã ããã ããããŸãã«NPMãç§ãã¡ã«åããªãã£ãçç±ã§ãããç§ãã¡ã¯Yarnã«ç§»åããŸããã ãpackage.jsonãšyarn.lockã¯ä¿¡é Œã§ããæ å ±æºã§ãªããã°ãªããªãããšãããã®ã€ããªãã®ãŒã¯ç¡æå³ã§ãã ããã±ãŒãžã¯ããœãŒã¹ã³ãŒããå€æŽããã«ã€ã³ã¹ããŒã«å¯èœã§ããå¿ èŠããããŸãã ãã®ãããªåçŽãªã
ãããã¡ã³ããã ã³ãã¥ããã£ããããæ¬åœã«å¿ èŠãšããŠããããšã¯æããã§ãã ãã£ã«ã¿ãªã³ã°ãããŠããªããèŠåœéãã®å²åŠã§ã€ã³ããªãžã§ã³ããªäŒè©±ãã·ã£ããããŠã³ããã®ããããŠãã ããã
require
ããã¹ãããå¿
èŠã®ããã¢ãžã¥ãŒã«ãããããã¹ãããã«ã¯ãµã³ãã«ã¢ãžã¥ãŒã«ã./node_modules
ã«ã³ãããããå¿
èŠãããããã yarn
ããã¹ãã«å€±æããããšãããããŸããã yarn install
ãå®è¡ãããšãYarnããµã³ãã«ã¢ãžã¥ãŒã«ãåé€ããŠããŸãã ãã£ãšãçå®ã®æºãã®è¡åŠè
ã ãšæããŸãã
ãŠãŒã¹ã±ãŒã¹ïŒç§ã䜿çšããããŒã«
ããã¯ãAngularã¹ã¿ã€ã«ã¬ã€ãã«codelyzerã䜿çšããããšã§éåžžã«èç«ãããããšã§ãããããŒã ã®ä»ã®ã¡ã³ããŒã¯äœ¿çšãããã³ãŒãã®æ©èœã«åœ±é¿ãäžããŸããã ä»ãããæ©èœãããå¯äžã®æ¹æ³ã¯ããããç§ã®ã€ãŒã³ããã¯ã«è¿œå ããç§ã®ã€ãŒã³ããã¯ãå®éã«å€æŽãããŠããªããšä»®å®ããããç§ã®ããŒã ãã€ãŒã³ã䜿çšããŠããŠãnpmã䜿çšããããšã§ãã ãããã¯äž¡æ¹ãšãæããããªãã·ã§ã³ã§ãã
ãã§ã«2018幎ã§ãããæå¹ãªãŠãŒã¹ã±ãŒã¹ãå€æ°ããã«ããããããããã®æ©èœã¯ãŸã è¿œå ãããŠããŸããã
ããã圹ç«ã€çç±ããã1ã€æãããšã次ã®ããã«ãªããŸãã
æ°ããããŒãžã§ã³ãã€ã³ã¹ããŒã«ããŠãã¹ããå®è¡ãããããpackage.json
/ *.lock
ä¿åããŠãã®å€æŽãã³ããããããããšã©ãŒãçºçããå Žåã¯ããŒã«ããã¯ããããšã§ãäŸåé¢ä¿ãèªåçã«æŽæ°ããã¹ã¯ãªããããããŸãã å€ãããŒãžã§ã³ãèšæ¶ããŠæ瀺çã«adding
ãå床å®è¡ãã代ããã«ã yarn
å床å®è¡ããæ¹ãã¯ããã«ç°¡åã§ãã
ããã«ããã¹ããäžæããã«ãã®äŸåé¢ä¿ãå®éã«æŽæ°ã§ããããšãã絶察ã«ã確èªããåã«ãä¿¡é Œã§ããå¯äžã®æ
å ±æºïŒ package.json
ïŒãå€æŽããªãæ¹ãã¯ãªãŒã³ã§ãã ä»ã®ãšãããã³ãŒããå£ãäŸåé¢ä¿ãå«ãpackage.json
ïŒäžæçã§ãã£ãŠãïŒã«ãªããŸãã
ãã®åé¡ã«ã¯å€ãã®æå¹ãªãŠãŒã¹ã±ãŒã¹ããããŸãã äœæãããå Žåãyarnpkgã®ã¡ã³ããã¯PRãåãã§åãå ¥ããŸããïŒ
ãŸã ãã®ãããžã§ã¯ãã«åå ããŠããå Žåã¯ã éä¿¡ããŠãã ãã...
ãããŸã§ã®éã package.json
ã®scripts
ã»ã¯ã·ã§ã³ã§æ¬¡ã®ã¹ã¯ãªããã䜿çšããŸãã
"scripts": {
"install-sneaky-package": "npm install -g sneaky-package && cp -r $(npm root -g)/sneaky-package ./node_modules/sneaky-package"
}
æ¯ç³žã®ä»£æ¿åããããšæããŸããïŒ
代æ¿æ段ã¯ãããŸãããnpm5ã¯ç§ã®äººçãšããŠåä»ã§ãã
ãŸããã·ã³ããªãã¯ãªã³ã¯ã.binãã©ã«ããŒã«ã³ããŒããããšãå¿ããªãã§ãã ããã ;ïŒ
ç§ã«ãšã£ãŠã chmod 444 package.json
ãšyarn add XXXX --no-lockfile
ãå°ãªããšãããŒã«ã«éçºãšãã¹ãã®åé¡ãåé¿ããŸãã
è¿œå ã¯ïŒäºæãããïŒã¢ã¯ã»ã¹èš±å¯ãšã©ãŒã§çµäºããŸãããè¿œå ãããã¢ãžã¥ãŒã«ã¯åŸã§node_modulesã«ååšããããŒã«ã«ã«ã€ã³ã¹ããŒã«ãããŠãããpackage.jsonã«æ°žç¶åãããŠããªããã¢äŸåé¢ä¿ã§ããã¢äŸåé¢ä¿ãšããŠãã¹ãã§ããŸãã
why-is-node-running
ããã«ãäžæçã«ãããã°ã©ã€ãã©ãªãå¿
èŠã«ãªãããšããããŸãã äžåºŠäœ¿çšããåŸã§ãããåãé€ããããšæãããšã¯ããã£ãŠããŸãã --no-save
ãªãã·ã§ã³ã䜿çšãããšãäŸåé¢ä¿ãæ±æãããªã¹ã¯ãåãããšãªããã€ã³ã¹ããŒã«ããŠå¿ããããšãã§ããŸãã
ç§ã¯Lernaã䜿çšããŠããŸããããããžã§ã¯ãã¯åã®ã¹ãããã§æ¢ã«ãã«ããããŠãããã¢ãŒãã£ãã¡ã¯ããåŒãç¶ãããŠãããããå ¬é段éã§CIã¹ãããã®1ã€ã«_only_Lernaãã€ã³ã¹ããŒã«ãããã ãã§ãã ããã¯æå¹ãªã·ããªãªã§ããïŒ
ãã®æ©èœãå©çšå¯èœã§ããã°ãããã€ãã®æé ãç¯çŽã§ããŸãã
ç§ã®node_modules
ã¯ãšã«ãã.gitignoreã«ãããŸãã
ã®ä»£ããã«ïŒ
git clone external-package (needed for temp testing only)
yarn install
yarn link
å
ã®ãªããžããªã«æ»ãyarn link external-package
ãã ïŒ
ãªãªãžãã«ãªããžããªïŒ
yarn install external-package --no-save
ãã«ããã€ãã©ã€ã³ã®äžéšãšããŠãnspãã€ã³ã¹ããŒã«ããŠå®è¡ããdependency-check.xmlããšã¯ã¹ããŒãããå¿ èŠããããŸãã
ãã®åçŽãªããŒã«ã®ã€ã³ã¹ããŒã«ãããã±ãŒãžãªã¹ãã«åæ ããå¿
èŠãããçç±ãããããŸãããã¿ã°ãããã·ã¥ããåã«ãå€æŽãå
ã«æ»ãããã«git checkout ${BRANCH_NAME}
ãå®è¡ããå¿
èŠãããããšãæå³ããŸãã
ãœãŒã¹ãå€æŽããããšã¯ããŠããŸããã ç§ã¯ããããããŸããããããŠããã¯ç§ã®ããžãã¹ã§ã¯ãããŸãããããã¯ç§ã®çµç¹ã®éçºããŒã 次第ã§ãã ããªãã¯ç§ã®äººçãæœè±¡çãªå²åŠã®ããã«å°ãé£ããããŠããŸãã ãããŠã
äœãèãããããŸããããªããã®åé¡ã¯è§£æ±ºãããã®ã§ããïŒ --no-save
ã¹ã€ãããPRã«è¿œå ãããŸãããïŒ
äŸåé¢ä¿ããæã¡èŸŒãŸããã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ãå€æŽãããå ŽåããããŸãã ããšãã°ãå¥ã®deväŸåé¢ä¿ã«ãã£ãŠæã¡èŸŒãŸãã@types/sinon
ã¯ãæè¿ç§ã®tscãå£ããŸããã éçºè
ã®äŸåé¢ä¿ã«@types/sinon
ãè¿œå ããããªãã®ã§ãããäœæ¥ãç¶ããããšãã§ããããã«ã yarn add @types/[email protected] --no-save
ããŒãžã§ã³ãæåã§å€æŽããããšæããŸãã 代ããã«ãnpmã«åãæ¿ããŸãã è¶
ã€ã©ã€ã©ããã
ãã©ãããã©ãŒã åºæã®ãã€ããªã®ããã¯èªäœã§ããæ¬çªç°å¢ã®ã¿ã®äŸåé¢ä¿ïŒappdynamicsïŒããããŸãã éçºãã·ã³ã§ã¯å¿
èŠãªãããšãããããŸããã yarn add ... --no-save
ãè¿œå ãããšãã¹ã¯ãªãããpackage.jsonãå±éºã«ãããããšãªãã¯ãªãŒã³ã«ãããã€ã§ããŸãïŒç¹ã«package.jsonã¯ãåã¹ã¯ãªãããŸãã¯äŸåé¢ä¿ã®ç®çã説æããã³ã¡ã³ããä»ããããšãã§ããªãããïŒ
cc @kittens @hpurmann
ãã®éåžžã«äººæ°ã®ããåé¡ã«å¯ŸåŠãããã解決æžã¿ãšããŠããã¯ããŠãã ããã äžèšã®ãã¹ãŠã®æ¹å€ã«å¿ããŠå ·äœçãªåçãããã ããã°å¹žãã§ãã
ãããŠãã³ãã¥ããã£ã¯ãã®æ©èœãæäŸããæºåãã§ããŠããŸãããã®ãããªãã«ãªã¯ãšã¹ããåãå ¥ãããã©ããããç¥ãããã ããã ããããšãããããŸããã
ããããŸã å®è£ ãããŠããªããniiiiice
ãªããããªãã®ãååšãããã®ã§ããïŒ
JSXãæåã«ãã³ãã¬ãŒããšããžãã¯ã®æ··åãçºè¡šãããšãã«äººã ãèšã£ââãã®ãšãŸã£ããåãããšã§ããã ãããå¯èœã§ããããã®ãŠãŒã¹ã±ãŒã¹ãããå Žåãæ£ãã質åã¯ãªãããã§ã¯ãªãã®ã§ããããïŒ ã€ãŸããããã¯ãã©ã°ã§ãããããã©ã«ãã®åäœã§ã¯ãªããããyarnã«æ瀺çã«äŒããŠããŸãïŒå¥åãç§ãäœãããŠããã®ããç¥ã£ãŠããŸãïŒã
@kittens @hpurmann
ç§ã¯reactã«åºã¥ããŠè€æ°ã®ããã±ãŒãžãæã£ãŠããããããã«ã¯ãµãã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ããããŸãã ã ããç§ã¯peer-depãšããŠreactãšreact-domãæã£ãŠããŸããããããã®ããã±ãŒãžãåå¥ã«ãã«ãããå¿
èŠããããšãã¯ãreactãšreact-domãå¿
èŠã§ãã
ããã¯ãããã±ãŒãžãdepãšããŠè¿œå ããã«ããŒã«ã«ã«ã€ã³ã¹ããŒã«ããããã®é©åãªãŠãŒã¹ã±ãŒã¹ã«ãªããšæããŸãã
ç§ã®ãããžã§ã¯ãã§ãã®ãããªäºçŽ°ãªäœ¿çšã®ããã«npmã䜿çšããããããŸããã
--no-save
䌌ããã®ãåŸ
ã£ãŠããæŽæ°ã
éçºè
ããã®å¯äœçšãèªèããŠãããšä»®å®ãããšãã³ãã¥ããã£ãèŠæ±ããå Žåãæ©èœãè¿œå ããŠã害ã¯ãªããšæããŸãïŒyarnã€ã³ã¹ããŒã«ãå®è¡ãããšããã«ããŒã«ã«ããã±ãŒãžã倱ãããŸãïŒã
ããããšã
䟿å©ãªããªãã¯ã¯yarn add --dev pkg && yarn remove pkg
ã§ãã ããã¯åãããšãããŸãã ããã¯ãã¡ã€ã«ã¯ãã以åã®ç¶æ
ã®ãŸãŸãªã®ã§ããã®ãŸãŸã§ãã
ããã¯@Legendsã«ãã£ãŠä»¥åã«èšåãã
å Žåã«ãã£ãŠã¯ãå¿
èŠãªããã±ãŒãžãå¥ã®ãã©ã«ããŒã«ã€ã³ã¹ããŒã«ããå¿
èŠãªããã±ãŒãžãè¿œå ãããå Žæã«yarn link
ã€ã³ã¹ããŒã«ããããšãåé¿ã§ããŸãã ããã¯çæ³çã§ã¯ãããŸããããå©ããããšãã§ããŸãã
cd /third-party
yarn add foo
cd node_modules/foo
yarn link
cd /my-project
yarn link foo
@silentorbã¯çµ¶å¯Ÿã«äŸ¡å€ããªããç§èŠã add + remove
ã¯ãnpmã®--no-save
ã§è¡ãããããšãšãŸã£ããåãã§ãã ã·ã¹ãã ãªã³ã¯ãæ··ä¹±ãããããããã¯ãã¡ã€ã«ã«æªãæ¹æ³ã§è§Šãããããããšã¯ãããŸãããã€ãŸãã yarn remove
åŸãåãã§ãã
èšããŸã§ããªããããã°ã©ã ã§ãã®ããšãå®è¡ãããå Žåã¯ãééããªãdirãäœæãããããªã³ã¯ãããããããšã¯ã§ããŸããã
ããå Žå
äŸãã°ïŒ 確ãã«ããªãå¥åŠãªãã®ïŒ
@hpurmann @kittens
ã§ã¯ããã¢ã®äŸåé¢ä¿ãæã€ããã±ãŒãžãéçºããããã®æšå¥šãããæ¹æ³ã¯äœã§ããïŒ
ããšãã°ãããã±ãŒãžã«ReactãpeerDependencyãšããŠæã£ãŠããå Žåãã€ã³ããŒãã解決ããããã«ããããdevDependencyãšããŠãè¿œå ããå¿ èŠããããŸããïŒ
https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb/package.jsonãèŠããšãçãã¯ã€ãšã¹ã ãšæããŸã
@ 18stepsã¯https://www.npmjs.com/install-peersããã§ãã¯ã¢ãŠãã
ãã®æ©èœã䜿çšããç¶æ³ãããã€ããããŸãã
CIã©ã€ããµã€ã¯ã«ãšåãããã«ãã«ãã¬ããžã¬ããŒã¿ãŒãè¿œå ããŸããã ããããããããpackage.json
ã«ç§»åããããšã¯ã§ããã NPM
å
¬éã«åœ±é¿ããŸãã
ä¿åãããããªããããã®éžæã¯ããŒã«ã§ã¯ãªãéçºè èªèº«ã«ä»»ãããã¹ãã ãšæããŸãã
ããŠããããã¡ã³ããã®èŠç¹ããèŠãŠã¿ãŸãããã çŽ æŽãª--no-save
ãœãªã¥ãŒã·ã§ã³ã®æ¬ ç¹ã¯ééããªãããããŸãã ããã§ã¯ããŸã詳ãã説æããŠããŸããããéŒã®ç·ãäœã£ãŠã¿ãŸãã å€å圌ãã¯ç§ãæ£ãããšãã§ããŸãã 劥åç¹ãèŠã€ããããšãã§ãããããããŸããã @kittens @hpurmann
ïŒç³ãèš³ãããŸããããããã¯ç§ãæå³ãããããé·ããªããŸãããïŒ
ææ°ã®ããŒãããã³Webã¢ããªã±ãŒã·ã§ã³ã®äŸåé¢ä¿ç®¡çã¯å°ãæ··ä¹±ããŠããŸãã ããã§ããéè€æé€ãåçŸå¯èœãªãã«ããªã©ã®æ©èœãåãããä¿¡é Œæ§ã®é«ãèªååãšäžå®ã¬ãã«ã®å¶åŸ¡ãšäºæž¬å¯èœæ§ã®äž¡æ¹ãæäŸããã·ã¹ãã ãå¿ èŠã§ãã
è€éããææ¡ããã«ã¯ãäœãã€ã³ã¹ããŒã«ãããŠããã®ãããã®çç±ãç¥ãå¿
èŠããããŸãããŸããççŸã解決ããããã®ä¿¡é Œã§ããå¯äžã®æ
å ±æºãå¿
èŠã§ãã æãããªããšãè¿°ã¹ããªã¹ã¯ãåããŠã node_modules
èªäœã¯ãããã®åœ¹å²ã®ããããæããããšãã§ããŸããã ãã©ããŒã¹ããã«ã¯é
ãããéä¿¡ããã«ã¯å€§ããããããŒãžã§ã³ç®¡çã«ã¯ããã现ããããçç±ãã®åŽé¢ããšã³ã³ãŒãã§ããŸããã ãã®ããã package.json
ãšyarn.lock
ãŸãã
Yarnã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãä»ããã¢ã¯ã»ã¹ãå¶éããããšã«ããã node_modules
ã®è€éããã«ãã»ã«åããŸãã ã«ãã»ã«åãç ŽããªãããšãçŽæããå Žåãéè€æé€ãåçŸå¯èœãªãã«ããªã©ãäžå®ã®ä¿èšŒãåŸãããŸãã package.json
ãšyarn.lock
ã«å¯Ÿå¿ããå€æŽãå ããã«ã node_modules
ã«ã€ã³ã¹ããŒã«ãããšããããã®ä¿èšŒã¯å€±ãããŸãã
ããã«ãããã¯å€ãã®éçºè ãæ確ã«èªèããŠããªãæé»ã®å¥çŽã§ãã 圌ãããããå£ããšãã圌ãã¯æ æã«ããããŸããã ãããã£ãŠãåé¡ãçºçããå ŽåãYarnã¯äžåœã«éé£ãããå¯èœæ§ããããŸãã ããã«ã足ã§èªåãæã€ã®ãé£ããããŒã«ãäœãããšã¯æªãèšèšå²åŠã§ã¯ãããŸããã
ãã ãã劥åããçç±ã¯ããã€ããããŸãã
ããã«ã¯æ確ãªå¿ èŠæ§ãããããã§ãã äžèšã®ã³ã¡ã³ãã«ãªã¹ããããŠããå€ãã®ãŠãŒã¹ã±ãŒã¹ãšããè³æã/ãå察ãã®æ¯çãèŠãŠãã ããã ãã®ãããªäžæ¹çãªåå¿ã«çŽé¢ããã¡ã³ããã®æãããªé åºãã¯ãã€ãŒã³ã®èŠæ ããè¯ãããŸããã
ãã¹ãŠã®äººã«åœ¹ç«ã€å¯èœæ§ã®ãã解決çãèŠã€ãããŸãã ããšãã°ãæ°ãããã¡ã€ã«yarn.local.lock
å°å
¥ããŸãã éçºè
ã¯ããã.gitignore
ã«å
¥ãã --no-save
ãã©ã°ãšãã®äŸåé¢ä¿ãšãšãã«ã€ã³ã¹ããŒã«ããããã¹ãŠã®ããã±ãŒãžã®èšé²ãä¿æããŸãã
yarn.lock
ããããåé¢ããŠããããã«ããããŒã«ã«ãäŸåé¢ä¿ããªãŒã®éè€æé€ãšãã©ããåãå¶éãããŠããŸãã ããŒã«ã«ããã¯ãã¡ã€ã«ã¯ãã¡ã€ã³ããã¯ãã¡ã€ã«ã®ããŒãžã§ã³ãšäžèŽããããã«é©å¿ããå ŽåããããŸãïŒãã®å Žåã¯éè€æé€ïŒãããã®éã¯ã§ããŸããã ãã®çµæãå€ãã®æšç§»çãªããŒã«ã«äŸåé¢ä¿ãnode_modules
å¹³åŠåãããªãå¯èœæ§ããããŸãã
ãã®ãœãªã¥ãŒã·ã§ã³ã«ãããYarnã¯åŒãç¶ããã¹ãŠã®ããã±ãŒãžã远跡ã§ããéçºè
ã¯ãªããžããªãæ±æããããšãªãã€ã³ã¹ããŒã«ã§ããåçŸå¯èœãªãã«ããä¿æããŸãã ïŒ devDependencies
ã»ã¯ã·ã§ã³ã®ããpackage.local.json
äœå°ããããŸããããããå¿
èŠã«ãªããã©ããã¯ããããŸãããïŒ
ãšã«ãã欲ãããã®ãæã«å ¥ããããã«ã人ã ã¯ãã§ã«åé¿çã䜿çšããŠããŸãããã®ãã¡ã®å°ãªããšã3ã€ã¯äžèšã®ã³ã¡ã³ãã§èª¬æãããŠããŸãã ãããããããã¯äœ¿çšããã®ã«äžäŸ¿ã§ãããåãä¿èšŒãæäŸãããéçºè ãããããç解ããããã«YarnãšæŠãããšãèŠæ±ããŸãã ããã¯äž¡æ¹ã®äžçã®äžã§ææªã§ãã
ç§ã¯äœããéãããããããŸããããããã¯æã€äŸ¡å€ã®ããäŒè©±ã®ããã§ãã
å¥ã®ãŠãŒã¹ã±ãŒã¹ããããŸããã¢ãžã¥ãŒã«ãREPLã§äœ¿çšã§ããããã«ãããã®ã§ãããã³ãŒãã§äœ¿çšããã€ããã¯ãããŸããã çŸç¶ã§ã¯ãå¥ã®ãã©ã«ããŒã«ç§»åããŠãã®ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ãã ../other-project/data/xyz.json
ã䜿çšããŠããã€ãã®jsonãã¡ã€ã«ãã€ã³ããŒãããå¿
èŠããããŸãã
ããããã¢ãžã¥ãŒã«ãã€ã³ããŒããããã®ã«ãçžå¯Ÿãã¹ã䜿çšããŠä»ã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããå Žåã¯ãåé¡ãçºçããŸãã
ä¿åããã«ã¢ãžã¥ãŒã«ãnode_modules
ã€ã³ã¹ããŒã«ãããã ãã§ããã¹ãŠãã¯ããã«ç°¡åã«ãªããŸãã
ã¡ã³ããããã®èãã«ã©ãã»ã©æµæåããããã«é©ããŠããŸãã
ãããããé¡ãããŸããåã®ã³ã¡ã³ããèªãã ã ãã§ãã¡ã³ããã®æ 床ã¯ãã£ããããŠããŸãã ãã¬ãŒã ã¯ãŒã¯ã©ã€ãã©ãªã«äŸåããå€ãã®ãã¬ãŒã ã¯ãŒã¯åºæã®ãã©ã°ã€ã³ãéçºããŠããŸãããããããããŒãäŸåé¢ä¿ãšããŠãã©ã°ã€ã³ã«è¿œå ããããšã¯é¿ããããšæããŸãã
peerDependencies
ã§å®çŸ©ãããç¹å®ã®ããã±ãŒãžã«äŸåãããã©ã°ã€ã³ããããŸãããä»ã®å€ãã®äººããã§ã«ã³ã¡ã³ãããŠãããããªåé¡ã¯ãäŸåé¢ä¿ãpackage.json
è¿œå ããã«ããŒã«ã«ã«ã€ã³ã¹ããŒã«ããæ¹æ³ã§ãããã¡ã€ã«ïŒ ãŸããã§ããŸããã
ç§ãèŠã€ããå¯äžã®è§£æ±ºçã¯ã peerDepencies
ãdevDependencies
ãšããŠã€ã³ã¹ããŒã«ããããšã§ããããã¯ãŸã£ããçæ³çã§ã¯ãããŸããããåé¡ãåé¿ã§ããŸãã æãããç¶æ
ã®å°ãªããšãnpm
ã¯ã package.json
ãã¡ã€ã«ãå€æŽããã«ã€ã³ã¹ããŒã«ãããŸãã
@hpurmann @kittens
ã³ãã¥ããã£ãžã®å¯Ÿå¿ããããããŸãããïŒ æããã«ããã®åé¡ãç¡èŠããŠãäœã®æ©æµãåããããªããªãããšããããŸããã 誰ããä»äºãããŠPRãæåºãããã©ãããšããåçŽãªè³ªåã«çããã€ãããããªãã®ã§ããã°ãããããªãŒãã³ãœãŒã¹ãããžã§ã¯ããšåŒã¶æå³ã¯äœã§ããïŒãããåãå ¥ããŸããïŒ
@viveleroiã圌ã®éåžžã«æå¹ãªãŠãŒã¹ã±ãŒã¹ïŒå€ãã®äººãæã£ãŠããããã§ãïŒã説æããçŽåŸã«ãç§ã¯ããããå°ãåã«çããã¹ãã§ããã åœæãç§ã¯åœŒã®åå¿ãé«ãè©äŸ¡ããŸããããããã¯æããã«æ³šç®ãéããã®ã«ååã§ã¯ãããŸããã
ç§ã¯èªåã®èããå€ããŸããã éåžžã人ã ã¯å€ãã®ããšãæãã§ãããã¡ã³ããããã¹ãŠã®æ©èœãåãå ¥ããŠããå ŽåããœãããŠã§ã¢ã¯è¥å€§åããŸãã ç§ã¯ãã®ãŠãŒã¹ã±ãŒã¹ãæã£ãŠããŸããããå€ãã®äººããããæãã§ããã®ãç®ã«ããŸãã
ã§ãäœã決ããããŸããã ç§ã¯ãã®ãããžã§ã¯ãã®ã¡ã³ããã§ã¯ãããŸããã
@Vheissu yarn add --peer <dep>
ã®åé¡ã¯äœã§ããïŒ
ç§ã«ãšã£ãŠã¯yarnadd --peer
ä»æ¥ã¯expressã䜿çšããŠã©ã€ãã©ãªã®å®è£ äŸãæžããŠããã®ã§ããã®æ©èœãå¿ èŠã§ãããç§ã®ã³ãŒãã¯ã©ããexpressã«çŽæ¥äŸåããŠããŸããã Expressãã€ã³ã¹ããŒã«ããããExpressã«äŸåãããããããªãã®ã§ãããçŸåšã®ãã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ããããšæããŸãã
ãã ããã¬ã³ãã³ã»ããŒãªãŒ@suyanhanx @ã®ããã«ãç§ã¯CIã§ã¯ãªããããŒã«ã«ã«ã€ã³ã¹ããŒã«ããããšãäŸåé¢ä¿ãæã£ãŠããŸãã
node_modules
ãèšããŸãããããããžã§ã¯ãã«åãçµããã¹ãŠã®éçºè
ã«æéãšã¹ããŒã¹ãè²»ããããããå¿
èŠããªãããã«ãããŒã«ã«ã®äŸåé¢ä¿ãæå°éã«æããããšæããŸãã
CIã§å¿ èŠã§ããããããŒã«ã«ã§ã¯å¿ èŠãšãããªãããã±ãŒãžïŒ
ãã®æ©èœãå¿ èŠãªçç±ã¯æ¬¡ã®ãšããã§ãã
yarn link
ã䜿çšããŠããããã±ãŒãžã®äŸåé¢ä¿ã¯ãªã³ã¯ãããªããããã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã
ãªã³ã¯ãããå®å
-ãããã®å€éšäŸåé¢ä¿ãpackage.json
è¿œå ãããšãéåžžã«äžäŸ¿ã«ãªããŸãã
yarn link
ã¯äŸåé¢ä¿ãè¿œå ããããå®å
package.json
ãé€å€ããæ¹æ³ãæäŸããå¿
èŠããããŸã
ç§ã«ã¯ããªãé£è§£ãªãŠãŒã¹ã±ãŒã¹ããããŸãããããã¯ç§ã«ãšã£ãŠåœ¹ã«ç«ã¡ãŸãã yarn.lock
ãšpackage.json
ãçå®ã®æºã§ããããšãéèŠã§ããçç±ãå®å
šã«ç解ããŠããŸãããŸãã --no-save
ã³ãã³ãã䜿çšãããšãåŸç¶ã®yarn
å€æŽãæ¶å»ãããããšãç解ããŠããŸãã
ããã¯èšã£ãŠãã yarn
ãç§ãä¿¡é ŒããŠãç§ãäœãããŠããã®ããç¥ã£ãŠãããã --no-save
ãã©ã°ãæž¡ãããšãã§ããããã«ãªãããšãé¡ã£ãŠããŸãã åé¡ã®ããããã«ééããå Žåãäœãæªãã£ãã®ããæ£ç¢ºã«ç¥ãããšãã§ããèªåã®ããã«ããã ãã§ãã ïŒã¹ãã€ã«ïŒ
ç§ã®ãŠãŒã¹ã±ãŒã¹ïŒ
ç§ã¯64ãããã®winãã·ã³ãå®è¡ããŠããŸãã
補åãã·ã³ã¯32ãããã§ãã
ããã±ãŒãžãæŽæ°ããªãéããããŒããšSassã®äŸåé¢ä¿ã¯32ãããã®ã¿ããµããŒãããŸãã
éçºãã·ã³ããµããŒãããããã«package.jsonãŸãã¯yarn.lockã®äŸåé¢ä¿ãå€æŽããŸããã
ãããã£ãŠã64ãããããµããŒãããããã«ææ°ã®node-sassãããŒã«ã«ã«ã€ã³ã¹ããŒã«ãããã®ã§ãããpackage.jsonãšyarn.lockã«ã¯åœ±é¿ããŸããã
VSCodeã§ã®ãªãŒãã³ã³ããªãŒããæ¹åããããã«ã package.json
/ yarn.lock
ãæ±æããã«ãTypeScript以å€ã®ãããžã§ã¯ãã«@types/*
ããã±ãŒãžãã€ã³ã¹ããŒã«ããããšæããŸãã
ç§ã¯ç³žã®ã¯ãŒã¯ã¹ããŒã¹ã§lernaã䜿çšããŠããŸãã
@ types / react @
Antdã¯é±æ«ã«ãããä¿®æ£ããŸãã
ããããçŸåšã®package.jsonã«åœ±é¿ãäžããããšãªããæåã§@ types / [email protected]ã®ä¿®æ£ããŒãžã§ã³ãworkspaceRootã«ã€ã³ã¹ããŒã«ããããã«yarnã匷å¶ããå¿
èŠããããŸãïŒææ°ããŒãžã§ã³ãèªåçã«ã€ã³ã¹ããŒã«ãããããïŒã
package.jsonã«ä¿åãããšããããã©ã«ãã®åäœãç¶æããããšã¯æ£ããã§ãããéçºè ãpackage.jsonã«åœ±é¿ãäžããã«ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããå¿ èŠãããå Žåãå®éã«ãããŸãã ç¹ã«ãäžéšã®ããã±ãŒãžã«äºæããªãé倧ãªå€æŽããã£ãå Žåã
ããã±ãŒãžãæé»çã«æŽæ°ããpackage.jsonã«æé»çã«ä¿åãããšã競åãçºçããŸãã
å¥ã®ãŠãŒã¹ã±ãŒã¹ããããŸãã ç§ã¯Reactã©ã€ãã©ãªãç¶æããŠããŸãã æ°ããããŒãžã§ã³ãå
¬éããåã«ã react
ãšreact-dom
ããã€ãã®ããŒãžã§ã³ã«å¯ŸããŠãã¹ããå®è¡ããŠãå€æŽãåŸæ¹ããã³åæ¹ïŒ @next
ïŒãšäºææ§ãããããšã確èªããããšæããŸãã 以äžã®èšå®ã䜿çšããŠãããè¡ã£ãŠããŸããããYarnã®ã¯ãŒã¯ã¹ããŒã¹ã䜿çšãããã®ã§ãYarnã«ç§»è¡ããå¿
èŠããããŸãã
"test:backwards": "npm i [email protected] [email protected] --no-save && npm test",
"test:forwards": "npm i react<strong i="9">@next</strong> react-dom<strong i="10">@next</strong> --no-save && npm test",
"test:latest": "npm i react<strong i="11">@latest</strong> react-dom<strong i="12">@latest</strong> --no-save && npm test",
"test:compat": "npm run test:backwards && npm run test:forwards && npm run test:latest"
ãã®ã¹ã¯ãªããã§package.json
ãå€æŽããããšã¯ã§ããŸãããå€æŽãããšãã¹ããŒãžã³ã°ãããŠããªãå€æŽãåå ã§å
¬éã³ãã³ãïŒ pack publish
ïŒã倱æããããã§ãã
package.jsonãã¡ã€ã«ïŒèªã¿åãå°çšãã¡ã€ã«ããŠã³ãã®å¯èœæ§ããããŸãïŒã«è§Šããã«ããã¹ãç®çã§CIãã€ãã©ã€ã³ã«ããã±ãŒãžãè¿œå ããããšæããŸãã
ãããã¯éçºã³ã³ããŒãã³ãã®äžéšã§ã¯ãããŸããã
éçºãã·ã³ã§ã®éçºããã³ãã¹ãäžã¯ã€ã³ã¹ããŒã«ããããã«ãããã³è£œååäžã¯ã€ã³ã¹ããŒã«ããªãã§ãã ããããã¹ãäžã«CIãµãŒããŒã§ã®ã¿å¿
èŠãã€åãå
¥ããããŸãã
ããã¯npmã䜿çšããã ãã§æ©èœããŸãããyarnã¯npmã®äŸåé¢ä¿ãåãé€ãããšãã§ããã¯ãã§ãã
ããã«ãããyarnã®ã¿ã§ã¯ãªãnpmã®ã¿ã䜿çšã§ããããã«ãªãå¯èœæ§ããããŸãã
ãŸããnpmãã§ããããšãå®è¡ã§ããªããããnpmãå®å šã«çœ®ãæããããšãã§ãããšããçŽæãç Žãã ãã§ãã
ãŸããããã¯éåžžã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãªãããšããžã®ãŠãŒã¹ã±ãŒã¹ã§ããå¿ èŠãããããããã®æ©èœããã©ã°ã®èåŸã«å®å šã«é ããŸãã
åè«ã§ãã ïŒ ç°¡åãªã¹ã€ãããè¿œå ããã®ã«3幎ïŒ
å¥ã®ãŠãŒã¹ã±ãŒã¹ïŒã³ãããåã®ãã§ãã¯ã«npmããã±ãŒãžïŒ git-hoooks
ïŒã䜿çšããŸãã ããŒã ã®å
šå¡ãããŒããã€ã³ã¹ããŒã«ããŠããããã§ã¯ãªãã®ã§ããããpackage.jsonã«å«ãããšãäžéšã®äººã®ã³ããããå£ããŠããŸããŸãã ã ããç§ã¯git-hooksãã€ã³ã¹ããŒã«/åé€ããããšã§ããã¯ãäžæçã«æå¹/ç¡å¹ã«ããnpmã¹ã¯ãªãããäœæããããšããŠããŸãã ãã®äžèŠåçŽã§ç°¡åãªäœæ¥ã糞ã§éæããããšã¯äºå®äžäžå¯èœã§ããããšã«æ°ã¥ããããšã«éåžžã«å€±æããŸããã
å¿é ãªã®ã¯ãyarn.lockãnode_modulesã®å 容ã®çå®ã®ãœãŒã¹ã§ã¯ãªããªããšããããšã§ãããããã«ã€ããŠäœãæªãã®ã§ããããã æ¢åã®é¢æ°ã¯ã远跡ãããŠããªãäŸåé¢ä¿ã®ååšãåã«ç¡èŠããããšã¯ã§ããŸãããïŒ ç³žã¯çŽ æŽãããããŒã«ã§ãããã¡ã³ããã¯JSã³ãã¥ããã£ã«çŽ æŽããããµãŒãã¹ãæäŸããŠããŸãããããã®æ±ºå®ãåèããå¿ èŠããããŸãã
åè«ã§ãã ïŒ ç°¡åãªã¹ã€ãããè¿œå ããã®ã«3幎ïŒ
@spanasikãš@Ryuurock ïŒç¡æã§æäŸãããŠããé«å質ã®ãœãããŠã§ã¢ã«ã€ããŠè©±ãåããšãã¯ç€Œåæ£ããããŠãã ããã
ã¹ã€ãããè€éãããŠå®è£ ã§ããªããããããã¯ã3幎ãããããŸããã§ãããããã¯ãã¡ã³ããããŠãŒã¶ãŒã«ãšã£ãŠæ£å³ã®ã¡ãªããã«ãªããšç¢ºä¿¡ããŠããªãããã§ãã ããã«åæã§ããªãå Žåã¯ããã®æ©èœã«ã€ããŠè°è«ããŠãã ããã
@NickHeinerã¯ã10ç»é¢ã®åŒæ°ã§ãã ãããŠã欲æ±äžæºãåŒãèµ·ããäž»ãªããšã¯ãã¡ã³ãããçŽåŸããŠããªããšããããšã§ã¯ãªãããããç¡èŠããŠãããšããããšã§ãã人ã ããããã«åæããªãå Žåã¯ãæ©èœã«ã€ããŠè°è«ãããå Žåã¯ãè°è«ã«çããªãã§ãã ããã ãããŠã人ã ã欲æ±äžæºãæãããšãããã¡ãã圌ãã¯äžå¿«ãªã³ã¡ã³ããæ®ããŸãã ãã¹ãŠããŠãŒã¶ãŒã®ããã«ããªãã§ãã ããã
ç§ã¯ãã¡ã³ãããããã§ã®è°è«ã«åãçµãã»ããããããšã«åæããŸãã æ°å¹Žã«ããã£ãŠå¹ åºã人ã ããæããã«é¢å¿ãå¯ããããŠããŸãã ãããã£ãŠã @ spanasikãš@Ryuurockãåã«ãè°è«ããããã¹ãã§ãããšããç§ã®ææ¡ã¯ãããã®ä»ã®ãã¹ãŠã®ããã«ç¡èŠãããå¯èœæ§ãé«ããããäžåçã§ãã
ãããŠã人ã ã欲æ±äžæºãæãããšãããã¡ãã圌ãã¯äžå¿«ãªã³ã¡ã³ããæ®ããŸãã ãã¹ãŠããŠãŒã¶ãŒã®ããã«ããªãã§ãã ããã
åæããŸããã ãã®ç¡ç€Œãã¯ãŸã æçšãªåé²ã§ã¯ãªãã倧人ã®éã§åãå ¥ããããè¡åã§ããããŸããã 倱瀌ã§ããããšã¯ãã¡ã³ããããããããã«ç¡èŠããããšãæ£åœåããããã®åªããæ¹æ³ã§ãããã¹ã¬ããã¯ãã ã®ãããŒã«ã§ããã
åé²ããããã®å»ºèšçãªæ¹æ³ïŒ
䟿å©ãªããªãã¯ã¯
yarn add --dev pkg && yarn remove pkg
ã§ãã ããã¯åãããšãããŸãã ããã¯ãã¡ã€ã«ã¯ãã以åã®ç¶æ ã®ãŸãŸãªã®ã§ããã®ãŸãŸã§ãã
ãã¹ãæžã¿-åäœããŸããã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯æ¬¡ã®ãšããã§ãã
äžéšã®ããã±ãŒãžã«ã¯ããrequireãã§ããŒãããããªãã·ã§ã³ã®ã¢ãã€ã³ããããŸãã ãããã®ã¢ãã€ã³ãdevDependenciesã»ã¯ã·ã§ã³ã«è¿œå ããããªãã®ã§ããyarn add my-add-inããå®è¡ããŠãpackage.jsonãã¡ã€ã«ããæåã§åé€ããŸãã ç§ã®ã¯ã©ãŠãCIãã€ãã©ã€ã³ã§ã¯ããnpm iãã䜿çšããŠããããè¿œå ããŸãïŒãã¹ãçšïŒã ããŒã«ã«ãã€ãã©ã€ã³ã§ã¯ãäœåãªããã¯ãã¡ã€ã«ãäœæããããããnpmã䜿çšããããããŸããã ç§ã®æåã®éžæè¢ã¯ãnpmã䜿çšããŠãããããã¯ãã¡ã€ã«ãåé€ããããšã§ãïŒè¡šç€ºãããŠãã2çªç®ã®ããŒãžã§ã³ã®çå®ãåé€ããããïŒã
ãããã£ãŠããã¹ãŠãèªãã åŸãã¡ã³ãããžã®ç§ã®è³ªåã¯æ¬¡ã®ãšããã§ãã
åŠå®ã§ããªãäºå®ã¯ãåªãããœãããŠã§ã¢ã¯ãŠãŒã¶ãŒãèªåã®ç¶æ³ã«æé©ãªãã®ãéžæã§ããããã«ããããããã¹ãŠã®åªãããœãããŠã§ã¢ã«ã¯æ§æèšå®ããããšããããšã§ãã ãããŠãåžžã«ãpackage.jsonããã¡ã€ã«ã«è§Šããããšã¯è¯ãç¿æ £ã§ããããã®å²åŠã®ããã«ãyarnããã¿ã¹ã¯ã«å¯Ÿå¿ã§ããªããšãããšããžã±ãŒã¹ãååšããŸãã
ã·ã³ãã«ã§éãã®ã§ãç§ã¯æ¬åœã«ç³žã奜ãã§ãã ã¡ã³ããã確å®ã«è² ããæŠããæŠã£ãŠããã®ã¯æ¬åœã«æ®å¿µã§ã-ã³ãã¥ããã£ã¯ç©äºãæ©èœãããããã«é ãä¿¡é Œã§ããnpmã«æ»ãããšãäœåãªããããŠããããã§ãã
å°ã枩床ãäžããŸãããã 誰ããå«æªæãæããå¿
èŠã¯ãããŸãã
圌ããç¡æã§äœ¿çšããããšãèš±å¯ãããŠãããœãããŠã§ã¢ã®äžéšã
2020幎1æ15æ¥æ°Žææ¥23:17å±±åŽèVukelic <
[email protected]>ã¯æžããïŒ
糞ãç§ãããæå³ã§åãããŠãããããšã«ããããããŠããŸãã ç§ã¯ããã®ã奜ãã§ã
èªåã§ç©äºã決ããã®ã§ãããããŒã«ãç§ã«ã©ã®ããã«æããŠãããã®ããæ°ã«å ¥ããªã
ããŸãããã¯ãã§ãç§ã®ç¥æ§ãåé¡ã®äžã§æãå°ãªãããšã䟮蟱ãããããŠ
ç©äºãæãéããããšãã§ããªãããšã¯ã矀ãæããŠæ倧ã§ããå®ç§ãªã«ãŒã«ãä¿¡ãããã®æ©äŒã¯æ±ºããŠãªãã ãããšä¿¡ããããš
ããããå£ãã®ã¯ãã€ãŒãã§ãã ããã¹ããã©ã¯ãã£ã¹ããšããã¹ããã©ã¯ãã£ã¹ãã«ã¯éãããããŸã
ããã¥ãŒãªã¢ãã€ãã ãªãªããŒãŠã§ã³ãã«ããŒã ãºã·ãã¢ãèšãããã«ïŒè¥ãç·ã¯èŠåãç¥ã£ãŠããŸãããè人ã¯äŸå€ãç¥ã£ãŠããŸãã
â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/yarnpkg/yarn/issues/1743?email_source=notifications&email_token=AAGKTAZRWD3XJQEGH5N5RL3Q6ACZNA5CNFSM4CVUKFMKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AAGKTAZSB4FNAIFLZIL547LQ6ACZNANCNFSM4CVUKFMA
ã
ããªãèªèº«ã®ããã±ãŒãžãããŒãžã£ãŒãäœã£ãŠãã ããã誰ãããªãã«äœããããŸããã
ãŸã£ããæã£ãŠããŸãããããžãã¯ã®ãšã©ãŒãææããã ãã§ãã
糞ã¯ç§ãç¹å®ã®æ¹æ³ã§åãããŸãã
糞ã¯ããªãã«äœããããŸããã圌ãã¯ïŒç¡æã§ïŒããŒã«ãäœããŸããããããŠããã¯ç¹å®ã®æ¹æ³ã§åããŸãã æ°ã«å ¥ããªãå Žåã¯ãä»ã®ãã®ã䜿çšããŠãã ããã
@foxbunnyå«æªæãæ確ã«ããŠããã ãããããšãããããŸãã :)
ãã®å Žåããããåççã§å«æªæãèŠãããšä¿¡ããŠããŠãããã®ç¡æã§å©çšã§ããããŒã«ãäœæãã人ã ãšè©±ãããã®äžå¯§ãªæ¹æ³ã¯èšèªã§ã¯ãªããšæããŸãã æ¬æãæããªãã建èšçãªãã£ãŒãããã¯ãéãããšãã§ããŸãã
@whitecolorããŒã ã¯ãã€ã³ããç²åŸããŸããã ãã®ãªãã·ã§ã³--saveã¯ã°ãããŠããŸãã ã€ãŒã³ã¯ãnode_modulesãpackage.jsonãããã³ããã¯ãã¡ã€ã«éã®å¹³è¡¡ãä¿èšŒããŸããããã¯ãã°ãããããšã§ãã ããã¯ããå®å šã§ã.... npm--saveã¯å±éºã§ãã äœåºŠããã£ããããŸãã
æ¢ããŠäžãã
ãŸãã¯ã誰ããèªåã®èãã©ããã«æ©èœããããŒã«ã䜿çšããŠãèœã¡çããŠã¯ã©ãã§ããããã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯
ã¢ããªã®ãµãäŸåé¢ä¿ãæŽæ°ããã
ãã®äŸåé¢ä¿ãyarn link
ã«ãªã³ã¯ããŸã
次ã«ãã¢ããªã§ãªã³ã¯ããããã®ã䜿çšããŸã
ã©ã€ãã©ãªã«äŸåé¢ä¿ãè¿œå ããŸã
è¿œå ãããlibäŸåé¢ä¿ã¯ã yarn install
ïŒwtf no.1ïŒã®åŸã«ã¡ã€ã³ã¢ããªã«ã€ã³ã¹ããŒã«ãããŸãã
次ã«ãã¢ããªã«ä¿åããã«ãã°ããè¿œå ããŠãã©ã€ãã©ãªã«æŽæ°ãå
¬éããåã«æ©èœãããã©ããã確èªã§ããããã«ããŸãã
ããã-ãããã
ããããšã
ã³ãã¥ããã£ãäœè ã«ç¡èŠãããŠããã®ãèŠãŠç³ãèš³ãããŸããã
ãªãŒãã³ãœãŒã¹ã®ãã©ã³ãã£ã¢ãšããŠãéŠå°Ÿäžè²«ããå²åŠãŸãã¯
ãããžã§ã¯ãã¯å€§ããªæ³¥ã ããã«å£åããŸãã ããã¯æã
èšãããšãæå³ããŸã
人ã
ã¯ãããŒãã§ãã åæã§ããªãå Žåã¯ãç¬èªã®ããã±ãŒãžãäœæããŠãã ããã
ãããŒãžã£ãŒãã¡ããã©ç³žãnpmã眮ãæããããã«ã
3æ53åã¢ã«ãã¥ãŒã«Kwiatkowskiã§ç«ã2020幎3æ3æ¥ã«ã¯[email protected]
æžããŸããïŒ
ã³ãã¥ããã£ãäœè ã«ç¡èŠãããŠããã®ãèŠãŠç³ãèš³ãããŸããã
â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/yarnpkg/yarn/issues/1743?email_source=notifications&email_token=AAGKTA4K3STUMXFRUDMPJU3RFTVTLA5CNFSM4CVUKFMKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2Z
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AAGKTA7WL4R3R47HBU6EPI3RFTVTLANCNFSM4CVUKFMA
ã
ç§ã¯Lernaã䜿çšããŠããŸããããããžã§ã¯ãã¯åã®ã¹ãããã§æ¢ã«ãã«ããããŠãããã¢ãŒãã£ãã¡ã¯ããåŒãç¶ãããŠãããããå ¬é段éã§CIã¹ãããã®1ã€ã«_only_Lernaãã€ã³ã¹ããŒã«ãããã ãã§ãã ããã¯æå¹ãªã·ããªãªã§ããïŒ
^ç§ã®å ã®ã³ã¡ã³ã-æ£çŽãªãšããããªããããå¿ èŠã«ãªãã®ãããããŸããããŸãããã®ã¹ã¬ãããããã»ã©ã²ã©ãççºããããšãç¥ããŸããã§ãã-ããããããã«ã€ããŠã®é»åã¡ãŒã«ãäœå¹ŽãèŠãã®ã¯é¢çœãã§ãã
ç§ã¯ããã§ã¡ã³ããã«åæããåŸåããããŸãïŒ
ãããã«ããããã®æ©èœã®å¿ èŠæ§ã軜æžããããã®ãããåªãããããã¢ãŒããã¯ãã£çã«é©åãªæ¹æ³ããããããããŸãã
ãã®æ©èœãå®çŸããããã«yarn-add-no-save
ãäœæããŸããã ãããžã§ã¯ãã®ããŒã«ã«ãŸãã¯ã°ããŒãã«ã«ã€ã³ã¹ããŒã«ã§ããŸãã
$ yarn add yarn-add-no-save --dev
# or
$ yarn global add yarn-add-no-save
ã€ã³ã¹ããŒã«ãããã次ã®ã³ãã³ããå®è¡ã§ããŸãã
$ yarn add-no-save <packages> # (yarn-add-no-save when installed globally)
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ã peerDependencies
ã宣èšããã¢ãžã¥ãŒã«ããã¹ãããŠãããŒã«ã«ããããèªåçã«ã€ã³ã¹ããŒã«ããããã€ãã®ãªãã·ã§ã³ãããããã¹ãŠã®ãªãã·ã§ã³ãå®è¡ãããããšã確èªããããšã§ãã
$yarn add-no-save --help
泚ïŒããã±ãŒãžãä¿åããã«ã€ã³ã¹ããŒã«ããããã«ããã±ãŒãžãä¿åããããšã¯ç®èã§ãããåºæ¬çã«ç®çãæãªãããšãèªèããŠããŸãããããã¯ç§ãæãã€ãããšãã§ããæåã®æ¹æ³ã§ãããç§ã®ããŒãºã«åã£ãŠããŸãã
ããã¯ãç¹ã«peerDepsã®ãµããŒãã«éåžžã«åœ¹ç«ã¡ãŸãã ããããšãããããŸããã
ãã®æ©èœã«ã¯ããã€ãã®è¯ãè°è«ããããŸãã ããã¯ããã©ã«ãã§è¡ãã®ãšã¯ç°ãªãã人ã ã¯ãããå¿ èŠãšããŠãã人ã ã ããããã䜿çšãããšããæ確ãªæã®åŸãã«ããããšãæ±ããŠããŸãã çŸåšãä»ã®ããã€ãã®ããã«ãä¿åããããªãä»ã®ã©ã€ãã©ãªããŒãžã§ã³ã§CIäžã«ããã€ãã®ãã¹ããè¡ãå¿ èŠããã
yarn install xxx
ã次ã«yarn remove xxx
ãŸãã
ãã®ãŠãŒã¹ã±ãŒã¹ããããŸã§ã«è°è«ããããã©ããã¯ããããŸããã ç§ã®ç¶æ³ã説æããŠã¿ãŸãããã1ã€ã®ãªããžããªã§çžäºã«äŸåããŠããããã±ãŒãžããããããããŸãã ãããã¯ãã¹ãŠåãå€éšäŸåé¢ä¿ã䜿çšãããã®äžã®ã«ãŒããµãŒãã¹ãµããããžã§ã¯ãã§å ±éã®ããã±ãŒãžã䜿çšããŸããåããŒã«ã«ããã±ãŒãžã¯ã次ã«äœ¿çšããé åºã§ãã«ãããå¿ èŠããããŸãã ç§ã¯ããã«ç³žã®ã¯ãŒã¯ã¹ããŒã¹ã䜿ãããšããŠããŸãã ãŸããã«ãŒãpackage.jsonã«ããŒã«ã«ããã±ãŒãžãå®çŸ©ãããŠããŸããã ãã¹ãŠã®ã³ã³ããŒãã³ããæ§ç¯ãã1ãµã€ã¯ã«ãå®äºãããšãããŒã«ã«ã®äŸåé¢ä¿ãæã€å®å šã«æŽæ°ãããã«ãŒãpackage.jsonãäœæãããŸãã ãã®æŽæ°ããããã®ãCIäžã«æ§ç¯ããããšãè¿œå ããããã¹ãŠã®ããŒã«ã«ããã±ãŒãžã¯ãå¯çšæ§ããªãããã«å€±æããŸãã CIã§æ©èœãããã«ã¯ããããã®æ°ããè¿œå ããããšã³ããªãåé€ããå¿ èŠããããŸãã
yarn install xxx
ã次ã«yarn remove xxx
ãŸãã
åã
ãããå®è¡ã§ããããã«ããããã®ãŠãŒã¹ã±ãŒã¹ã¯æ¬¡ã®ãšããã§ãã
ããŒã«å ã®ãã¢ãã©ã€ã¢ã³ã¹ãçšã®ã¢ãžã¥ã©ãŒãšã³ã·ã¹ãã ãåããããŒã«ãæ§ç¯ããŠãããããŒã«ã«ã€ã³ã¹ã¿ã³ã¹ããããã®ã¢ãã©ã€ã¢ã³ã¹ã§ã»ããã¢ããããæ§æãä»ããŠåçã«ã¢ã¯ãã£ãåããããšãèšç»ããŠããŸãã ã¢ãã©ã€ã¢ã³ã¹ã¯npmã«å ¬éãããŸãïŒèª°ããå¿ èŠãªå Žåã¯ããã¬ãŒã ã¯ãŒã¯ã®å€éšã§åŒã³åºãããšãã§ããŸãïŒã
ããã©ãããžã§ã¯ãã¯ãããã®ããã±ãŒãžã«äŸåããªãããã package.json
ä¿åããããšã¯äžé©åã§ãã ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ã®æ§æã§ã¯ãããã±ãŒãžã®1ã€ãããŒã«ã«ã«ã€ã³ã¹ããŒã«ããå¿
èŠãããå ŽåããããŸãã
ãã®æ©èœããªãããšã¯ãç§ãã¡ã®ãããžã§ã¯ãã«ãšã£ãŠå¶éçãªæ±ºå®ã§ããããã«æãããŸããã代æ¿ã¢ãããŒããåŒãç¶ãæ€èšããŸãã
ããã§ãã¡ã³ãããã®è¿äºãèªãåã¯ãç§ã¯ãããŸã§ã§æãé åºãªäººã ãšæã£ãŠããŸããã
ã»ãŒ4幎...ð€Š
ãé åºããã¯ããã¶ã€ã³ããžã§ã³ãæã¡ã誰ããæ±ãããã®ãã¹ãŠãå®è¡ããªããããšãšåãã§ã¯ãããŸããã
ãé åºããã¯ããã¶ã€ã³ããžã§ã³ãæã¡ã誰ããæ±ãããã®ãã¹ãŠãå®è¡ããªããããšãšåãã§ã¯ãããŸããã
ãã¶ã€ã³ããžã§ã³ã¯ããããŒãã¹ã説æããããã§èŠæ±ããããã®ãšããŠããããè±åºããããåºãã³ãã¥ããã£ã®æçšæ§ãé«ããŸãã
ãããªãŒãã©ãŒã ãã®ã€ã³ã¹ããŒã«ã远跡ããã»ã¯ã·ã§ã³ãšçŸç¶ã®å¢åã¹ãããã·ã§ããïŒ node_modules
ïŒãããã¯ãã¡ã€ã«ã«è¿œå ããŠãããããå®å
šã«å
ã«æ»ããããã«ããªãã®ã¯ãªãã§ããïŒ ãŸãã¯ãnode_modulesãšã¯å¥ã®ãã©ã«ããŒã«äŸåé¢ä¿ã眮ããnode_modulesã䜿çšããŠãªã³ã¯ãããã±ãŒãžã«å
¬éãç¶ãããšãYarnã¯å®éã«èªåã§ç®¡çã§ããç®ã«èŠããªãã€ã³ã¹ããŒã«ãäžæžãããããå£ãããããå¿é
ã¯ãããŸããã
Gitã¯ããªãã®æ°å幎åã«ãã®åé¡ã解決ããŸãããè¿œãã€ããŠãã ããïŒ äœããæãä»ãã ãã§ãïŒ ãããèšèšã§ã-å¶éãšæŠãïŒãŸãã¯å¶éã«å±ããïŒã®ã§ã¯ãªããå¶éãåé¿ããŸãã
ããã®äž¡ç«¯ã®ãã³ãã«ããžã§ã³ã¯ãç¡ç¥ãèãããããããŠäžå¿ èŠãªäºæ¥µåããçãŸããŠããŸãã æŠéãå²åŠãé©åœãæ¿æ²»ã¯ãããŸããã ãã ã®ããŒã«ãããããã®ã³ãŒãããããŠããã¹ãä»äºããããŸãã ããŒã«ãä»äºãæãéããã®ãå©ããããšãã§ããªããªãã°ãããã¯ãã®ç¹å®ã®ã·ããªãªã®ããã®ããŒã«ã§ã¯ãããŸããã ãããŠãYarnã®ããã«ã亀æã§å®å šãªæ±çšã§ãããšç§°ããããŒã«ã®å Žåãããã§ã¯ç¡èŠãããŠããäžè¬çãªã·ããªãªãéåžžã«å€ããããåã«ç¬èªã®å¢ãæã£ãŠããŸãã
çãäžãäžåšã§ãããšãã¿ããªãæŒãåã£ãŠãããããªæ°ãããŸãã
æãåèã«ãªãã³ã¡ã³ã
ãªããªãŒããŒããããªã«æèŠãèšã£ãŠããã®ãããããŸããã ããªããããã®äœ¿çšæ³ãèŠãªããªãã°ãããããªããšããæå³ã§ã¯ãããŸããã 人ã ããããæ±ããã°ãããã¯åœŒãããããå¿ èŠãšããŠããããšãæå³ãã圌ãã¯å¿ ãããæãã§ã¯ãªããšç§ã¯ä¿¡ããŠããŸãã
ãªãã·ã§ã³ã®
--no-save
ãªãã·ã§ã³ãè¿œå ãããšãäžéšã®äººã ã®åé¡ã解決ãããæ¬ ç¹ã¯ãŸã£ãããããŸããã