You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Codemod Platform ã¨ã¯ Codemod Platform 㯠codemod ã®éçºã¨ã·ã§ã¢ã«ç¹åãããã©ãããã©ã¼ã ã§ãã æ§ã ãªéçºè ãéçºãã codemod ã VSCode ã®æ¡å¼µæ©è½ã»ã³ãã³ãã©ã¤ã³ããå®è¡ã§ãããã¨ã§ä»¥ä¸ã®ãããªä½æ¥ã®å¹çåãç®æãã¦ãã¾ãã ãã¬ã¼ã ã¯ã¼ã¯ã®ã¢ããã°ã¬ã¼ã å¤§è¦æ¨¡ãªãªãã¡ã¯ã¿ãªã³ã° å®åçãªããã°ã©ãã³ã°ä½æ¥ ã©ã㪠codemod ãå ¬éããã¦ããã®ã å ¬éããã¦ãã codemod ã®æ° 㯠160 åã»ã©ã§ããã¾ããã»ã¨ãã©ããã®ãã¼ã«ã®éçºå èªèº«ã使ã»å ¬éãã¦ãããã®ã«ãªã£ã¦ãã¾ããï¼2024/08/01 æç¹ï¼ codemod ã®ç¨®é¡ã«é¢ãã¦ã¯ Next.js ã React ã«é¢ãã codemod ãä¸å¿ã«å ¬éããã¦ãããReact18 ãã 19 ã¸ã®ãã¤ã°ã¬ã¼ã·ã§ã³ã«é¢ãã codemod ãç´¹ä»ãã¦ããã
ããªãã«ã¨ã£ã¦éè¦ãªãããã¯ãååã®ææ°æ å ±ãå ¥æãã¾ãããææ°ã®æ´å¯ã¨ãã¬ã³ãã«é¢ããææ°æ å ±ãå³åº§ã«åãåãã¾ãããã ç¶ç¶çãªå¦ç¿ã®ããã«ãç¡æã®ãªã½ã¼ã¹ã«æè»½ã«ã¢ã¯ã»ã¹ãã¾ãããããããã¯ããã©ã³ã¹ã¯ãªããä»ãåç»ãããã³ãã¬ã¼ãã³ã°ææã è¨äºãä¿åãã¦ããã¤ã§ãèªããã¨ãã§ãã¾ãè¨äºãããã¯ãã¼ã¯ãã¦ãæºåãã§ããããã¤ã§ãèªãã¾ãã
import type { Meta, StoryObj } from '@storybook/react'; import Button from './Button'; const meta: Meta<typeof Button> = { component: Button, }; export default meta; ... 夿ãããç®æã¨å 容ãã¾ã¨ããã¨ä»¥ä¸ã®éãã§ãã @storybook/react ã® import æã« Meta ã追å ãã export default ã®ãªãã¸ã§ã¯ãã meta 夿°ã«å¤æ´ããåæ³¨éãè¨å®ãã ç¸å¯¾ãã¹ã§ import ãã¦ããã³ã³ãã¼ãã³ãã®åãæå®ãã export default ã meta ãªãã¸ã§ã¯ãã«å¤æ´ãã ã³ã³ãã¼ãã³ãã®åãåçã«å¤ããã¾ããã夿´å 容ã¯å ±éãã¦ãããããAST ã使ã£ã¦ä¸æ°ã«å¤æã§ãããã§ãã
ã¯ããã« ããã«ã¡ã¯ãken ã§ãããä»äºã§ã¯ Go ãããæ¸ãã¾ãã æè¿ãGo ã®å ¬å¼ããã±ã¼ã¸ã§ããgolang.org/x/toolsãçºãã¦ãããããªã«ããæç¨ãããªããã±ã¼ã¸ãè¦ã¤ããã®ã§ä»åã¯ããã«ã¤ãã¦æ¸ããã¨æãã¾ãã ããã¯egã¨ãããªãã¡ã¯ã¿ãªã³ã°ãã¼ã«ã§ãã eg ã¨ã¯ eg ã¯ãä¾ãã¼ã¹ã§ Go ã³ã¼ãããªãã¡ã¯ã¿ãªã³ã°ããããã®ãã¼ã«ã§ãããã®ãã¼ã«ã使ç¨ãããã¨ã§ãç¹å®ã®ã³ã¼ããã¿ã¼ã³ãå¥ã®ã³ã¼ãã«ç½®ãæãããã¨ãã§ããå¹ççã«ãªãã¡ã¯ã¿ãªã³ã°ãè¡ãã¾ãã å ã»ã©è²¼ã£ãå ¬å¼ããã¥ã¡ã³ãã«è©³ãã説æããããã¨æããã The eg command performs example-based refactoring. For documentation, run the command, or see Help in golang.org/x/tools/ref
ã¯ããã« ããã«ã¡ã¯ãast-grepã®ä½è ããªã³ãã³ã§ãã Reactãã¼ã¸ã§ã³19ã®ãªãªã¼ã¹ã«ä¼´ããæ°æ©è½ã¨æ¹åã追å ããã¾ããã ãããããã®æ°ãã¼ã¸ã§ã³ã¸ã®ã¢ããã°ã¬ã¼ãã«ã¯ãã½ã¼ã¹ã³ã¼ãã®ä¸é¨ãä¿®æ£ããå¿ è¦ãããã¾ããç¹ã«å¤§è¦æ¨¡ãªã³ã¼ããã¼ã¹ã§ã¯ããã®ããã»ã¹ã¯ããªãæéãããããç¹°ãè¿ãè¡ãå¿ è¦ãããã¾ãã æ¬è¨äºã§ã¯ãast-grepã¨ãããã¼ã«ã®ä½¿ç¨æ¹æ³ã説æãã¾ãããã®ãã¼ã«ã¯ãã³ã¼ããã¼ã¹å ã§ãã¿ã¼ã³ãè¦ã¤ãã¦ç½®ãæãããã¨ãç®çã¨ãã¦è¨è¨ããã¦ãããReact 19ã¸ã®ç§»è¡ã容æã«ãã¾ãã 以ä¸ã®3ã¤ã®ä¸»è¦ãªcodemodsã«ç¦ç¹ãå½ã¦ã¾ãã <Context>ããããã¤ãã¨ãã¦ä½¿ç¨ãã æé»ã®refã³ã¼ã«ããã¯ãªã¿ã¼ã³ãåé¤ãã refãpropsã¨ãã¦ä½¿ç¨ããforwardRefãåé¤ãã åææ¡ä»¶: ast-grepã®ã»ããã¢ãã ã¾ããast-grepãã»ãã
ããã«ã¡ã¯ã ast-grepã®ä½è Herringtonã§ãã æ£è¦è¡¨ç¾ã§ã³ã¼ããæ¤ç´¢ãããã¨ãããæ¹ãªããè¤æ°è¡ã®ãããã³ã°ãå ¥ãåæ§é ã®å¦çãã³ã¡ã³ãã®ç¡è¦ãªã©ã«è¦å´ãããã¨ãããããããã¾ããã ããã§ãast-grep VSCodeã¨ããæ°ããæ¡å¼µãç´¹ä»ãã¾ããããã¯ãæ§é çæ¤ç´¢ã¨ç½®æï¼SSRï¼ã¨ããæè¡ãå©ç¨ãã¦ãããæ£ç¢ºã§å¹ççãªæ¤ç´¢ã¨ç½®æãå®ç¾ãããã¼ã«ã§ãã æ§é æ¤ç´¢ã¯ï¼ ããã¹ãæ¤ç´¢ã¨ç½®æã®éç ä¾ãã°ãJavaScriptã³ã¼ãããªãã¡ã¯ã¿ãªã³ã°ãã¦ãlodash ã® _.filter 颿°ããã¤ãã£ãã® Array.prototype.filter ã¡ã½ãã ã«ç½®ãæãããã¨ãã¾ããåç´ãªããã¹ãæ¤ç´¢ã¨ç½®æã¯æ¬¡ã®ããã«ãªãã¾ã: ããã¯ä¸é¨ã®ã±ã¼ã¹ã§ã¯ãã¾ãããããããã¾ããããããã¤ãã®åé¡ãããã¾ãã ä¸è¡ã®å¼ãããããã³ã°ã§ãã¾ãããã³ã¼ããè¤æ°è¡ã«ã¾ããã£ã¦ã
å¤§è¦æ¨¡ãªã³ã¼ããã¼ã¹åãã®é«éãªASTãã¼ã«ã¨ãã¦ast-grepã¨ãããã®ããããããã«ã¤ãã¦ã®èª¿æ»ã¡ã¢ã 主ã«ä»¥ä¸ã®å ¬å¼ããã¥ã¡ã³ããèªã¿é²ãã¦ãå©ç¨æ¹æ³ããã¿ã¼ã³ãã«ã¼ã«ã®è©³ç´°ãªã©ã«ã¤ãã¦çè§£ãæ·±ããã ast-grepã¨ã¯ å ¬å¼ããã¥ã¡ã³ãã§ã¯ãã³ã¼ãã®æ¤ç´¢ããLintãcodemodã«è³ãã¾ã§ASTãã¼ã«ã¨ãã¦ç¶²ç¾ çã«ã«ãã¼ã§ãããã¼ã«ã§ãããã¨ã以ä¸ã®ããã«è¡¨ç¾ããã¦ããã Think ast-grep as an hybrid of grep, eslint and codemod. çµæã«ç²¾åº¦ãæ±ããããå ´é¢ã§ã¯ãé«éã§ãããã®ã®ç²¾å¯ãã«æ¬ ããããã¹ããã¼ã¹ã§ã¯ãªããASTãã¼ã¹ã§ã®æ£ç¢ºãªè§£æã®æ¹ãæã¾ããã ãããã©ãASTã§ã®è¨è¿°ã¯é常ã«é¢åã«ãªããã¡ã¨ããå´é¢ãããã ãã®ç¹ã«ããã¦ast-grepã¯ãããã¹ããã¼ã¹ã§ã®grepã§ã¯ãªããASTãã¼ã¹ã§ã®grepã¨ããã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}