ãããžã§ã¯ãã®ãã«ãããã»ã¹äžã«çŽ80åã®Lessãã«ãã䞊è¡ããŠå®è¡ããLess.jsã®æ°ããããŒãžã§ã³ã倧éã®ã¡ã¢ãªã䜿çšããŠããŒããã¯ã©ãã·ã¥ãããããæè¿ãã«ãã倱æãå§ããŸããã ã¯ã©ãã·ã¥ã远跡ããŠãLess.jsãã3.9.0ãã3.10.3ã«ã¢ããã°ã¬ãŒãããŸããã
Lessã¹ã¯ãªãããå€æŽããŠããã¡ã€ã«ãé çªã«ã³ã³ãã€ã«ãïŒäžåºŠã«2ã€ã®ãã¡ã€ã«ãäœæïŒãããã»ã¹äžã«ããŒãã®ã¡ã¢ãªäœ¿çšéããµã³ããªã³ã°ãããšã次ã®çµæãåŸãããŸããã
Less.jsã¯çŸåš130ïŒ å€ãã¡ã¢ãªã䜿çšããŠããããã§ãã³ã³ãã€ã«ã«çŽ100ïŒ é·ãããããŸãã
Less.jsã®ãã³ãããŒã¯ãè¡ã£ããã©ããããŸãåæ§ã®çµæãåŸããããã©ããçåã«æã£ãŠããŸã
ããã¯å€ã§ãã Nodeã®ããŒãžã§ã³ã¯äœã§ããïŒ
@ PatSmuk360 3.10.0ã®ã¡ã¢ãªãããã¡ã€ã«ããã¹ãããŠååŸãããããç°ãªããã©ããã確èªã§ããŸããïŒ
ææ°ããŒãžã§ã³ã®10ïŒ10.16.3ïŒãå®è¡ããŠããŸãã
åã®ããŒãã¹ãããã·ã§ããïŒ
åŸã®ããŒãã¹ãããã·ã§ããïŒ
ãŸããããŒã12.10.0ãè©ŠããŠã¿ãŸããããã·ãŒã±ã³ã·ã£ã«ãã«ãã®ããæç¹ã§587 MBã®ã¡ã¢ãªäœ¿çšéã«éããããã«æªåããŠããããã§ãã
以åã®CPUãããã¡ã€ã«ïŒ
CPU-20190916T133934.cpuprofile.zip
åŸã®CPUãããã¡ã€ã«ïŒ
CPU-20190916T134917.cpuprofile.zip
@ PatSmuk360ã€ãŸããé·çã¯ããããã®ããŒãžã§ã³ã®éãã¯ãã³ãŒãããŒã¹ãES6æ§æã«å€æãããããšã§ãã ããã¯æè¡çã«ã¯é倧ãªå€æŽã§ã¯ãªããããã¡ãžã£ãŒããŒãžã§ã³ã§ã¯ãããŸããã§ããã
ããã...ç§ã®çãã¯ããªããžã§ã¯ã/é åæ¡æ£æ§æã®ãããªãã®ã®ããã®ããã«å€æã®ããã€ãã¯ãããåé·ãªES5ããŒãžã§ã³ãããå¹çãæªããšããããšã§ãã ããšããšããŒã6以éãšäºææ§ã®ãããã©ã³ã¹ãã€ã«ããã±ãŒãžããšã¯ã¹ããŒãããŠããã®ã§ã3.10.0ããã¹ãã§ãããã©ããå°ããŠããã®ã§ãããã¯ã©ã¹æ§æãåŠçã§ããªãç¹å®ã®ã©ã€ãã©ãªãšã®
ã©ã®ES5å€æãããŸãæ©èœããŠããªãããæ£ç¢ºã«ææ¡ã§ããã°ãçè«çã«ã¯ããããã®Babelãšã¯ã¹ããŒãèšå®ãããããã©ãŒãã³ã¹ã®é«ããšã¯ã¹ããŒãã«èšå®ã§ããŸãã
@ PatSmuk360ã¡ãªã¿ã«ãsplit
é¢æ°ã¯äœã§ããïŒ
@ matthew-deanããã¯String.prototype.split
ã§ãã Chrome devtoolsã§ãããã¡ã€ã«ãéããšãè²åãããããã¹ãŠã®ããŒã¿ã確èªã§ããŸãã ããã«ããã¯ãç°¡åã«æ€æ»ã§ããããã«ããœãŒã¹ãšããŠhttps://cdn.jsdelivr.net/npm/[email protected]/dist/less.cjs.js
ã«ãªã³ã¯ããããã«ãããã¡ã€ã«ãå€æŽããããšããŠããŸãã *.cjs.js
ãã*.js
ãã¡ã€ã«ã«äœ¿çšã§ãããœãŒã¹ãããã¯ãããŸããïŒ https://cdn.jsdelivr.net/npm/[email protected]/dist/less.min.js.map
ãã¡ã€ã«ã¯.min
ãã¡ã€ã«ãES6ãœãŒã¹ã«ãããããŠããããã§ãã ãã¶ãããœãŒã¹ããããéçºããŒã«ã«ãã£ãŒãããŠããã©ã³ã¹ãã€ã«ãããã«ããã¯ãåŒãèµ·ãããŠããå Žæãç¹å®ã§ããããã«ããããšãã§ããŸãã
ç¹å®ã®https://github.com/less/less.js/blob/cae5021358a5fca932c32ed071f652403d07def8/lib/less/source-map-output.js#L78ã®ãã®è¡ã«ã¯ãCPUæéãé·ãããã§ãã ãããããããå®è¡ããæäœãèãããšãããã¯ç§ã«ã¯å Žéãã«æããŸããã
ããŒããããã¡ã€ã«ã®çµéšã¯ããŸããããŸããããç§ãç®ç«ã€ã®ã¯(closures), (system), (array), system / Context
éã®å¢å ã§ãã ãããCPUãããã¡ã€ã«ã«é¢é£ä»ããããšãããšããããã®ãªããžã§ã¯ããå¢ãããšãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«è²»ããããæéã倧å¹
ã«å¢ããããã§ãã
@kevinramharakäžè¬ã«ãæ·±ãã_n_ã®Lessã®ãããªASTããCSSã®ãããªã·ãªã¢ã«åããããã©ãããªåºåããªãŒã«å€æããã«ã¯ãå€ãã®äžæçãªãªããžã§ã¯ãã®äœæãå¿ èŠã§ãã ãããã£ãŠãçºçããå¯èœæ§ãããã®ã¯ãç¹å®ã®å€æã§ãè¿œå ã®_x_éã®ãªããžã§ã¯ããè¿œå ãããããšã§ãã äžæçã«ã§ããåããŒãããªããžã§ã¯ãã2ã3åäœæããããŒãæ°ã«ã«ãŒã«ããã©ããåããå¿ èŠãããåæ°ãæããææ°é¢æ°çãªå¹æãåŸãããšãã§ããŸã...åèšãããšããããŸããã ES6æ§æãæ¬è³ªçã«ES5æ§æã®æ§æç³è¡£ãšããŠæ¬è³ªçã«èããããšã¯ãããããäžè¬çã«ã¯ãã€ãŒãã§ããã ïŒJavaScriptéçºè ã¯ãããããããã«ã€ããŠäžè¬çã«çœªãç¯ããŠããã§ããããïŒå®éã«ã¯ãæ°ããæ§æããã©ã³ã¹ãã€ã«ãããšãããã©ãŒãã³ã¹ã®äœãES5ãã¿ãŒã³ãäœæãããå¯èœæ§ããããŸãã éçºè ã®99ïŒ ã«ãšã£ãŠãããã¯å€§ããããšã§ã¯ãããŸããããªããªãã圌ãã¯1ç§éã«æ°çŸãŸãã¯æ°ååãã®ã³ãŒããå埩ããŠããªãããã§ãã ããããä»ã«å€§ããªå€æŽã¯ãªãã£ãã®ã§ãããã¯äœãèµ·ãã£ãŠãããã«ã€ããŠã®ç§ã®æšæž¬ã§ãã
@kevinramharak ReïŒãœãŒã¹è¡-ããã¯ãå ã®LessããŒãµãŒãå ¥åã®è¡/åã远跡ããªãããã§ãããããã£ãŠããœãŒã¹ãããã³ã°ãè¿œå ãããå Žåãå ã®è¡ã«ãããããæ¹æ³ãç解ããããã«ãåºæ¬çã«å ¥åãè¡ã«ãã£ã³ã¯ããå¿ èŠããããŸããããœãŒã¹ã ããã¯4.x +ã§ã¯åé¡ã«ãªããŸãããããããä»ããã§å€ãã®æéãè²»ããçç±ã¯çã«ããªã£ãŠããŸãã
ç§ã¯ãã©ãŠã¶ã§less.min.jsã䜿çšããŠããŸããã3.10.3ã¯ä»¥å䜿çšããŠãã2.7.3ããã2åé ããªã£ãŠããŸãã ChromeãšFirefoxã®äž¡æ¹ã
@ PatSmuk360ãã®ãã©ã³ãããã§ãã¯ã§ããŸããïŒ https://github.com/matthew-dean/less.js/tree/3.11.0
èŠããã«ãããã«ã®ES5ãžã®ãã©ã³ã¹ãã€ã«ã¯ã¡ãã£ãšã²ã©ããã®ã§ãããã¯ã©ã¹ããã©ã³ã¹ãã€ã«ããããã«å€§éã®Object.definePropertyåŒã³åºãã䜿çšããŸãã ãã©ã³ã¹ãã¬ãŒã·ã§ã³ãTypeScriptã«åãæ¿ããŸãããããã¯ãé¢æ°ãããã¿ã€ãã®åºåãéåžžã«åªããŠããŸãã
ããã¯ãã¹ãŠåé¡ãªããã³ãã£ã§ããããããå®è¡ããåŸãLessã®ãã©ãŠã¶ãã¹ãã¯éåžžã«å€ããŠå€ãPhantomJSã䜿çšããŠããããå®è¡ãããŸããããããŸã§ã®ãšããã誰ãïŒç§ãå«ããŠïŒPhantomJSãããã¹ããæ£åžžã«ç§»è¡ã§ããŠããŸããããããã¬ã¹ã¯ããŒã ã«ã
ãã ããäžåºŠã«1ã€ã®åé¡ããããŸãããã®ãã©ã³ãã®distãœãŒã¹ã«ã¡ã¢ãªã®åé¡ããªãå Žåã¯ããã©ãŠã¶ã®ãã¹ãã§ããæ··ä¹±ã«åãçµãããšãã§ãããããããŸããã
Lessãã©ãŠã¶ãã¹ããHeadlessChromeã«ç§»è¡ããããšãã§ããŸããããããã©ãŒãã³ã¹/å®å®æ§ã®èŠ³ç¹ãããå€æãã€ãã©ã€ã³ãå®å šã«BabelããTypeScriptã«å€æŽãããããå®å šã«ããŒãžããåã«ãŠãŒã¶ãŒããã®å€ãã®ãã£ãŒãããã¯ãå¿ èŠã§ãã
çŸåšã®ãã©ã³ãã¯ããã§èŠã€ããããšãã§ããŸãïŒ https ïŒ
ããã§ã2.7ãã2åé ãã
@alecplããã¯è¯ãæ å ±ã§ããã3.11.0ã3.10ãããæ¹åãããŠãããã©ãããæ¬åœã«ç¥ãããã§ãã
ããã«ã€ããŠã®å¥åŠãªããšã¯ã_çè«çã«ã¯_ãå ã®Lessã³ãŒããLebabã§å€æãããããšã§ããããã¯ãBabelã®å察ã§ããã¯ãã§ãã ã€ãŸããES5-> ES6-> ES5ã¯ã»ãŒåãã§ããå¿ èŠããããŸãããæããã«ããã§ã¯ãããŸããã ãããã£ãŠãES6-> ES5ã³ãŒããå ã®ES5ã³ãŒããšã©ã®ããã«ç°ãªããã調æ»ããå¿ èŠããããŸãïŒä»ã®èª°ããæéãæã£ãŠããªãéãããµããŒããæè¿ããŸãïŒã
@alecpl
ããã§ãããŸããŸãªãã¹ããå®è¡ãããããã¬ã¹Chromeã§3.11.0察3.10.3察3.9.0察2.7.3ã®ãã³ãããŒã¯ãè¡ãããšã«æéãè²»ãããŸããã
Lessã³ã³ãã€ã©ãã©ã®ããŒãžã§ã³ã§ãé ããšãã蚌æ ã¯èŠã€ãããŸããã§ããããŸããŠã2åé ããšãã蚌æ ããããŸããã ãã©ã³ã¹ãã€ã«èšå®ã®ããã«3.10.0ã®æ¹ãã¡ã¢ãªã®ãªãŒããŒããããå€ãããšã¯äºå®ã§ãããã·ã¹ãã ã®ã¹ããŒã¹ã«å¶çŽããããçµæãšããŠããå€ãã®ã¡ã¢ãªã¹ã¯ãããŸãã¯ããå€ãã®GCãå®è¡ãããšãé床ãäœäžããå¯èœæ§ããããŸããïŒ ããããç§ã¯ããã確èªããããšã¯ã§ããŸããã
3.11.0ãã©ã³ãã§grunt benchmark
ãå®è¡ããŠèªåèªèº«ããã¹ãã§ããŸãã åã
ã®å®è¡ã§ç°ãªãæ°å€ãå ±åãããå ŽåããããŸãããååãªåæ°å®è¡ãããšãæéãã»ãŒçããããšãããããŸãã ã ããç§ã¯ããªããããªãã®ããŒã¿ãã©ãã§åŸãŠããã®ãåãããŸããã
@ PatSmuk360 3.11.0ã®ã¡ã¢ãªãªãŒããŒãããããã¹ãã§ããŸãããïŒ
ç§ã¯ããªãã®ã³ãŒããèªåã§äœæããŸããã nodejsã¯äœ¿çšããŠããŸããã ç§ãèšåãã2ã€ã®ç°ãªãããŒãžã§ã³ã®distãã©ã«ããŒããless.min.jsãã¡ã€ã«ãååŸããããããèªåã®ããŒãžã§äœ¿çšããŸãã 次ã«ãã³ã³ãœãŒã«ã§ãLessã³ãŒãã«ãã£ãŠåºåãããã¿ã€ãã³ã°ã衚瀺ãããŸãã ç§ã®å°ãªãã³ãŒãã¯è€æ°ã®ãã¡ã€ã«ã䜿çšããåºåãã¡ã€ã«ã¯çŽ100kBã®çž®å°ãããcssã§ãã ããã¯ãå®éã®ããã³ãããŒã¯ã§ãã Roundcubeã³ãŒãã«ã€ããŠè©±ããŠããŸãã
Chromeã¯Firefoxãããã¯ããã«é«éã§ãããã©ã¡ãã®ããŒãžã§ã³ã®éãã䌌ãŠããŸãã
@alecplããŒã....å€åããã¯ãã®ç¹å®ã®Lessã³ãŒãã®ç¹å®ã®éãã§ãã ãã³ãããŒã¯ãæ£æçã§ããããšã¯äºå®ã§ãã æéãããã°ããããã®Lessãã¡ã€ã«ããã³ãããŒã¯ã«è¿œå ããŸãã
ãã®åé¡ã¯ãæè¿ã®ã¢ã¯ãã£ããã£ããªããããèªåçã«å€ããã®ãšããŠããŒã¯ãããŠããŸãã ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåã¯éããããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
ç°¡åãªæŽæ°ãæçš¿ãããã£ãã ãã§ãã3.11.1ãè©ŠããŸãããã3.10.3ãšåããããé ãã§ãã ããããã¹ã/ãããã¡ã€ãªã³ã°ããããã®ä»£è¡šçãªãã³ãããŒã¯ãäœæã§ãããã©ããã確èªããŸãã
3.11.1ã«ã¢ããã°ã¬ãŒãããŸããããåãã¡ã¢ãªæ¶è²»ã®åé¡ãçºçããŠããŸãã
é©åºŠãªãµã€ãºã®ãããžã§ã¯ãã§ã¯ãwebpackãšless-loader
ãä»ããŠãã«ãããã®ã«æ倧600MBã®RAMãå¿
èŠã§ãã
ããŒãå²ãåœãŠã®ã¿ã€ã ã©ã€ã³ããšã£ãçµæããããçºçããŸããã
äœããRuleset
ã«ãã£ãŠçãç¶ããŠããã¯ã¬ã€ãžãŒãªå·šå€§ãªå²ãåœãŠãåŒãèµ·ãããŠããŸãã
[ç·šé]
3.9ã«ããŠã³ã°ã¬ãŒãããããããããŒãå²ãåœãŠã¿ã€ã ã©ã€ã³ãååŸããŠããŸãã æ ¹æ¬çã«éããã®ãèŠã€ãããã©ãããèŠã«è¡ããŸãã
@ matthew-ãã£ãŒã³
ããªããžã®ãã³ããèŠã€ããŸããã
3.11ã§ã¯ãRuleSetã«ãªã¹ããããŠãããªããŒãã®1ã€ã¯ImportManagerã§ãã
3.9ã§ã¯ãããã¯_ããã§ã¯ãããŸãã_ã
ImportManagerã«ãã£ãŠãã¹ãŠãåç¶ããImportManagerãã³ã³ãã€ã«ããã»ã¹å šäœã§ã·ã³ã°ã«ãã³ã§ããå Žåã ã¯ããããã§ã; ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãã§ããªããããã¡ã¢ãªäœ¿çšéãå€§å¹ ã«å¢å ããŸãã äžéã®ã«ãŒã«ã»ãããããããŸããã
@rjgottenããŒã......ãªããžã§ã¯ãã«å¥ã®ãªããžã§ã¯ããžã®åç §ãããå ŽåããªããããGCã劚ããã®ã§ããããïŒ ã€ãŸããæè¡çã«ã¯ããã¹ãŠã®ãªããžã§ã¯ãããããã¿ã€ããã§ãŒã³ãä»ããŠãããªãã¯APIããŒããžã®åç §ãä¿æããŸãã éãçã®å Žåãã€ãŸãããã¹ãŠã®ã«ãŒã«ã»ããã€ã³ã¹ã¿ã³ã¹ãžã®åç §ãä¿æããŠãããªããžã§ã¯ããããå Žåã«ã®ã¿ãGCãé²æ¢ãããŸãã
ããªãã¯èª€è§£ããŠããããã§ãã
ãAãBã®ä¿æè ã§ããããšã¯ãAãBãžã®åç §ãä¿æããŠãããããBã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã劚ããããŠããããšãæå³ããŸãã ãããã£ãŠãImportManagerãRulesetã®ä¿æè ãšããŠãªã¹ããããŠãããšæžãããšããç§ã¯ããªããçµè«ããããšãæ£ç¢ºã«è¡šçŸããŸãããImportManagerã¯Rulesetã€ã³ã¹ã¿ã³ã¹ãžã®åç §ãä¿æãããããã®Rulesetã€ã³ã¹ã¿ã³ã¹ã®GCãé²ããŸãã
@rjgottenãããããã§ããïŒ ãã®å€åãã©ã®ããã«ããŠããã«ããããããã®ã ãããã ç§ã責任ãè² ãå¯èœæ§ãé«ããããããè¡ã£ãES6ãªãã¡ã¯ã¿ãªã³ã°ã«ã€ããŠäœãããããŸãã ãããããããããã¯ééããªããããè¡ãããšãã§ããŸãïŒ èª¿æ»ããŠããã ãããããšãããããŸãã
ããŠããã®æ¥é²çãªã¢ã€ãã¢ã¯ã©ãã§ããã
ES6å€æ以å€ã®ãã¹ãŠããã§ãªãŒãããã³ã°ã§ãã©ã³ããäœæããŸããã ããã¯åçŽãªããšã§ã¯ãªããããã§ãã¹ãŠã®äœæ¥ãç¡é§ã«ãªããŸãããBabelified / Typescriptããããã¡ã€ã«ãæ¢åã®ãã€ãã£ãJSãäžåããªãå Žåã¯ãããã ãã®äŸ¡å€ã¯ãããŸããã
gitã®å±¥æŽãã©ã®ããã«èª¿æŽãããã¯ããããŸããããããã«ãã©ã³ãããããŸã-> https://github.com/less/less.js/tree/release_v3.12.0-RC1ã ã³ã³ããŒãžã§ã³ã®èšç®ã¯å€§ããããšãªã®ã§ããã®ãã©ã³ãã¯æ¯èŒããããã®ç¢ºããªãã³ãããŒã¯ã«ãªããšæããŸãã
ãã®å€åãã©ã®ããã«ããŠããã«ããããããã®ã ãããã ç§ã責任ãè² ãå¯èœæ§ãé«ããããããè¡ã£ãES6ãªãã¡ã¯ã¿ãªã³ã°ã«ã€ããŠäœãããããŸãã ãããããããããã¯ééããªããããè¡ãããšãã§ããŸãïŒ èª¿æ»ããŠããã ãããããšãããããŸãã
ããã¯ç¢ºãã«å¥åŠã§ãã ç§ã解èªã§ãããã®ãããImportManagerã¯ãES6å€æã«ãã£ãŠè¿œå ãããgluecode / polyfillãä»ããŠãã©ããããããã«ãŒã«ã»ããã®ãªããŒããŒã«ãªã£ãŠããŸãããã§ãã
éäžã§çµãããè¿ãã解決çã¯ããã«ããã®ã ãããã ã€ãŸããNode.jsã®ES6ãã«ããä¿æããŸããããã©ã³ã¹ãã€ã«ããããã©ãŠã¶ãŒã¿ãŒã²ããããããŸãã ES6å€æã«ãã£ãŠè¿œå ãããã³ãŒãã®æ確ããæé€ããããšã¯å€§ããªæ倱ã«ãªããŸãã ð¢
@rjgotten
ES6å€æã«ãã£ãŠè¿œå ãããã³ãŒãã®æ確ããæé€ããããšã¯å€§ããªæ倱ã«ãªããŸãã
2ã€ã®çç±ãããèŠãç®ã»ã©æªãã¯ãªããããããŸããã
ãã®åé¡ãä¿®æ£ããããã ãã«ãã¹ãŠãES5ã«ããŒã«ããã¯ããã®ã¯å€§å€ãªäœæ¥ã®ããã§ãããæžãçŽããé²è¡äžã§ããããšãèãããšç解ã§ããŸãã ããã§ãããã®æ±ºå®ãã©ã®ãããã®æéçããªããã°ãªããªãããæ€èšããå¿ èŠããããŸãã @rjgottenãè¿°ã¹ãããã«ãã³ãŒãã®æ確ãããv4ããŸã é ãå Žåã¯ãES5æ žãªãã·ã§ã³ãéžæããåã«ãç¹ã«ãã®åé¡ä»¥éãããå°ã調æ»ããŠã¿ãŸããããæªããã®ïŒã»ãšãã©ã®ãŠãŒã¶ãŒã«ãšã£ãŠã倧ããããšã§ã¯ãªãããã§ãã
ãããçµéšããŠãã³ãŒããåãã§å ±æããŠããã人ã¯ããŸããïŒ å®éã®ãããžã§ã¯ãã䜿çšããŠãã³ãããŒã¯ãå®è¡ããå€æŽã圹ç«ã€ãã©ããã確èªã§ããã°çŽ æŽããããšæããŸãã ãããåŸãããã°ãããã«ããã¯ãçºçããå¯èœæ§ã®ããå Žæãçµã蟌ãã§ã¿ãŠãã ããã
@ matthew-deanã¯ãè£è¶³ãšããŠãã«ãŒãºã¢ãŒãã§Babelãã³ã³ãã€ã«ããŠãèŠæ ãã®ããã³ãŒããçæããããã©ããã確èªããŸãããïŒ
@seanCodes誰ããããŒã«ã¢ãã/è³æã§ãã éšåçã«ã¯ãå ã®ã³ãŒããèŠãŠãåºåãšæ¯èŒããæããããæ¢ãããšã§ãã
ç§ãæã£ãŠããæšæž¬ã®1ã€ã¯ãäžéšã®ç Žå£ããžãã¯ã«ã¯ãªããžã§ã¯ãäœæã®å®åæããããããããšããããšã§ãã
åºæ¬çã«ã誰ãããã®åé¡ãææããããã«å¿é¡ããå¿ èŠããããŸãã
@ matthew-deanã¯ãè£è¶³ãšããŠãã«ãŒãºã¢ãŒãã§Babelãã³ã³ãã€ã«ããŠãèŠæ ãã®ããã³ãŒããçæããããã©ããã確èªããŸãããïŒ
@seanCodesã³ãŒãã¯ãBabelã§ã¯ãªãTypeScriptã䜿çšããŠã³ã³ãã€ã«ãããŸãã ç§ã®èãã¯ãã¿ã€ããã§ãã¯ã匷åããããã«JSDocã¿ã€ããåŸã ã«è¿œå ããããšã§ããããv4ã®TSã¯æžãçŽãã§ååã§ããããããå¿ èŠãã©ããã¯ããããŸããã ãããã£ãŠã誰ããBabelvãTypeScriptïŒããã³ããããã«ç°ãªãèšå®ïŒãè©ŠããŠãBabelãããããã©ãŒãã³ã¹ã®é«ãã³ãŒããçæãããã©ããã確èªã§ããŸãã Node.jsçšã®éES5ãã«ããæåã«äœæããããšãåå ã§çºçãããã®åé¡ã«æ³šæããŠãã ããïŒ //github.com/less/less.js/issues/3414
@seanCodesãŸããããã©ãŒãã³ã¹ã®éãã確èªããã®ã¯ãŸã é£ãããšæããŠããŸãã ããã©ãŒãã³ã¹ã®éããæ確ã«èšŒæããããã®PR /ã¹ããããäœæãã人ã¯èª°ãããŸããã ãã®ã¹ã¬ããã«ã¯å€ãã®éžè©±ããããŸãããåçŸå¯èœãªã³ãŒããæé ããªããã°ã誰ãããããã©ã®ããã«èª¿æ»ããã®ãããããŸããã çæ³çã«ã¯ããããã¡ã€ãªã³ã°ããŒã«ãèµ·åããŠïŒChromeãããã¬ãŒãªã©ãä»ããŠïŒã·ã¹ãã ã«æ°å€ãåºåããå€æ°ã®ãã¹ããå¹³ååããPRããããŸãã ã§ãããããããŸã§ã®ãšãããããã¯100ïŒ åçŸå¯èœã§ã¯ãªãã®ã§ã誰ããåçŸã¹ããããæäŸã§ããéãããããç§ãå人çã«ãã®ãŠãµã®ã®ç©Žãéããããªãã£ãçç±ã®äžéšã§ãã ïŒã€ãŸãããChromeãããã¬ãŒã䜿çšããŸãããã®ãã£ãŒãããã¯ã¯ãäžé£ã®åçŸæé ã§ã¯ãããŸãããç¥ã£ãŠãããšäŸ¿å©ã§ããã誰ãã調æ»ããã®ã«åœ¹ç«ã¡ãŸããã远跡察象ãšãã®çç±/çµæãç¥ãå¿ èŠããããŸããæåŸ ããããïŒ
ãããã£ãŠãçŸåšã®ã³ãŒãããŒã¹ã䜿çšããŠããã©ãŒãã³ã¹ã®äœäžãæ¹åãããå Žåã¯ãããããè€æ°ã®ãã©ã³ãã£ã¢ãš1人ã®äººããã®åé¡ãææããå¿ èŠããããŸãã
å人çã«ã¯ã_speed_ã®ããã«ããã©ãŒãã³ã¹ã®éãã¯ããŸãèŠãããŸããããã¡ã¢ãªæ¶è²»éã®éãã¯é©ãã¹ããã®ã§ãããã€ã³ããŒãã®éãšçžé¢ããŠããããã§ããããã¯ã倧ãŸããªããŒãåæã§ãåé¡ã«é¢é£ããŠããããã§ãã
ãããæ£ãããã°ãéãã確èªããããã«ãããããã«ããã€ãã®ã«ãŒã«ã»ãããå«ãŸããŠããã€ã³ããŒãããããã¡ã€ã«ãå€æ°å«ãŸããŠããéããå®è¡å¯èœãªãã¹ããããžã§ã¯ãã誰ã§ããžã§ãªãŒãªã°ã§ããã¯ãã§ãã
@rjgotten
ãããæ£ãããã°ãã€ã³ããŒãããããã¡ã€ã«ããããããããããããã«ããã€ãã®ã«ãŒã«ã»ãããå«ãŸããŠãããã¹ããããžã§ã¯ãããžã§ãªãŒãªã°ããŠãéãã確èªã§ããã¯ãã§ãã
ããã§éèŠãªã®ã¯ãããªããã§ãã ð
ããã§éèŠãªã®ã¯ãããªããã§ãã ð
äžå¹žãªèšèã®éžæã ã€ãŸããäžè¬çãªæå³ã§ãã€ãŸãã誰ã§ãããšããããšã§ãã
èªåã§ããã«æãäžããŠãããŸãããçŸåšãç¿åããå€ãããŸãã
@rjgotten ã倧éã®ã€ã³ããŒãããããã¡ã€ã«ããäœã§ãããã«ã€ããŠã®ããè¯ãã¢ã€ãã¢ãæããŠãã ããã 100åã®å¥ã ã®ãã¡ã€ã«ããããè¡ãã®ã§ããããããããšã1000åã®è©±ãããŠããã®ã§ããããïŒ
ãŸããã©ã®ããã«ããŠæåã«åé¡ã«æ°ã¥ããŸãããïŒ ã¡ã¢ãªæ¶è²»ãåå ã§ãã«ãã倱æããŸãããããããšãã¡ã¢ãªäœ¿çšéã調ã¹ãŠããŸãããïŒ ãŸãã¯ããã·ã³ã®é床ãäœäžããŠããããšã«æ°ã¥ããŸãããïŒ
ç§ã¯ãŸã ãããè€è£œããããšã¯ããŠããŸããããæšæž¬ãšç¢ºèªã«é Œãå¿ èŠããªãããã«ãæ£ç¢ºã«äœãæ¢ãã¹ãããåŠã³ãããšæã£ãŠããŸãã
100ããããããããããŸãã ããã¯ãç§ãåé¡ã«æ°ä»ããå®éã®ãããžã§ã¯ãã®ãµã€ãºãšã»ãŒåãã§ãã
ã³ãŒãã¬ãŒãCIç°å¢ã§å®è¡ãããŠãããã«ãã倱æãå§ãããšãã«æåã«æ°ã¥ããŸããã ãããã¯ãã¡ã¢ãªå¶éãæ§æãããDockerã³ã³ãããŒå ã§å®è¡ãããŸãã
@rjgotten 3.11.3ã§ããŸã ã¡ã¢ãªã®åé¡ããããŸããïŒ ä»¥åã®ãªãªãŒã¹ã§ã€ã³ããŒãå ã®ASTã®ãã£ãã·ã¥ïŒåç §ïŒãåé€ããã®ã§ãã€ã³ããŒããä¿æãããŠããŠãASTããªãŒããã®äžã«ä¿æãããŠããå Žåãã¡ã¢ãªäœ¿çšéãå¢å ããŸãããããªãŒãä¿æããå€ããšãããã¯ããã解決ããŸããïŒ
@ matthew-deanã¯ãããã®åé¡ã¯3.11.3ã§ãåŒãç¶ãçºçããŸãã
æŠå¿µå®èšŒãäœæããããšããŸãããç§ã¯èªåã®ãã¬ãŒãã«ãããããããŸãã æéãããã°ããããããããšãªã¹ãã«èŒããŸããã
@ matthew-dean以åã¯å€±æããŠãããæ¯èŒç倧ããªãããžã§ã¯ãã§ããããã¹ãããããšæããŸãã ç§ãç¥ãå¿ èŠãããããšã¯äœã§ããïŒ ãã®ãã©ã³ãã httpsïŒ//github.com/less/less.js/tree/release_v3.12.0-RC1ã䜿çšããå¿ èŠããã
@nfqè©ŠããŠã¿ãããšãã§ããŸããããã®ã¹ã¬ããã§åºã
ã¡ãªã¿ã«ãã³ã³ãã€ã«äžã«less
ãªããžã§ã¯ãã調ã¹ãŠæ°žç¶ãªããžã§ã¯ããèŠã€ããããšããŸããããèŠã€ãããŸããã§ããã ð€·ââïž
ããã©ãŒãã³ã¹ã®åé¡ãçºçããŠããŸãã åããã¹ãã¹ã€ãŒãã®å ŽåïŒ
| ããŒãžã§ã³| æé|
| -| -|
| v3.9.0 | ã1.6ç§|
| v3.10.0ãv3.11.1 | ã3.6ç§|
| v3.11.2 + | ã12ç§|
ããã§èª¬æãã3.9.0â3.10.0ãšã¯å¥ã«ã v3.11.2
ã§ã¯ããã©ãŒãã³ã¹ã倧å¹
ã«äœäžããŠããããã§ãã å€æŽãã°ã®ãã®å€æŽã¯çãããããã§ãã
3498ã€ã³ããŒããããŒãžã£ãŒã®ããªãŒãã£ãã·ã¥ãåé€ããŸãïŒïŒ3498ïŒ
ããããã
åäžã®ãã«ãã®ã¿ã€ãã³ã°ïŒãã¹ãŠããŒã10.19.0ïŒïŒ
@ jrnail23
ãããã®çµæã瀺ãããšãã§ããã¬ãã¯ãããŸããïŒ
@ matthew-dean https://github.com/less/less.js/issues/3434#issuecomment -672580467çšã«1ã€ããhttps ïŒ
ç³ãèš³ãããŸãããã@ matthew-deanãç§ã¯ããŸããã ãããã®çµæã¯ç§ã®éçšäž»ã®è£œåããã®ãã®ã§ãã
ãããã®çµæã¯ç§ã®éçšäž»ã®è£œåããã®ãã®ã§ãã
ç§ããã¡ã€ã«ãæäŸã§ããªãã®ãšåãçç±ã§ãã ð
@rjgotten @ jrnail23 @Justineo -èå³ãããã ããããªãã¯åãã€ã³ããŒãã¯å¥ã®ãã¡ã€ã«ã«è€æ°åã€ã³ããŒããããã±ãŒã¹ã®æ°ãæã£ãŠããŸããïŒ
ç§ã®å Žåã @import
ã¹ããŒãã¡ã³ãã
@ matthew-deanãäžè¬çãªãã®ïŒããšãã°ãè²å€æ°ãã¿ã€ãã°ã©ãã£ãªã©ïŒãã€ã³ããŒãããbase.less
ãã¡ã€ã«ããããŸãã
ç§ãã¡ã®ã¢ããªã®ããã€ãã®ç°¡åãªgrepingã¯ã base.less
åç
§ïŒã€ãŸãã <strong i="8">@import</strong> (reference) "../../../less/base.less";
ïŒã66ã®ä»ã®ã³ã³ããŒãã³ã/æ©èœåºæã®less
ãã¡ã€ã«ã«ãã£ãŠã€ã³ããŒããããããšã瀺ããŠããŸãããŸããä»ã®ã³ã³ããŒãã³ã/æ©èœåºæã®å°ãªããã¡ã€ã«ãã€ã³ããŒãããŸãïŒããèªäœãbase.less
åç
§ããå ŽåããããŸãïŒã
èå³æ·±ãããšã«ãïŒããããå¶ç¶ã«ïŒïŒåç
§ãšããŠèªåèªèº«ãã€ã³ããŒãããå¥ã®less
ãã¡ã€ã«ãããããã§ãã
@rjgotten @ jrnail23 @Justineo -èå³ãããã ããããªãã¯åãã€ã³ããŒãã¯å¥ã®ãã¡ã€ã«ã«è€æ°åã€ã³ããŒããããã±ãŒã¹ã®æ°ãæã£ãŠããŸããïŒ
ç§ã«ãšã£ãŠãããã¯ãã¯ããã§ãã ç§ãæåã«åé¡ãçµéšãããããžã§ã¯ãã¯ãä»ã®ãã¹ãŠã«å«ãŸããŠããäžå åãããå€æ°ãã¡ã€ã«ãå©çšããã¹ãããã«ãœãªã¥ãŒã·ã§ã³ã§ãã ããã«ãã³ã³ããŒãã³ãããŒã¹ã®ãã¶ã€ã³ã䜿çšããŠãããç¹å®ã®çš®é¡ã®ãã¿ã³ããã©ã³ãã¢ã€ã³ã³ãªã©ãçæããããã¯ã¹ã€ã³ãã¡ã¯ããªãããããããã®äžéšãããã€ãã®ãã¡ã€ã«ã«ã€ã³ããŒããããŸãã
åºæ¬ç; ãã¹ãŠã®äŸåé¢ä¿ã¯ããã®äŸåé¢ä¿ãå³å¯ã«ã€ã³ããŒãããããã«èšå®ãããŠãããã€ã³ããŒããéè€æé€ããŠæ£ããé åºã«äžŠã¹ãæ£ããCSSåºåã確ä¿ããããã«Lessã³ã³ãã€ã©ã«äŸåããŠããŸãã
@rjgotten
ç§ã¯ãããæçš¿ããŠåé€ããŸããïŒç§ã¯ãããç解ãããšæã£ãã®ã§ãããããã§ãè€è£œã§ããŸããã§ããïŒãã©ã®ããã»ã¹ãå«ãã人ã ãå ±åããŠãããã®ãåçŸããæé ã¯ãŸã ãããŸããã
ãããšåããããåçŽãªãã®ã§ããïŒ
3.11ã§ã¯ãRuleSetã«ãªã¹ããããŠãããªããŒãã®1ã€ã¯ImportManagerã§ãã
ãã®èšŒæ ã¯èŠã€ãããŸããããã©ããã£ãŠããã決å®ã§ããã®ããããããŸããã ç§ã¯ChromeDevToolsã«ç²ŸéããŠããªãã®ã§ãäœãäœã«ãã£ãŠä¿æãããŠããããªã©ãå€æããæ¹æ³ãç¥ãããšãã§ããŸãããããã¯ãGoogleãç§ãå©ããŠãããªãã£ãæŒ ç¶ãšãããããã¯ã§ãã åæ§ã«ã人ã ã¯ããŒãããã»ã¹ã«æ¥ç¶ããŠããŸããïŒ ãã©ãŠã¶ã§å®è¡ããŠãã¬ãŒã¯ãã€ã³ããèšå®ããŸããïŒ æé ã¯äœã§ããïŒ
ã€ãŸãããã®å·ãçºè¡ããã幎ã«ã¯ãã©ã®ã¬ããŒãã«ãåçŸããæé ããããŸããã ãããã®éžè©±ã¯ãã¹ãŠäœããæå³ããŠãããšæããŸãããèŠã€ãããã®ãã©ã®ããã«å€æããŸãããïŒ ãããšãããããå®èšŒããã»ããã¢ãããèããããšãã§ããŸããïŒ ç§ã¯ãããç解ããã®ãæäŒãããã®ã§ããããããåçŸããæ¹æ³ãããããŸããã
@Justineoãªããžããªã§ãã¡ã¢ãªãµã€ãºãŸãã¯ã³ã³ãã€ã«æéã決å®ããããã«ã©ã®ãããªæé ãå®è¡ããŸãããïŒ äœã䜿ã£ãŠæž¬å®ããŸãããïŒ
@Justineoãã£ãã·ã¥ã®åé€ãææããã®ã§ïŒããã¯ããããæªãèãã§ããïŒããã®ãã©ã³ãããã¹ãããŠããã«ãé床ã«åœ¹ç«ã€ãã©ããã確èªã§ããŸããïŒ https://github.com/less/less.js/tree/cache-restored
ä»æ¥ã®å®éš/ãã¹ãã«é¢ããææ°æ å ±ãæäŸããããã ãã«ïŒ
ã°ã©ã³ãã®shell:test
å
ã§ããããé·çã¯ããã©ã³ã¹ãã€ã«ãããã³ãŒãã¯åžžã«é ããšããããšã ãšæããŸããç§ãã¡ã¯ãã以å€ã®ããšãèããã®ã¯çŽ æŽã§ããã JavaScriptã®äžçã§ã¯ããã©ã³ã¹ãã€ã«ãéåžžã«ãæšæºãã«ãªã£ãŠããã®ã§ãã¡ãã£ãšé©ããŠããŸãã ãããè£ä»ããä»ã®ç 究ã¯ãããŸããïŒ
@Justineoãªããžããªã§ãã¡ã¢ãªãµã€ãºãŸãã¯ã³ã³ãã€ã«æéã決å®ããããã«ã©ã®ãããªæé ãå®è¡ããŸãããïŒ äœã䜿ã£ãŠæž¬å®ããŸãããïŒ
npm run test
ã¯ãçµéããåèšæéãçæããŸãã ãŸããä»ã®ãããžã§ã¯ãã§ã¯ã3.12ã«åãæ¿ãããšOOMãçºçããŸãã
TypeScriptã§çæãããã³ãŒããèŠããšã次ã®ããã«ãªããŸãã
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var node_1 = tslib_1.__importDefault(require("./node"));
var variable_1 = tslib_1.__importDefault(require("./variable"));
var property_1 = tslib_1.__importDefault(require("./property"));
var Quoted = /** <strong i="6">@class</strong> */ (function (_super) {
tslib_1.__extends(Quoted, _super);
function Quoted(str, content, escaped, index, currentFileInfo) {
var _this = _super.call(this) || this;
_this.escaped = (escaped == null) ? true : escaped;
_this.value = content || '';
_this.quote = str.charAt(0);
_this._index = index;
_this._fileInfo = currentFileInfo;
_this.variableRegex = /@\{([\w-]+)\}/g;
_this.propRegex = /\$\{([\w-]+)\}/g;
_this.allowRoot = escaped;
return _this;
}
察ïŒ
var Node = require('./node'),
Variable = require('./variable'),
Property = require('./property');
var Quoted = function (str, content, escaped, index, currentFileInfo) {
this.escaped = (escaped == null) ? true : escaped;
this.value = content || '';
this.quote = str.charAt(0);
this._index = index;
this._fileInfo = currentFileInfo;
this.variableRegex = /@\{([\w-]+)\}/g;
this.propRegex = /\$\{([\w-]+)\}/g;
};
ã ããç§ã®æšæž¬ã§ã¯ããããã®äœåãªé¢æ°ã®å®çŸ©ãšåŒã³åºãã¯ãã¹ãŠãæéã®çµéãšãšãã«åèšãããŸããïŒ ãããèµ€ããã·ã³ã§ãªãéãããããç§ã¯ããã転çãé€ããŠä»ã«äœã«åž°ããã¹ããããããŸããã ç§ãç解ããŠããªãã®ã¯ãTSããªãªãžãã«ã«è¿ãã³ãŒããçæã§ããªãçç±ã§ãã
ã¢ããããŒãïŒ
3.9ãã¹ãã3.12ãšåçã«ããããšãããšãåºæ¬çã«1.2ç§å¯Ÿ1.3ç§ã«ãªããŸãã ãã¹ããå€æŽãããããããã®éãã«ã€ããŠã¯ããããããŸããã ãŸã£ããåãå°ãªããã¡ã€ã«ã«å¯ŸããŠå®è¡ããå¿ èŠããããŸãã
@Justineo @rjgottenããå¹ççãªãã«ããäœæããããã«ãTypeScriptã®åŸ®èª¿æŽãããã€ãããã·ã¥ããŸããã ãã®ãã©ã³ããæ§ç¯ããŠè©ŠããŠã¿ãŸãããïŒ https://github.com/less/less.js/tree/cache-restored
@matthew-deanðããããšãïŒ ä»æ¥ã¯åŸã§è©ŠããŠã¿ãŸãã
cache-restored
ãã©ã³ãããã¹ãããŸããããv3.11.2 +ãããã¯ããã«é«éã§ãv.3.1.0ã3.11.1ãšã»ãŒåãé床ã§ãã
@Justineo
ãã£ãã·ã¥ã§åŸ©å ããããã©ã³ãããã¹ãããŸããããv3.11.2 +ãããã¯ããã«é«éã§ãv.3.1.0ã3.11.1ãšã»ãŒåãé床ã§ãã
ãŸããããã¯ææã§ãã ã¬ããã¯ããã®ã¹ã¬ããã§ã¯ããã€ãã®@rjgotten @ jrnail23ããã®ãã£ãŒãããã¯ãªã©ãååŸããŸãã ãã®ãã£ãã·ã¥ã®åé€ã¯ããã®ã¹ã¬ãããæçš¿ãããåŸã§ããïŒ3.11.2ïŒã å®éãããã¯ã¡ã¢ãªãªãŒããŒãããã®äžéšãåé€ããè©Šã¿ã§ããããåããã¡ã€ã«ãæ°åã€ã³ããŒãããå Žåã¯ãééããªãäºæ ãæªåãããå¯èœæ§ããããŸãã
ãããã£ãŠãèŠããã«ãå ã®åé¡ãŸãã¯ãã®åå ïŒã³ãŒãå€æã§çºçããäœããé€ãïŒã«ã€ããŠã¯ãŸã ããããŸããããã®ãã©ã³ãã«ãŸã ãããã®åé¡ããããã©ãããç¥ãããã®ã§ãããåã«è¿°ã¹ãããã«ãæ確ãªåçŸæé ããªããããããããããŸããã
@ matthew-deanã cache-restored
ãã©ã³ãã䜿ãããšãããšå°ãåé¡ãçºçããŸãïŒ npm link
ã倱æãããããããŒã«ã«ã§äœ¿çšããããã«äœãããå¿
èŠãããã®ãââããããããŸããèªåïŒã
ç§ãè©Šãããšãã§ããã«ããªã¢/ãã¬ãªãªãŒã¹ããŒãžã§ã³ãå
¬éã§ããŸããïŒ
@ jrnail23
ããã¯ããŸããã£ããšæããŸãã Lessãåé€ãã npm i [email protected]+84d40222
ã€ã³ã¹ããŒã«ããŠã¿ãŠãã ãã
@ matthew-ãã£ãŒã³ãç§ã¯ã¡ããã©ãã®ããŒãžã§ã³ãè©ŠããŸããããããŠããã¯ç§ã«ãšã£ãŠãŸã æªãã§ãã
æ°ããwebpackãã«ãïŒãã£ãã·ã¥ãªãïŒã®å Žåãv3.9ã§ã¯62.4ç§ããããŸãããv3.13.1ã§ã¯121ç§ããããŸãã
ãã£ãã·ã¥ããããã«ãã®å Žåãv3.9ã«ã¯30ç§ããããv3.13.1ã«ã¯83ã87ç§ããããŸãã
@ jrnail23ãã¹ãŠã®ããŒãã¢ãžã¥ãŒã«ãåé€ããŠã [email protected]+b2049010
ãã€ã³ã¹ããŒã«ããŠã¿ãŠãã ããã
3.9ãã³ãããŒã¯æªæºïŒ
4.0.1-alpha.0æªæºïŒ
å°ãªã4.0.1-alpha.2ïŒ
@Justineo @rjgottenãããè©ŠããŠã¿ãŸãããïŒ
@ jrnail23 @Justineo @rjgotten
ããã¯4.0ãã«ãã§ãããããã³ãŒãã«æ¬¡ã®ãããªé倧ãªå€æŽãå ããããå Žåã«ãšã©ãŒãçºçããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
.mixin;
ã¯èš±å¯ãããŠããŸããïŒãã®ãããç§ã¯ä»ã§ã¯ã¯ããã«æ¥œèŠ³çã§ãããææ°ã®ãã³ãããŒã¯ã«åºã¥ããŠåé¡ãä¿®æ£ããŸãããããªããã®åé¡ãçºçããŠããã®ããŸã ããããŸããã ä»ã®ãã¹ãŠã®äººã®ããã©ãŒãã³ã¹ãç¶æãããŠããå Žåã¯ãæçµçã«åé¡ãçµã蟌ãã æ¹æ³ãšèŠã€ãããã®ã®æŠèŠã説æã§ããŸãã èšãæããã°ãåé¡ãã©ãã«ãããããŸãã¯ãã£ãããèŠã€ãããšæããŸãããå¿ ãããçç±ã§ã¯ãããŸããã
https://github.com/less/less.js/issues/3434#issuecomment -672580467ãšåããã¹ãã¹ã€ãŒãã®çµæïŒ
| ããŒãžã§ã³| æé|
| -| -|
| v3.9.0 | ã1.6ç§|
| v3.10.0ãv3.11.1 | ã3.6ç§|
| v3.11.2 + | ã12ç§|
| 4.0.1-alpha.2 + b2049010 | ã1.6ç§|
ç¹å®ã®ãã¹ãã¹ã€ãŒãã§ã¯ãããã©ãŒãã³ã¹ã¬ãã«ãv3.9.0ãšåããããéãæ¹åãããããšã確èªã§ããŸãã ãããã«æè¬ããŸãïŒ æ°åŠã¢ãŒãã§ã®ãã¬ãŒã¯ã®å€æŽã«ã€ããŠã¯ããããããŸãããã ãããå€æŽãããšãå€ãã®ã¢ããªã±ãŒã·ã§ã³ãç Žæããå¯èœæ§ããããããããã©ãŒãã³ã¹ã®åé¡ã解決ããããšããŠããv3.9.0ã§ã¹ã¿ãã¯ããå¯èœæ§ããããŸãã
@Justineo
æ°åŠã¢ãŒãã§ã®ãã¬ãŒã¯ã®å€æŽã«ã€ããŠã¯ããããããŸãããã
math=always
ã¢ãŒãã§æ瀺çã«ã³ã³ãã€ã«ããŠã以åã®æ°åŠã®åäœãååŸã§ããŸãã ããã¯åã«ç°ãªãããã©ã«ãã§ãã
TL; DR-ã¯ã©ã¹ãã¿ãŒã³ã«æ³šæããŠãã ãã
åé¡ã¯ãBabelãšTypeScriptã®äž¡æ¹ã®ã¯ã©ã¹ã®å€æã«ãããŸããã ïŒèšãæããã°ãäž¡æ¹ãšããã©ã³ã¹ãã€ã«ãããã³ãŒãã§åãããã©ãŒãã³ã¹ã®åé¡ããããBabelã¯ãããã«æªåããŠããŸãããïŒããŠãæ°å¹Žåãã¯ã©ã¹ãã¿ãŒã³ãå°å ¥ããããšããç§ã¯ãã®ã¯ã©ã¹ãæããããŸãã-ãããŠãã®åé¡ãŸã§ä¿¡ããããŠããŸãã- JavaScriptã®ç¶æ¿ã¯ãæ©èœç¶æ¿ã®æ§æç³è¡£ã§ãã
èŠããã«ãããã§ã¯ãããŸããã _ïŒç·šéïŒãŸã....ããã§ããããã§ã¯ãããŸãããããã¯ããç¶æ¿ããäœãæå³ãããããããŠããã«ãããããã«ãããã©ã®ããã«å®çŸ©ãããã«ãã£ãŠç°ãªããŸãã JavaScriptã®ãããã¿ã€ããã§ãŒã³ã«ãç¶æ¿ããäœæããã¯ã©ã¹ã¯1ã€ã®ãã¿ãŒã³ã®ã¿ãè¡šããŸããããã®ãã¿ãŒã³ã¯ä»ã®ãã¹ãŠã®ãã¿ãŒã³ãšã¯å€å°ç°ãªããããTS / Babelã¯ãç¹æ®ãªé¢æ°ã䜿çšããŠãã®ãã¿ãŒã³ããæš¡å£ããããã«ããŒã³ãŒããå¿ èŠãšããŠããŸããïŒ_
å°ãªãã³ãŒãã¯æ¬¡ã®ããã«ãªããŸããïŒ
var Node = function() {
this.foo = 'bar';
}
var Inherited = function() {
this.value = 1;
}
Inherited.prototype = new Node();
var myNode = new Inherited();
ããã§ããææ°ã®ãJSã䜿çšããŠãããæžãçŽããããšããŸãã å®éãç§ãè¡ã£ããã®ããã»ã¹ãèªååããããšã¯ã§ããŸãããã©ã¡ãã®æ¹æ³ã§ãåãããã«èšè¿°ã§ããŸãã
class Node {
constructor() {
this.foo = 'bar';
}
}
class Inherited extends Node {
constructor() {
super();
this.value = 1;
}
}
var myNode = new Inherited();
åãããšã§ãããïŒ å®ã¯éãã 1ã€ç®ã¯ãããããã£ã{ value: 1 }
ãªããžã§ã¯ããäœæãããã®ãããã¿ã€ããã§ãŒã³ã«ã¯ã { foo: 'bar' }
ãªããžã§ã¯ãããããŸãã
2ã€ç®ã¯ã Inherited
ãšNode
äž¡æ¹ã§ã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºãããã { value: 1, foo: 'bar' }
ãããªæ§é ãæã€ãªããžã§ã¯ããäœæããŸãã
ããŠã_user_ã®å Žåãã©ã¡ãã®å ŽåãmyNode
ããvalue
ãšfoo
äž¡æ¹ã«ã¢ã¯ã»ã¹ã§ãããããããã¯å®éã«ã¯åé¡ã§ã¯ãããŸããã _æ©èœçã«_ããããã¯åãããã«åäœããããã«èŠããŸãã
V8ã®ãããªJITãšã³ãžã³ã«é¢ããèšäºã§ç§ãèŠããŠããããšããããªããžã§ã¯ãæ§é ã¯å®éã«ã¯éåžžã«éèŠã§ãã { value: 1 }
ã { value: 2 }
ã { value: 3 }
ã { value: 4 }
ãããªæ§é ã®æãäœæãããšãV8ã¯ãã®æ§é ã®å
éšéçè¡šçŸãäœæããŸãã åºæ¬çã«ãæ§é ãšããŒã¿ã1åä¿åãã次ã«ããŒã¿ãããã«3åä¿åããŸãã
ããããããã«æ¯åç°ãªãããããã£ãè¿œå ãããšã { a: 'a', value: 1 }
ã { b: 'b', value: 2 }
ã { c: 'c', value: 3 }
ã { d: 'd', value: 4 }
ã«ãªãããããã¯4ã€ã®ããŒã¿ã»ãããæã€4ã€ã®ç°ãªãæ§é ã«ãªããŸãã ãå
ã®ã¯ã©ã¹ã®åãã»ããããäœæãããå Žåã§ãã JSãªããžã§ã¯ãã®ãã¹ãŠã®ãã¥ãŒããŒã·ã§ã³ã¯ãããŒã¿ã«ãã¯ã¢ãããæé©å解é€ããé¢æ°ã«ãã©ã³ã¹ãã€ã«ãããã¯ã©ã¹ãã¿ãŒã³ã¯ãïŒããããïŒãããŠããŒã¯ãªãã¥ãŒããŒã·ã§ã³ãåŒãèµ·ãããŸãã ïŒããããã©ãŠã¶ãŒã§ã®ãã€ãã£ãã¯ã©ã¹ã®ãµããŒãã«åœãŠã¯ãŸããã©ããã¯æ£çŽããããŸãããïŒ
AFAIKããŸãçå®ã¯ããªããžã§ã¯ãã«ããããããã£ãå€ãã»ã©ãåã ã®ããããã£ã®ã«ãã¯ã¢ããã«ãããæéãé·ããªããšããããšã§ãã
ãšã³ããŠãŒã¶ãŒã«ãšã£ãŠããJSãšã³ãžã³ã¯éåžžã«é«éã§ããããããããåé¡ã«ãªãããšã¯ãã£ãã«ãããŸããã Buuuuutã¯ãå€ãã®ãªããžã§ã¯ãã®ããããã£/ã¡ãœãããã§ããã ãæ©ãäœæããã³æ€çŽ¢ãããšã³ãžã³ãç¶æããŠãããšèšããŸãã ïŒDing ding dingãïŒTypeScript / Babelããªããžã§ã¯ãããæ¡åŒµãããæ¹æ³ãšããã€ãã£ãã®æ©èœçãªãããã¿ã€ãã®ç¶æ¿ãšã®éã®ãããã®å°ããªéãã¯ãçªç¶ãéåžžã«æ¥éã«å¢å ããŸãã
å€ãLessæ§æãšTSã§ãã©ã³ã¹ãã€ã«ãããã¯ã©ã¹ãã¿ãŒã³ã䜿çšããŠãããŒããšç¶æ¿é¢æ°ã®æäœéã®å®è£ ãäœæããŸããã ã²ãŒãã®ããå€ã§ã¯ãç¶æ¿ãããããŒãã¯25ïŒ å€ãã®ã¡ã¢ãª/ãªãœãŒã¹ãæ¶è²»ããŸããããã¯ãç¶æ¿ãããããŒãã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããåã§ãã
ããã§ãäžéšã®ããŒããä»ã®ããŒãããç¶æ¿ããŠãããšèããŠãã ããã ã€ãŸããç¶æ¿ãããã€ã³ã¹ã¿ã³ã¹ãšåæ§ã«ãã¯ã©ã¹ã®ã¡ã¢ãªå è¡šçŸãå¢å ãå§ããŸãã
ã¯ã©ã¹ãžã®å€æãããã©ãŒãã³ã¹ã«ãšã£ãŠããã»ã©æ²æšãªããšã ãšèããããšããªãã®ã§ãç§ã¯ããããã¹ãŠãäžç²ã®å¡©ã§ãšãããšã匷調ããªããã°ãªããŸããã ç§ã_èããŠãã_ã®ã¯ãLessã䜿çšããŠãããªããžã§ã¯ã/ã€ã³ã¹ã¿ã³ã¹ã«ãã¯ã¢ããã®ç¹å¥ãªçµã¿åããããããJITãå€§å¹ ã«æé©åããŠããªããšããããšã§ãã _ïŒãã®å Žåããã©ã³ã¹ãã€ã«ãããã¯ã©ã¹ã®ããã©ãŒãã³ã¹ããã€ãã£ãJSç¶æ¿ã¡ãœãããããã¯ããã«æªãçç±ãJavaScriptãšã³ãžã³ã®å°é家ãç¥ã£ãŠããå Žåã¯ãç¥ããããšæããŸããïŒ_äž¡æ¹ã®ã¡ãœããã䜿çšããŠãäœåãã®ç¶æ¿ãªããžã§ã¯ããäœæããããã©ãŒãã³ã¹æž¬å®å€ãäœæããããšããŸãããããã©ãŒãã³ã¹ã«äžè²«ããéãã¯èŠãããŸããã§ããã
ãããã£ãŠããJavaScriptã®ã¯ã©ã¹ãæªãããšèšãåã«ããã®ããã©ãŒãã³ã¹ã®äœäžãåŒãèµ·ãããã®ã¯ããã©ã³ã¹ãã€ã«ãããã¯ã©ã¹ãšãã€ãã£ãJSã®éããšçžãŸã£ãŠãLessã³ãŒãããŒã¹ã®ä»ã®æ¬åœã«äžå¹žãªãã¿ãŒã³ã§ããå¯èœæ§ããããŸãã
æ£çŽãªãšãããç§ã¯ã¯ã©ã¹ã®ãã¿ãŒã³ãçã£ãããšã¯ãããŸããã å
ã®ES5ã³ãŒããéãããªãã¡ã€ãã³ãŒããããé«éã«å®è¡ãããããšã¯ç¥ã£ãŠããŸããããç¢å°é¢æ°ã®åšãã«äœããããããæ§æãã©ããã«åºãã£ãŠããã®ã§ã¯ãªãããšçã£ãŠããŸããã ç§ã¯ãŸã ææ°ã®ES5ãã©ã³ããæã£ãŠããã®ã§ãããæ¥ã lebab
å床å®è¡ãã次ã®å€æã®ã¿ã䜿çšããããšã«ããŸããïŒ let,class,commonjs,template
ã ãã®æãç§ã¯ãããåã³ããã©ãŒãã³ã¹ã®åé¡ãæ±ããŠããããšãçºèŠããŸããã æååãã³ãã¬ãŒããlet-to-varã§ã¯ãªãããšã¯ããã£ãŠããŸããã 茞å
¥ãå¿
èŠãªã®ãããããªããšæã£ãã®ã§ããã°ããéãã§ã¿ãŸããã ããã¯ã¯ã©ã¹ãæ®ããŸããã ãã®ãããæãåã£ãŠããã¹ãŠã®æ¡åŒµã¯ã©ã¹ãæ©èœç¶æ¿ã«æžãçŽããŸããã ãã ãããã©ãŒãã³ã¹ãæ»ã£ãŠããŸããã
ããïŒ åŠãã æèšã ãããžã§ã¯ããå€ãES5ã³ãŒãäžã«ããããã®ãã¢ãã³ãªãBabelåãŸãã¯TypeScriptedã®è¯ããåæããŠããå Žåã¯ãäœããã©ã³ã¹ãã€ã«ããŠããèšè¿°ããªãã£ãããšãå¿ããªãã§ãã ããã
math = alwaysã¢ãŒãã§æ瀺çã«ã³ã³ãã€ã«ããŠã以åã®æ°åŠã®åäœãååŸã§ããŸãã ããã¯åã«ç°ãªãããã©ã«ãã§ãã
ç§ã¯ãããç¥ã£ãŠããŸãã å€ãã®ç°ãªãããŒã ã«ãŸãããLessã³ãŒãããŒã¹ãå€æ°ãããããããã©ã«ãã®ã³ã³ãã€ã«ãªãã·ã§ã³ã§ãå€æŽãäžæãããšãéä¿¡ã³ã¹ããå¢å ããŸãã ã¡ãªãããå£ãã䟡å€ããããã©ããã¯ããããŸããã
詳现ãªå èš³ãããããšãïŒ
ã³ã³ãã€ã«ãããåºåã§Object.assign
ã®äœ¿çšæ³ãèŠãŸãããããã¯ãããªãã£ã«ãå¿
èŠã«ãªããªãéãããã€ãã£ãES class
æ§æããµããŒããããã©ãŠã¶ãŒã§ã®ã¿æ©èœããããšãæå³ããŸãã ããã§ãå€ãç°å¢ïŒIE11ãããŒã4ãªã©ïŒã®ãµããŒããçµäºããå Žåã¯ãES5ã«ãã©ã³ã¹ãã€ã«ããã«ãã€ãã£ãæ§æã䜿çšã§ããŸããïŒ
åæã«ãããã©ãŒãã³ã¹ã®äœäžã®ä¿®æ£ãšé倧ãªå€æŽãåé¢ã§ãããšãããšæããŸããã€ãŸããããã©ãŒãã³ã¹ã®ä¿®æ£ãv3ã«é 眮ããé倧ãªå€æŽãv4ã«ã®ã¿å«ããããšãæå³ããŸãã
@ matthew-ãã£ãŒã³
ESã¯ã©ã¹ãç¯äººã§ãããšããäºå®ã¯æãã¯ã¬ã€ãžãŒã§ãã
å
¥å¿µãªå
èš³ãããããšãã
衚瀺ãããŸãïŒ_ç¶æ¿ãããæ§æ_ð
åèãŸã§ã«; ããã¯ãªãŒã³ãªå
žåçãªç¶æ¿ãã§ãŒã³ãå¿
èŠãªå Žåã¯ãå®éã«ã¯äŸãšã¯å°ãç°ãªãæ¹æ³ã§è¡ãå¿
èŠããããŸãã
ãã®ããã«Object.create
ã䜿çšããå ŽåïŒ
var Node = function() {
this.foo = 'bar';
}
Node.prototype = Object.create();
Node.prototype.constructor = Node;
var Inherited = function() {
Node.prototype.constructor.call( this );
this.value = 1;
}
Inherited.prototype = Object.create( Node.prototype );
Inherited.prototype.constructor = Inherited;
var myNode = new Inherited();
次ã«ãããããã£ãã€ã³ã¹ã¿ã³ã¹èªäœã«ãã©ããåããã€ã³ã¹ã¿ã³ã¹èªäœãåã圢ç¶ãå ±æããŸãã ãããã¿ã€ãã¯åœ¢ãå ±æããŸãã _ãããŠ_ããããã£ã¢ã¯ã»ã¹ããšã«ãããã¿ã€ããã§ãŒã³ãã¯ããŒã«ããå¿ èŠããªããªããŸãã ð
@Justineo
ã³ã³ãã€ã«ãããåºåã§Object.assignã®äœ¿çšæ³ãèŠãŸãããã€ãŸããããªãã£ã«ãå¿ èŠã«ãªããªãéãããã€ãã£ãESã¯ã©ã¹æ§æããµããŒããããã©ãŠã¶ãŒã§ã®ã¿æ©èœããŸãã ããã§ãå€ãç°å¢ïŒIE11ãããŒã4ãªã©ïŒã®ãµããŒããçµäºããå Žåã¯ãES5ã«ãã©ã³ã¹ãã€ã«ããã«ãã€ãã£ãæ§æã䜿çšã§ããŸããïŒ
ç§ã¯ãããå®å
šã«æ£ãããšã¯æããŸãããã€ãŸããObject.assignã¯ã¯ã©ã¹ã®å®è£
ã®çŽåã«çéžããŸããããããªãã®äž»åŒµã¯ç解ãããŠããŸãã [Something].prototype.property
äœåºŠãæžãã®ãé¿ããããšæã£ãŠããŸããïŒ/
æè¡çã«ã¯ããã¹ãŠããŸã ãã©ã³ã¹ãã€ã«ããŠããã®ã§ãããããŸããã åœåã®ç®æšã¯ãããä¿å®å¯èœã§èªã¿ãããã³ãŒãããŒã¹ã§ããã äžéšã®ç°å¢ã§Object.assignããªãã£ã«ãå¿ èŠãªå Žåã¯ãããããŠãã ããã ããã¯ãLessããµããŒãããŠããªãããŒãžã§ã³ã®ãã®ã«ãªããŸãã
åæã«ãããã©ãŒãã³ã¹ã®äœäžã®ä¿®æ£ãšé倧ãªå€æŽãåé¢ã§ãããšãããšæããŸããã€ãŸããããã©ãŒãã³ã¹ã®ä¿®æ£ãv3ã«é 眮ããé倧ãªå€æŽãv4ã«ã®ã¿å«ããããšãæå³ããŸãã
ç§ã¯ãããèããŠããŸããããããŠããããŸãå ¬æ£ãªç¹ã ãšæããŸãã Lessã®3ã€ã®ã¡ãžã£ãŒããŒãžã§ã³ã®æ§ç¯/ç¶æãé ãççºããªãããã«ããããšããŠããŸãã
@rjgotten AFAIKã¯ãå®çŸ©ãããšããã«ãã¯ã©ã¹ãã¿ãŒã³ãå®è¡ããããšã«ãªã£ãŠããããšã§ãã é倧ãªéããèŠãããªãå Žåãé€ããŸãã ã ããð€·ââïžã ããã©ãŒãã³ã¹ãè¯å¥œãªå Žåã¯ãLessã®ããŒãç¶æ¿ãã¿ãŒã³ãå床å€æŽããã€ããã¯ãããŸããïŒ @Justineoãææ¡ããããã«ãã®Object.assign
åŒã³åºããåé€ããå Žåãé€ããŸãïŒã
@Justineo @rjgottenãããè©Šãããšãã§ããŸããïŒ [email protected]+b1390a54
è©ŠããŠã¿ãŸããïŒ
| ããŒãžã§ã³| æé|
| -| -|
| v3.9.0 | ã1.6ç§|
| v3.10.0ãv3.11.1 | ã3.6ç§|
| v3.11.2 + | ã12ç§|
| 4.0.1-alpha.2 + b2049010 | ã1.6ç§|
| 3.13.0-alpha.10 + b1390a54 | ã4.7ç§|
远䌞 Node.jsv12.13.1ã§ãã¹ãæžã¿ã
ç§ã¯äœã§ããã
åå¥ã®ãã³ãããŒã¯ãèšå®ããæéããããŸããã§ããã
ããããçµ±åãã¹ãã®èŠ³ç¹ãããããã«ããã€ãã®å®éã®æ°å€ããããŸããLessã䜿çšããå®çšŒåã°ã¬ãŒãã®Webpackãããžã§ã¯ãã®çŽ¯ç©çµæã§ãã
ããŒãžã§ã³| æé| ããŒã¯ã¡ã¢ãª
ïŒ------------------------ | --------ïŒ| ------------ïŒ
3.9 | 35376ms | 950MB
3.11.3 | 37878ms | 920MB
3.13.0-alpha.10 + b1390a54 | 34801ms | 740MB
3.13.1-alpha.1 + 84d40222 | 37367ms | 990MB
4.0.1-alpha.2 + b2049010 | 35857ms | 770MB
ç§ã«ãšã£ãŠã3.13.0ã¯_æé«ã®_çµæããããããŸã...ð
3.11.3ã¯ãŸãã3.11.1ããŒãžã§ã³ã§ä»¥åã«èŠããããªæŽèµ°ã¡ã¢ãªã®äœ¿çšããªãããã§ãã
ãããã4.0.1ãš3.13.0ã®ããŒã¿çã¯ããã«åªããŠããŸãã
ãã£ãã·ã¥ã埩å ãã3.13.1ã¯ãå®éã®ã³ã³ãã€ã«æéãæ¹åããã®ã«åœ¹ç«ãããã¡ã¢ãªäœ¿çšéãå¢ããã ãã§ãã
@rjgottenãããåé¡ã¯ããã®ã¹ã¬ããã§ã¯ã人ã ãããŸããŸãªãã®ã枬å®ããŠããããããŸã§ã®ãšããã誰ããæ¬è³ªçã«è€è£œã§ããªããã©ã€ããŒãããŒã¿ãæã£ãŠããããšã ãšæããŸãïŒLessãã³ãããŒã¯ã«æåºããããPRã«å€æããå¿ èŠããããŸãïŒã Lessã«ã¯ãã³ãããŒã¯ãã¹ãããããŸããããã¯ããªããžããªã®ããŸããŸãªã¯ããŒã³ã«å¯ŸããŠäœ¿çšããŠã解æ/è©äŸ¡æéã®éããèªåã§ç¢ºèªã§ããŸããããã£ãã·ã¥ã¯ïŒçŸåšïŒé©çšãããŸããã
ããã¯ãããªãŒã®ç¶æ¿ãå€æŽããã解æããªãŒã®ãã£ãã·ã¥ã埩å
ãããå
¬éãã«ãã§ãã [email protected]+e8d05c61
https://github.com/ecomfe/dls-tooling/tree/master/packages/less-plugin-dls
| ããŒãžã§ã³| æé|
| -| -|
| v3.9.0 | ã1.6ç§|
| v3.10.0ãv3.11.1 | ã3.6ç§|
| v3.11.2 + | ã12ç§|
| 4.0.1-alpha.2 | ã1.6ç§|
| 3.13.0-alpha.10 | ã4.7ç§|
| 3.13.0-alpha.12 | ã1.6ç§|
v12.13.1
ç§ã«ã¯ããã®ããŒãžã§ã³ã¯å®å šã«æ©èœããŠããããã§ãã ååã«è©ŠããŠç¢ºèªããŠããããŸãã
ç§ã«ãšã£ãŠã¯alpha.10
ãããå°ãæªãåäœãããŸãããå€åããå¯èœæ§ããããŸãã
ããŒãžã§ã³| æé| ããŒã¯ã¡ã¢ãª
ïŒ------------------------ | --------ïŒ| ------------ïŒ
3.9 | 35376ms | 950MB
3.11.3 | 37878ms | 920MB
3.13.0-alpha.10 + b1390a54 | 34801ms | 740MB
3.13.0-alpha.12 + e8d05c61 | 36263ms | 760MB
3.13.1-alpha.1 + 84d40222 | 37367ms | 990MB
4.0.1-alpha.2 + b2049010 | 35857ms | 770MB
@ matthew-deanãç§ã®ã³ãŒãã¯ãŸã 4.0.1-alpha.2+b2049010
å€æŽãšäºææ§ããªãããã§ãã åé¡ã解決ããŠè©ŠããŠã¿ãããšãã§ãããã©ããã確èªããŸãã
@rjgottenããããã¹ãã±ãŒã¹ã®éãã¯ããããªããã§ãã
ãã®çµæã3.xãš4.0ã®äž¡æ¹ã®ãªãªãŒã¹ãæºåã§ãããšæããŸãã ãã®åé¡ã解決ãããŠããªãç¶æ ã§4.0ãããã·ã¥ããããšãæãã§ããŸããã§ããã ãããããããšã«ãããã¯ããã§ãã£ãããã«èŠããŸãã
ç§ãè¡ããã1ã€ã®é ç®ã¯ãç¹å®ã®ãã³ãããŒã¯ãããå€ãäžåã£ãå Žåã«å€±æããCIãã€ãã©ã€ã³ãé 眮ããããšã§ãã
@ jrnail23 4.0 alphaãå®è¡ããããã«å€æŽã§ããã°çŽ æŽãããã®ã§ããããããŸã§ã®éã [email protected]+e8d05c61
è©ŠããŠã¿ãŠãã ããã
@ matthew-deanããã«ãã§æ¬¡ã®æ å ±ãååŸããŠããŸãã
ã ãããããªãã¯ããªãããªãããå Žæã«æ»ã£ãŠããããã«èŠããŸãïŒ ãããã£ãïŒ
ãããã£ãïŒ
ãããç§ã¯2çªç®ã«è¡ããŸãã äžçªç®; ãããŠ4çªç®ã
ããã¯åä»ã§åä»ãªããã©ãŒãã³ã¹ã®äœäžã§ãããã¯ãªãŒã³ã¢ããããã®ã«æ¬åœã«å€ãã®åŽåãèŠããŸããã
ä»äºã¯_éåžžã«ãã_å®äºããŸããã
倧äžå€«ããŒã ïŒ 3.xãã«ããå ¬éãããã°ããããŠãããããããæ¥é±ã4.0ãå ¬éããŸãã äž¡æ¹ãšãããã©ãŒãã³ã¹ãä¿®æ£ãããŠããã¯ãã§ãã ãããã°ãæäŒã£ãŠããããã¹ãŠã®äººã«æè¬ããŸãïŒ
ã¡ãªã¿ã«ãç§ã¯çŸåšãLess.jsã³ãŒãããŒã¹ãTypeScriptã«å€æããŠããæäžã§ããããã®æ©äŒãå©çšããŠããã©ãŒãã³ã¹ã®èª¿æŽ/ãªãã¡ã¯ã¿ãªã³ã°ãè¡ãäºå®ã§ãã èå³ã®ããæ¹ã¯ãã€ã§ããæäŒããããŠããã ããŸãïŒ https://github.com/matthew-dean/less.js/compare/master...matthew-deanïŒnext
ããªããããã€ãã®äœåãªç®ã奜ãç¹å®ã®äœãïŒ PRããšãŠã倧ããã®ã§ã©ãããå§ãããããã®ãããããªã
@kevinramharakããã¯å ¬æ£ãªè³ªåã§ãã æ£çŽãªãšãããTypeScriptãžã®å€æã§äºæããªãé害ïŒè§£æ±ºãå°é£ã«ãªã£ããšã©ãŒïŒã«ééããä»ã§ã¯ãããè¡ãããšããŸã£ããèãçŽããŠããŸãã çŸç¶ã§ã¯Lessã¯æ£åžžã«åäœããŠãããïŒãªãã¡ã¯ã¿ãªã³ã°/æ°ããèšèªæ©èœã®è¿œå ã容æã«ããããã«ïŒå€æãããã£ãå€ãã®çç±ã¯ãæ°ããèšèªæ©èœã®ã¢ã€ãã¢ãæ°ããpre-ã«ç§»åããããšã«ãããããä»ã§ã¯ç¡é¢ä¿ã§ããåŠçèšèªã èªå·±å®£äŒããããªãã®ã§ã詳现ãå¿ èŠãªå Žåã¯TwitterãŸãã¯Gitterã§DMãéã£ãŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
倧äžå€«ããŒã ïŒ 3.xãã«ããå ¬éãããã°ããããŠãããããããæ¥é±ã4.0ãå ¬éããŸãã äž¡æ¹ãšãããã©ãŒãã³ã¹ãä¿®æ£ãããŠããã¯ãã§ãã ãããã°ãæäŒã£ãŠããããã¹ãŠã®äººã«æè¬ããŸãïŒ