TARSã«é¢ããææ°ãã¥ãŒã¹ïŒ 1åãš2å ïŒãã次ã®6ãæãçµéããŸãããã€ãŸããææ°ãã¥ãŒã¹ãå ±æããæã§ãã ãã€ãã®ããã«ãTARSã¯GulpããŒã¹ã®ããã³ããšã³ããã«ããŒã§ãããããã³ããšã³ãéçºè ãããŒã å šäœãè€éãªãããžã§ã¯ããäœæããã®ã«åœ¹ç«ã€ããšãæãåºããŸãã ç§ãã¡ã¯ãã·ã¢ã ãã§ãªããèªä¿¡ãæã£ãŠè¡é²ãç¶ããŠããŸãã TARSã¯ããªã©ã³ããæ¥æ¬ãäžåœããŠã¯ã©ã€ããããŒã©ã³ããªã©ã§ãã§ã«äœ¿çšãããŠããŸãã ããã¯ã GitHubã®æã®æ°ã gitterã®ãã£ããåå è ã®æ°ãããã³å æïŒ1,000以äžãããŒã¯æã¯3000以äžïŒã®TARS-CLIã€ã³ã¹ããŒã«æ°ã®äž¡æ¹ã§ç¢ºèªã§ããŸãã ã»ãŒ200件ã®åé¡ãã¯ããŒãºãã2ã€ã®äž»èŠãªã¢ããããŒãããªãªãŒã¹ããŸããã ã³ã¬ã¯ã¿ãŒãŠãŒã¶ãŒã¯ç©æ¥µçã«å ±åããéçºã«åå ããŸãã å°ããªã³ãã¥ããã£ããããšèšããŸãã
倧ããªå€æŽ
TARSã¯ãäºçŽãªãã§ãæ¬åœã«ã¢ãžã¥ãŒã«åãããŸããã æã¡äžããšçµã¿ç«ãŠã®é床ãå€§å¹ ã«åäžããŸããã æãéèŠãªå€æŽã«ã¯ããããžã§ã¯ãã®webpackãšèªåæŽæ°ïŒã³ã¬ã¯ã¿ãŒã®ããŒãžã§ã³ã®æŽæ°ããã©ãŠã¶ãŒã§ã®åèµ·åã§ã¯ãªãïŒãå«ãŸããŸãã
æåŸã«ããã¡ã€ã«ãé£çµããã ãã§ãªãJavaScriptãæ§ç¯ã§ããŸãã 2016幎ã«TARSã§ã®ã¹ã¯ãªããã®ãã«ããéåžžã«é ããŠããããšã¯æ®å¿µã§ãããããŸããã Webpackã¯JavaScriptã§è§£æŸãããŸããã ããã«äœ¿çšã§ããTARSã§ããµããŒããããŠããHot Module Replacement㯠ãé©ãã»ã©æ©èœããŸãã ãŸãããã©ãŠã¶åæã®ã¹ã¿ã€ã«ã®injectChangesãªãã·ã§ã³ã䜿çšãããšãéçºã¯çŽ æŽããããã®ã«ãªããŸãããã©ãŠã¶ã¯åèµ·åããŸãããããã®å Žã§CSSãšãå¯èœã§ããã°JavaScriptã®å€æŽãé©çšããŸãã ããã«é²ããšãã¹ã¿ã€ã«ãšãã³ãã¬ãŒãã®äœæ¥ãwebpackã«ç§»è¡ã§ããŸãã TARSã®ã¿ã¹ã¯ã¯ç°¡åã«åå®çŸ©ã§ããããã«ãªã£ããããCSSãšãã³ãã¬ãŒãã®è²¬ä»»ã®ç§»è»¢ã¯webpackã䜿çšããŠç°¡åã«å®è£ ã§ããŸãã JavaScriptã®æ§ç¯ã®ã¿ã説æããå Žåãwebpackã¯å€ãã®æ©èœãæäŸããŸãããããã®æ©èœã¯ããã¥ã¡ã³ãã§èªã¿ããããªã£ãŠããŸãã ããã«ã2çªç®ã®ããŒãžã§ã³ïŒããŒã¿ãã¹ã段éïŒããã Tree shakeãç»å ŽããŸãããããã«ãããã¢ãžã¥ãŒã«ã§å®éã«äœ¿çšãããŠããã³ãŒãã®ã¿ãã¢ããªã±ãŒã·ã§ã³ã®åãã€ã³ãã«ã€ã³ããŒãã§ããŸãã
webpackããããžã§ã¯ãã«å ¥ã£ãŠãããšããã¹ãŠãwebpackãšnpmã¹ã¯ãªããã§å®è¡ã§ããå ŽåãGulpãå¿ èŠãªçç±ãå°ããããšãã§ããŸããïŒ ããã§ã®çãã¯éåžžã«ç°¡åã§ããGulpã䜿çšãããšããã¹ãŠãã¯ããã«ç°¡åã«ãªããŸãã
å®éãwebpackã«ã€ããŠã¯çåããããŸãããTARSã§ã¯ããã³ãã¬ãŒããã³ã³ãã€ã«ããŠCSSãæ§ç¯ãã察å¿ããããŒããŒã䜿çšããã¿ã¹ã¯ããªãã«ããã ãã§ãã ãããã£ãŠã質åãå¥ã®æ¹æ³ã§èšãæãã䟡å€ããããŸãããã®æ©èœãnpmã¹ã¯ãªãããå®è¡ã§ããã®ã«ãGulpã®åœ¢åŒã§äœããã®æœè±¡åãå¿ èŠãªã®ã¯ãªãã§ããïŒ
npmã®å®å šãªãã¯ãŒãšå©ç¹ã説æããå€ãã®èšäºããã§ã«æžãããŠããŸãã æã説åŸåã®ããè°è«ã«çããããšããŸãã ããã«æããã«ãã䟡å€ããããšæããŸããå€ãã®ã¿ã¹ã¯ãããããããã®éã«å®è¡é åºã«äŸåé¢ä¿ãããå Žåã«ã€ããŠè©±ããŠããŸãã
æåã«ãã¿ã¹ã¯ãé£ç¶ããŠäžŠè¡ããŠèµ·åããç¬èªã®å®è£ ãäœæããå¿ èŠããããŸãã ãããå®ç§ã«è¡ãããšãã§ããGulpãããå Žåããªãã§ããïŒ ããã«ãç¹å®ã®ãã¡ã€ã«ã»ãããåŠçãããšãã«ã¹ããªãŒã ãæäœãããšäŸ¿å©ãªå ŽåããããŸãã ãã®ãããªæ©èœãèªåã§èšè¿°ããããåã«ç Žæ£ããå¿ èŠããããŸãã
npmã¹ã¯ãªãããžã®åãæ¿ããæ¯æããæ·±å»ãªè°è«ã¯ãGulpã®ãã©ã°ã€ã³ãµããŒããäžååã§ãããšããããšã§ãã UglifyJSãPostCSSãªã©ã®ããŸããŸãªã¢ãžã¥ãŒã«ã®ã©ãããŒã§ããgulpãã©ã°ã€ã³ã«ã€ããŠèª¬æããŠããŸãã åœç¶ãããšãã°UglifyJSã®æŽæ°ãšgulp-uglifyã®éã«ããããªãé ããããããããããŸããããå€ãã®å Žåãããã¯å¿ é ã§ã¯ãããŸããã Gulpãã©ã°ã€ã³ã®äœæè ãšããã®ãã©ã°ã€ã³ãäœæãããããã±ãŒãžã1人ã§ããããšããããããŸãã 誰ããéçºãåçŽã«æŸæ£ããããšãå¯èœã§ãã ãã®å Žåãäœæè ã®éçºãç¶ããããgulpã©ãããŒãªãã§ããã±ãŒãžãçŽæ¥äœ¿çšã§ããŸãã ãããã£ãŠãTARSã®webpackã¯æ©èœããŸãã
ãããŠæåŸã«ãpackage.jsonã®é·ããããã¯ãã¹ãããã¿ã¹ã¯ã®æäœãã¯ããã«å¿«é©ã§ãã ãã¡ãããããã€ãã®ã¿ã¹ã¯ãããªããããžã§ã¯ãã§ã¯ããããã¯ãã¹ã¯ã»ãšãã©äžå¯èœã§ãã TARSã®å Žåã1ã€ã®ããŒã«ã§å¯èœãªéãå€ãã®éçºè ã®ããŒãºãã«ããŒããããšããŠãããã¿ã¹ã¯ã®é 次å®è¡ãšäžŠåå®è¡ã®éã«è€éãªäŸåé¢ä¿ãããå Žåãnpm-scriptsã®äœ¿çšã¯æ£åœåããããã¹ãã£ãã¯ããã€ãŒã«ã«æ¿å ¥ããŸãã
Gulpã¯éåžžã«äœ¿ãããããã®ã§ãããŸããŸãªãã©ãããã©ãŒã ã§ããŸããŸãªç°å¢ã§ãã¹ããããŠããŸãã 䜿çšå¯èœãªAPIã¡ãœããã¯4ã€ã ãã§ã䞊åããã³é 次ã¿ã¹ã¯èµ·åçšã®è€éãªã¹ã¯ãªãããäœæã§ããŸãã æçµçã«ã¯ãTARSãæ©èœããã ããªã®ã§ãGulpãå éšã«ããããšãç¥ãå¿ èŠãããããŸããã
WebpackãµããŒããå€ãã®ãããžã§ã¯ãã§é·ãéå®è£ ãããŠããå ŽåïŒããã³ãã«ããŒãwebpackã®ã¿ã§ãã«ããããŠããå ŽåïŒã誰ããããžã§ã¯ãã®èªåæŽæ°ãªã©ã®æ©èœãæäŸããŸããã TARSã䜿çšãããšãWebãµã€ã/ãµãŒãã¹/ä»ã®äœããå®å šã«éçºãã1ã€ã®ããŒã ã§ãã¹ãŠã®ææ°ã®TARSæ©èœãååŸã§ããŸãã ãã®å Žåããã¹ãŠã®èšå®ããããžã§ã¯ããã¡ã€ã«ããŠãŒã¶ãŒã¿ã¹ã¯ããŠã©ããã£ãŒãä¿åãããŸãã æšæ¥ãJavaScriptãã¡ã€ã«ãé£çµããä»æ¥ããããžã§ã¯ããæŽæ°ããŠãwebpackã䜿çšããæ©äŒãåŸãŸããã ãã¹ãŠã®æŽæ°æé ãèšé²ãããŸããããã«ããããžã§ã¯ãã®æŽæ°æã«èµ·åãããç¬èªã®ããŒã ãè¿œå ããæ©äŒããããŸãã
次ã¯ããã»ã©éèŠã§ã¯ãããŸããããããã»ã©æçšãªå€æŽã¯ãããŸããã
æçšãªããããªããš
ESLintã¯JSCSãšJSHintã眮ãæããŸããã ãšããã§ãæè¿JSCSãããžã§ã¯ãã®ã¡ã³ãããŒã§ããMarat Dulin ã¯ãJSLCããŒã ãESLintãããžã§ã¯ãã«ç§»è¡ããããšãçºè¡šããŸãã ã ãããã£ãŠããŸã ESLintã䜿çšããŠããªãå Žåã¯ãå§ããŸãããã ã³ãŒãæ€èšŒã¯ã¯ããã«éãééãå§ããŸãããèšå®ãæäœãããšäŸ¿å©ã§ããäžè¬çã«ã¯ãããããåŽé¢ããã®å©äŸ¿æ§ã§ãã
TARSããã³TARS-CLIã³ãŒãã¯ãES6ã§åŸ¹åºçã«ãªãã¡ã¯ã¿ãªã³ã°ããã³æžãçŽãããŸããïŒNodeJSããŒãžã§ã³4ã§äœ¿çšå¯èœãªæ©èœã®ãµããŒãä»ãïŒã äžè¬ã«ããã¹ãŠãããæ確ã«ãªããç解ãããããªããŸããããã®ç¹ã«é¢ããŠã¯ããã«ãªã¯ãšã¹ããå¢ããããšãé¡ã£ãŠããŸãã ã¡ã€ã³ã®gulpfileã¯30è¡ãããªããããç®ã楜ããŸããŠããŸãã ã³ãŒãã¯ES6ã§èšè¿°ãããŠããããã4以äžã®NodeJSããŒãžã§ã³ã®ãµããŒããæŸæ£ããªããã°ãªããŸããã§ãããããã¥ã¡ã³ããæŽæ°ãããå€ãã®ã¿ã€ããã¹ããšã©ãŒãªã©ãä¿®æ£ãããŸããã
SVGæåã䜿çšããæ©èœãè¿œå ãããŸããã åæã«ãæ¢è£œã®æåã®ã¹ãã©ã€ããæ¥ç¶ãããªãã·ã§ã³ãéžæããããšãã§ããŸãïŒåããŒãžã®æ¬æã«ã¹ãã©ã€ãã³ãŒããæ¿å ¥ãããã¹ãŠã®æåãåå¥ã®ãã¡ã€ã«ã«ä¿æããæ¥ç¶ãããšãã«ãã®ãã¡ã€ã«ãžã®ãã¹ãïŒèªç¶ã«ãèªåçã«ïŒæå®ããããæåãå«ããã¡ã€ã«ãã¢ããããŒãããŸãã
ã¢ãžã¥ãŒã«ã¯ã³ã³ããŒãã³ãã«ååãå€æŽãããŸããã ãã®å Žåãæ°ããååãæ°ã«å ¥ããªãå Žåã¯ãæ§æã§ã³ã³ããŒãã³ã/ã¢ãžã¥ãŒã«ãå«ããã©ã«ããŒã®ååãæ§æã§ããŸãã ããã§ãã³ã³ããŒãã³ããã³ã³ããŒãã³ãã«æ¿å ¥ã§ããŸãã ãã®æ©èœã¯ãCLIãŠãŒãã£ãªãã£ã§ããµããŒããããŠããŸãã
CLIã䜿çšããŠã«ã¹ã¿ã ã³ã³ããŒãã³ããäœæããããã®å€ãã®èŠæ±ããããŸããã ããªããå°ãã-ç§ãã¡ã¯ãã£ãïŒ ããã§ãjsonãã¡ã€ã«ã§ã³ã³ããŒãã³ãå³ãèšè¿°ã§ãã奜ããªã ãã¹ããŒã ãäœæã§ããŸãã
TARSã§äœ¿çšãããã»ãšãã©ãã¹ãŠã®ãã©ã°ã€ã³ã¯ã1ã€ã®å ±éã®æ§æãã¡ã€ã«ã§äŸ¿å©ã«æ§æã§ããŸãã
èªåé£çµã§ã¯ãªããæçµã¢ã»ã³ããªã§å¿ èŠãªãã®ã®ã¿ãã€ã³ããŒãã§ãããšã³ããªãã€ã³ãã䜿çšããŠãã¹ã¿ã€ã«ãã³ã³ãã€ã«ããæ©èœãå®è£ ããŸããã ããã«ãããã¹ã¿ã€ã«ã®æäœã®èªç±åºŠãé«ãŸãããšãæåŸ ããŠããŸãã
Jadeãã³ãã¬ãŒãã®åæ§ç¯ãå€§å¹ ã«å éããŸããã ããã§ãå¯èœãªãã¹ãŠããã£ãã·ã¥ãããã®æ®µéã§æ¬åœã«å¿ èŠãªãã®ã ããåã³ã³ãã€ã«ããŸãã
ãããŠæãéèŠãªããšã¯ã次ã®ã³ãã³ããå®è¡ããã ãã§ãããããã¹ãŠã®ã€ãããŒã·ã§ã³ãååŸã§ããããšã§ãã
tars update-project
ãããžã§ã¯ãã¯ããã¹ãŠã®èšå®ãä¿åãããææ°ããŒãžã§ã³ã«èªåçã«æŽæ°ãããŸãã
ä»åŸã®èšç»
TARSã®éçºã¯æ¢ãŸããŸããããŸã å®è£ ãããããšããããããããŸãã
- ããŒã¿ãã¹ããçµäºãããšããæçµçã«Gulpã®ããŒãžã§ã³4ã«åãæ¿ããŸãã
- ããŒã¿ãã¹ããçµäºããããwebpackã®2çªç®ã®ããŒãžã§ã³ã«åãæ¿ããŸãã
- JavaScriptã³ã¬ã¯ã¿ãŒãšããŠ[Rollup]ïŒhttps://github.com/rollup/rollupïŒã®äœ¿çšãæå¹ã«ããŸãã
- TARSãã©ã°ã€ã³ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæããŸãã ãã©ã°ã€ã³ã·ã¹ãã -ãçããã¿ã¹ã¯ã解決ããããã«å¿ èŠãªTARSãžã®ããŸããŸãªè¿œå ã æãç°¡åãªäŸã¯ãæåãæ€åããã¿ã¹ã¯ã§ãã ãtars install tars-emailããšå ¥åããã ãã§ãé»åã¡ãŒã«ã®ã¬ã€ã¢ãŠãã§å¿«é©ã«äœæ¥ã§ããããã«ãããŒã«ã«ã®TARSã«ã¿ã¹ã¯ãè¿œå ããããšæ³åããŠãã ããã
- ããªããã»ããµãªãã§PostCSSã䜿çšããæ©èœãå®è£ ããŸãã
- cssã¢ãžã¥ãŒã«ã®ãµããŒããå®è£ ããŸãã
- æçµçã«ããã¢ãŒã·ã§ã³ãµã€ããå®æãããŸãã
- TARSããã³TARS-CLIã®ãã¹ããããã«äœæããŸãã
çŸåšãTARSã¯ä»¥åã®ããŒãžã§ã³ãšã®äºææ§ãæãªãããšãªãéçºãããŠããŸãããã®ããããšã³ãã£ãã£ã¯æ°ããããŒãžã§ã³ã®ãŸãŸã§ãããåé€ããŠãããã§ãããã ãã®äºææ§ãå£ããŠã次ã®ããŒãžã§ã³ã§äœåãªãã®ããªããªãããã«ããŸãã å°ãªããšãåèªåã§1.xxãã2.xxã«æŽæ°ããã¡ã«ããºã ãå®è£ ããŠãã ãã
ãããªãèšç»ã«ã€ããŠã¯ã githubã§ãã©ããŒã¢ããããŠãã ããã ããã§ãããžã§ã¯ãã«åœ±é¿ãäžããããšãã§ããŸãã ç§ãã¡ã¯åžžã«æ°ããã¢ã€ãã¢ãåãã§ããŸãã gitterã«æžã蟌ã¿ãé»åã¡ãŒã«tars.builder@gmail.comè¿ãå°æ¥ãSlackãTelegramã«ãã£ã³ãã«ã衚瀺ãããå¯èœæ§ããããŸãã