Create React Appã¯ãReactã¢ããªã±ãŒã·ã§ã³ããã°ããèµ·åããããã®åªããããŒã«ã§ãã WebpackãBabelãããã³ãã®ä»ã®äœ¿ãæ £ããããŒã«ã®ã»ããã¢ããã«æéãç¡é§ã«ããŸããã ãããã¯äºåã«æ§æãããé衚瀺ã«ãªã£ãŠãããããéçºè ã¯ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããšããžãã¹ããžãã¯ã«éäžã§ããŸãã
- GitHubã§Reactã¢ããªãäœæããŸã ã
- React AppãŠãŒã¶ãŒã¬ã€ãã®äœæ ;
- Awesome Create React App-èå³æ·±ãçŽ æã®éžæãæåŸ ãããæ©èœãFAQã
Create React Appã®ãªãªãŒã¹åã¯ãæ°ããã¢ããªã±ãŒã·ã§ã³ãèµ·åãããã³ã«ããŸãã¯ãã¹ãŠãæåã§æ§æãããã³ã«ãWebpack-configããã³ãã®ä»ã®* rcãã¡ã€ã«ã以åã®ã¢ããªã±ãŒã·ã§ã³ããã³ããŒããå¿ èŠããããŸããã ããã»ã©æéã¯ãããããéå±ã§ããã äœãééã£ãããšããããšç·åŒµããããšããããŸãããããªããã®ã¢ããªã±ãŒã·ã§ã³ã§åäœããã®ã«ãããã§ã¯åäœããªãã®ã§ããïŒã ç¹ã«ãæ§æãã»ãŒåãã§ããè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãããå Žåã ããã«ãWebpack2ã®ãªãªãŒã¹ã§ã¯ããã¹ãŠãåæ§æããåã³æéãè²»ããå¿ èŠããããŸãã ïŒãã¿ãã¬ïŒCreate Reactã¢ããªã§ã¯ãpackage.jsonã®react-scriptsã®ããŒãžã§ã³ãæŽæ°ããã ãã§ããïŒ
Create React Appã¯ãåºæ¬æ§é ãæã€ã¢ããªã±ãŒã·ã§ã³ãäœæããããã®CLIã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããå¿ èŠãªäŸåé¢ä¿ããã¹ãŠã€ã³ã¹ããŒã«ããã¹ã¯ãªãããpackage.jsonã«è¿œå ããŠãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã¹ããããã³ãã«ãããŸãã
npm install -g create-react-app create-react-app my-app cd my-app/ npm start # yarn start
ãŒãæ§æïŒ éçºè ã¯ãã€ãžã§ã¯ããããŸã§WebpackãŸãã¯Babelãæ§æã§ããŸããã
çµéšè±å¯ãªãŠãŒã¶ãŒã§ãæšæºæ§æã«æºè¶³ã§ããªãå Žåã¯ãã€ãžã§ã¯ãããããšãã§ããŸãã ãã®å ŽåãCreate React Appã¯ãã³ãã¬ãŒãã³ãŒããžã§ãã¬ãŒã¿ãŒãšããŠäœ¿çšãããŸãã
npm run eject
ã³ãã³ãã¯ããã¹ãŠã®æ§æãšæšç§»çãªäŸåé¢ä¿ïŒWebpackãBabelãESLintãªã©ïŒããããžã§ã¯ãã«ã³ããŒããŠãããããå¶åŸ¡ã§ããããã«ããŸãã
npm start
ã
npm run build
ãªã©ã®ã³ãã³ãã¯
npm run build
åæ¢ããŸããããã³ããŒãããã¹ã¯ãªãããæãã®ã§ãå€æŽã§ããŸãã ãã®åŸãããªãã¯èªåã§ããŸãã
åãåºããè¡ããªãçç±
ãŸãããã®æäœã¯å ã«æ»ããªãããã§ãã ãããããããå¯äžã®ãã€ã³ãã§ã¯ãããŸããã ããã«ããã€ãã®çç±ããããŸãã
Create React Appã®æŽæ°ããã°ã©ã ãåãåããã
React Appã®äœæããŒã ãWebpack 2ã«åãæ¿ããŠïŒãã§ã«è¡ã£ãŠããïŒããªãŒã·ã§ãŒãã³ã°ããã®ä»ã®ã¯ãŒã«ãªæ©èœããµããŒãããããšã«ãããšæ³åããŠãã ããã ãã®å Žåããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®æ§æãæŽæ°ããã®ã§ã¯ãªããreact-scriptsã®ããŒãžã§ã³ãæŽæ°ããã ãã§ååã§ãã
ãŸãã¯ãCreate React AppããŒã ãPlugin SystemïŒ670ããªãªãŒã¹ãããšããŸãã ç§ã¯ãã®ãããªã·ã¹ãã ã䜿ããèªåã®ãã©ã°ã€ã³ãäœæãããã§ãã ããããã€ãžã§ã¯ããè¡ãããå Žåãäœãæ©èœããŸããã
package.jsonã«å€ãã®äŸåé¢ä¿ããããšãã¯æ°ã«å ¥ããªã
ããããããã¯äºçŽ°ãªããšã§ãããã³ãŒãã§çŽæ¥äœ¿çšããªãpackage.jsonã®babel *ãeslint *ãããã³webpack *ã®äŸåé¢ä¿ã®æãèŠãããããŸããã
è¿œå ã®æ§æãšè¿œå ã®ã³ãŒã
ç§ã¯åžžã«ã¢ããªã±ãŒã·ã§ã³ã®æž æœããç¶æããŠããŸãã åãåºãåŸã ã¹ã¯ãªãããšæ§æãã£ã¬ã¯ããªãäœæãããŸãã ãããŠãããããšãšãã«-ããããã«50ã200è¡ã®ã³ãŒãã®çŽ10åã®æ°ãããã¡ã€ã«ã ã»ãšãã©ã®å ŽåãçŽ5è¡ã®ã³ãŒãã®ã¿ãå€æŽããããã«ã€ãžã§ã¯ããè¡ãããŸãïŒæ°ããWebpackããŒããŒã1ã€è¿œå ããŸãïŒã
åã³25
ã»ãšãã©ã®å Žåãã¢ããªã±ãŒã·ã§ã³æ§æïŒBabelããªã»ãããWebpackããŒããŒãããã³ãã©ã°ã€ã³ïŒã¯åãã§ãããããã€ãžã§ã¯ããè¡ã£ãŠæ§æãç·šéããåŸãããããä»ã®ã¢ããªã±ãŒã·ã§ã³ã«ã³ããŒããå¿ èŠããããŸãã
Reactã¢ããªã®äœæã奜ããªçç±
ããã¯ãReactéçºè ã®ããŒã«ã§ãã
Create Reactã¢ããªã®éçºè ã¯ãReactã®éçºè ã§ãã ç§ã¯åœŒããä¿¡é ŒããŠãããReactã¢ããªã±ãŒã·ã§ã³ãæ£ããéçºããCreate React Appãããžã§ã¯ãã®ãã¬ãŒã ã¯ãŒã¯å ã§ãã¯ãããžãŒã®é©åãªçµã¿åããã§ãã¹ãŠã®æ©èœãå®è£ ããæ¹æ³ãç¥ã£ãŠãããšç¢ºä¿¡ããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³æ§é ã«æ§æãŸãã¯äœåãªãã¡ã€ã«ã¯ãããŸãã
ç§ã¯ã¢ããªã±ãŒã·ã§ã³ã®é åºã奜ããªã®ã§ãwebpack.configãæ¬ èœããŠããããšã¯ééããªã奜ãã§ããpackage.jsonã«ã¯* rcãã¡ã€ã«ãšäŸåé¢ä¿ã®ããŒãã¯ãããŸããã
ã¹ã¿ãã¯å šäœã1è¡ã§æŽæ°ãããŸãã
éçºã¹ã¿ãã¯ã¯åºå®ãããŠãããå®å®ããŠããŸãã
React Appãäœæãããšã ã¹ããŒãž3ã®æ©èœã®ã¿ããªãªãŒã¹ãããŸãïŒãªãªãŒã¹åè£ïŒã ãã©ããã»ã¯ã·ã§ã³ã®æ°æ©èœïŒ do-expressionsãnull-propagationãªã©ïŒããããããšãé¢çœãå ŽåããããŸã ã çŽäº€ã¯ã©ã¹ã®ææ¡ãèŠãããšãã§ããŸãããå®çšŒåç°å¢ã§äœ¿çšããããšã¯ãŸã£ããè¯ãèãã§ã¯ãããŸããã
ãã ãããã©ãããšææ¡ã®æ©èœãåŒãç¶ã䜿çšããå Žåãçµæã¯æ¬¡ã®ããã«èª¬æã§ããŸãã
ãã®ããŒã«ã®æ©èœã¯æ¥éã«æ¡å€§ããŠããŸãã
ãã®ããŒã«ã®æ©èœã®æ°ã¯æ¥éã«å¢ãããšç¢ºä¿¡ããŠããŸãã ã³ãã¥ããã£ã¯ãã§ã«ããªã倧ãããå€ãã®èå³æ·±ãã¢ã€ãã¢ãææ¡ãå¯ããããŠããŸãã ãããã®ããã€ãã次ã«ç€ºããŸãã
- ãã©ã°ã€ã³ã·ã¹ãã ;
- ã©ã³ã¿ã€ã ãšã©ãŒãªãŒããŒã¬ã€ ;
- åäžã®ã³ã³ããŒãã³ããå®è¡ããããã®ã°ããŒãã«CLI ã
- åæã³ãããã§gitãªããžããªãäœæããŸã ;
- ã³ãããæã®ããããªèªåãã©ãŒãããã®ããã«lint-staged + huskyãè¿œå ããŸãã
- ããŸããŸãª.envæ§æããµããŒãããŸãã
äžéšã®ã¹ã¬ããã¯éããããŠãããããã§ã«ãªãªãŒã¹ãããŠããŸãã ããããäžçªäžã®è¡ã¯å€ãã®ã¢ã€ãã¢ããããšããããšã§ãã Reactã¢ããªã®äœæçšã®ãµãŒãããŒãã£è£œããŒã«ã§ããCRA generateïŒScaffold a React componentãŸãã¯CRAFTãªã©ãç»å ŽããŸããã
Reactã¢ããªã®äœæã«é¢ããç§ã®çµéš
Create React Appã®ãããã§ãç§ãã¡ã®ããŒã ã¯CSSã¢ãžã¥ãŒã« ã React Toolboxãããã³è¿œå ã®Webpackæ§æãå¿ èŠãšããä»ã®ããã€ãã®ã©ã€ãã©ãªãæŸæ£ããŸããã
ã¡ãªã¿ã«ã react-toolbox-themrã¯ãReact ToolboxãšReactã¢ããªã®äœæãç°¡åã«çµ±åã§ããŸã...ããããpackage.jsonã§ã¢ããªã±ãŒã·ã§ã³ããŒããèšè¿°ããããšã¯ãç§ã«ãšã£ãŠã¯è¯ãèãã§ã¯ãããŸããã
ãããŠãç§ã¯ãŸã ã€ãžã§ã¯ããããããããŸããïŒ
CSSã¯ãŒã¯
å ¬åŒããã¥ã¡ã³ãã®ã CSSããªããã»ããµã®è¿œå ïŒSassãLessãªã©ïŒ ãã»ã¯ã·ã§ã³ã§ã¯ãsass以äžã§ã®äœæ¥ã®æ§ææ¹æ³ã«ã€ããŠè©³ãã説æããŠããŸãã
å¯äžã®å¶éã¯cssã¢ãžã¥ãŒã«ã§ãã
CSSã¢ãžã¥ãŒã«ã®ä»£ããã«ã Glamour ã Aphrodite ã styled-components ã Fela ãããã³JSSã«æ³šç®ãå§ããŸããã
RadiumããããŸããã ã¹ã¿ã€ã«ã䜿çšããŠã³ã³ããŒãã³ããã¹ã¿ã€ã«èšå®ããã®ã¯å¥œãã§ã¯ãããŸããã
ãã®çµæãç§ãã¡ã¯ç¬èªã®ããŸã ãŸã£ããæ°ããã¢ãããŒãã§ããrockeyã䜿çšããŸãã
éåžžã®CSSã¯ã©ã¹ã®ä»£ããã«ã ãã³ãã¬ãŒããªãã©ã«ã䜿çšããŠãå®éã®ã³ã³ããŒãã³ãåããå§ãŸãã³ã³ããŒãã³ãã¹ã¿ã€ã«ã説æããŸãã
äžèŠããã®ã¢ãããŒãã¯ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã«äŒŒãŠããŸãããå®éã«ã¯ããªãç°ãªããŸãã
ã°ããŒãã«ãã©ã«ããŒããããŠã³ããŒããã
芪ãã£ã¬ã¯ããªã®ã¢ãžã¥ãŒã«ãå¿ èŠãšããã³ãŒããæ±ãã®ã¯éåžžã«å°é£ã§ãïŒ
const dateUtils = require('../../../utils/date');
éåžžãWebpackã§ã¯ãããã¯resolve.modulesDirectoriesæ§æã䜿çšããŠè§£æ±ºãããŸãã ãã§ã«æžããããã«ãCRAã¢ããªã±ãŒã·ã§ã³ã§ã¯Webpackã«ã¢ã¯ã»ã¹ã§ããŸãããã2ã€ã®ãœãªã¥ãŒã·ã§ã³ãå¯èœã§ãã
å ¬åŒãª
node_modules
ã¯ã
src
ãã£ã¬ã¯ããªã«
node_modules
ãäœæããããš
node_modules
ïŒ çµ¶å¯Ÿã€ã³ããŒãã®å ¬åŒãœãªã¥ãŒã·ã§ã³ãšããŠsrc / node_modulesãææžåïŒ1065 ïŒã
ãã1
NODE_PATH
ãçŸãããæ¹æ³ã¯ã
NODE_PATH
ç°å¢
NODE_PATH
ã䜿çšããããš
NODE_PATH
ã 詳现ã«ã€ããŠã¯ãNode.jsã®å ¬åŒããã¥ã¡ã³ããã°ããŒãã«ãã©ã«ããŒããã®èªã¿èŸŒã¿ ããåç §ããŠãã ããã
ãã©ãããã©ãŒã éã§ç°å¢å€æ°ãèšå®ããã«ã¯ã cross-envã䜿çšããããšããå§ãããŸãã
"scripts": { "start": "cross-env NODE_PATH=src/scripts react-scripts start" }
.envæ§æã䜿çšããå Žåã¯ã
NODE_PATH
å€æ°ãè¿œå ãã
NODE_PATH
ã§ãã
NODE_PATH=src/scripts
ç°å¢å€æ°
Reactã¢ããªã®äœæã¯ãããã©ã«ãã§.envããµããŒãããŸãïŒ dotenvããã±ãŒãžã䜿çšïŒã ã«ãŒããã©ã«ããŒã«.envãäœæããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã ãã§ãã REACT_APP_ãã¬ãã£ãã¯ã¹ãåå€æ°ã«è¿œå ããããšãå¿ããªãã§ãã ããã 詳现ã«ã€ããŠã¯ãã»ã¯ã·ã§ã³ã ã«ã¹ã¿ã ç°å¢å€æ°ã® è¿œå ãããã³ã.envã§ã®éçºç°å¢å€æ°ã®è¿œå ãã®å ¬åŒããã¥ã¡ã³ããåç §ããŠãã ããã
è€æ°ã®.envæ§æã®ãµããŒã
ç°å¢ã®ã¿ã€ãïŒdev / test / prodïŒããšã«èšå®ãåãããšäŸ¿å©ãªå ŽåããããŸãã ããšãã°ã .env.developmentã¯æ¬¡ã®ãšããã§ãã
REACT_APP_GOOGLE_CLIENT_ID = XXX-YYY-ZZZ.apps.googleusercontent.com REACT_APP_API_PROTOCOL = http: REACT_APP_API_HOST = localhost:3000 NODE_PATH = src/scripts PORT = 9001
ãããŠãããã§.env.production ïŒ
REACT_APP_GOOGLE_CLIENT_ID = ZZZ-YYY-XXX.apps.googleusercontent.com REACT_APP_API_PROTOCOL = https: REACT_APP_API_HOST = api.my-applicaton.com NODE_PATH = src/scripts
ããã¯ã dotenvãã€ã³ã¹ããŒã«ãã
npm scripts
ãæŽæ°ããããšã§å®è¡ã§ããŸãã
"scripts": { "start": "node -r dotenv/config ./node_modules/.bin/react-scripts start dotenv_config_path=.env.development", "build": "node -r dotenv/config ./node_modules/.bin/react-scripts build dotenv_config_path=.env.production" }
ããããã»ãšãã©ã®å Žåãç§ã®ãã«ãªã¯ãšã¹ã-ç°ãªãç°å¢èšå®ïŒ1343ã®ãµããŒãã¯ãªãªãŒã¹ã«å«ãŸããŸãã
ã©ã®.env * -configsã䜿çšã§ããŸããïŒ
- .env-æšæºïŒäžè¬ïŒæ§æ;
- .env.developmentã.env.testã.env.production-ç°å¢ã«å¿ããŠã
- .env.local-éçºè ã®ç°å¢ã«å¿ããŠå€æ°ããªãŒããŒã©ã€ãããããã®ããŒã«ã«èšå®ã ããŒãžã§ã³ç®¡çã·ã¹ãã ã§ã¯ç¡èŠãããŸãã
- .env.development.localã.env.test.localã.env.production.local-ç°å¢ã«å¿ããããŒã«ã«æ§æã ããŒãžã§ã³ç®¡çã·ã¹ãã ã§ã¯ç¡èŠãããŸãã
æ§æã®åªå é äœïŒæ§æãã¡ã€ã«ãååšããªãå Žåãã¹ãããã¯ã¹ããããããŸãïŒïŒ
- npm test-.env.test.localãenv.testã.env.localã.env;
- npm run build-.env.production.localãenv.productionã.env.localã.env;
- npm start-.env.development.localãenv.developmentã.env.localã.env
éçºãµãŒããŒã®ããŒããå€æŽãã
ããšãã°ãæ°å¹Žåã«ããŒã«ã«ãã¹ãã®ããŒã9001ã9005ã§èšå®ãããGoogle Authã䜿çšããŠãããããããŒã3000ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããŸããã ãã¡ãããGoogle Authã®èšå®ãå€æŽã§ããŸããããããã®ããŒãã䜿çšããæ¹ãäžè¬çã§ãã
cross-envã䜿çšããŠ
PORT
ç°å¢å€æ°ãè¿œå ããŸãã
"scripts": { "start": "cross-env PORT=9001 react-scripts start" }
ãŸãã¯.env configïŒ
PORT=9001
è¿œå ã®æ§æ
ç°å¢å€æ°ã䜿çšããŠå¯èœãªèšå®ã®ãªã¹ãã¯æ¬¡ã®ãšããã§ãã
å¯å€ | éçº | çç£ | 䜿çšæ³ |
ãããµãŒ | + | - | React Appã®äœæã§ã¯ããã©ã«ãã®ãã©ãŠã¶ãŒãéããŸãããç¹å®ã®ãã©ãŠã¶ãŒãèšå®ããããnoneã«èšå®ããŠãã®æ©èœãç¡å¹ã«ããããšãã§ããŸãã ãŸããdevãµãŒããŒãèµ·åãããã³ã«å®è¡ãããNode.JSã¹ã¯ãªãããæãããšãã§ããŸãã |
ãã¹ã | + | - | ããã©ã«ãã¯localhostã§ãã |
枯 | + | - | ããã©ã«ãã¯3000ã§ããããžãŒç¶æ ã®å ŽåãCreat Reactã¢ããªã¯ã次ã«äœ¿çšå¯èœãªããŒãã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã«æ±ããŸãã ãŸãã¯ãç¹å®ã®ããŒããæå®ã§ããŸãã |
Https | + | - | trueã«èšå®ãããšãããŒã«ã«devãµãŒããŒãhttpsã¢ãŒãã§èµ·åãããŸãã |
PUBLIC_URL | - | + | éåžžãCreate React Appã¯ãã¢ããªã±ãŒã·ã§ã³ãWebãµãŒããŒã®ã«ãŒãã«ããããšããŸãã¯package.jsonïŒhomepageïŒã§ãã¹ãå®çŸ©ãããŠããããšãæ³å®ããŠããŸãã ãã¹ãŠã®ã¢ã»ããã®ãªã³ã¯ããªãŒããŒã©ã€ãã§ããŸãã ããã¯ãCDNã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããã¹ãããŠããå Žåã«äŸ¿å©ã§ãã |
Ci | + | + | trueã«èšå®ãããŠããå ŽåãCreate React Appã¯èŠåããšã©ãŒãšããŠåŠçããŸãã -watchãã©ã¡ãŒã¿ãŒãªãã§ãã¹ããå®è¡ããŸãã |
Webpackæ§æã®ç·šéïŒãã©ã°ã€ã³ã®è¿œå ãšãšã³ããªãã€ã³ãã®å€æŽ
äŸãšããŠãå¿ èŠãªãšãã«2ã€ã®ç¶æ³ã瀺ããŸãã
- Webpack Offline Pluginãè¿œå ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®1ã€ã®ã³ã³ããŒãã³ãã®ã¿ã§ãã«ãããŸãã
äžèŠãã€ãžã§ã¯ããªãã§ã¯äœãæ©èœããªãããã§ãã ããããæ¹æ³ããããŸãã å ¬åŒã«ã¯ãµããŒããããŠããããæ°ããããŒãžã§ã³ã§ã¯åäœããªãå¯èœæ§ãããããã䜿çšããããšã¯ãå§ãããŸããã
npm-scripts build:custom
è¿œå
npm-scripts build:custom
ïŒ
"scripts": { "build:custom": "node scripts/customBuild.js" }
次ã«ã
scripts/customBuild.js
äœæããŸãã
const webpack = require('react-scripts/node_modules/webpack'); const craWebpackConfig = require('react-scripts/config/webpack.config.prod'); const OfflinePlugin = require('offline-plugin'); const config = { ...craWebpackConfig, plugins: [ ...craWebpackConfig.plugins, new OfflinePlugin() ] }; webpack(config).run(function(err, stats) { if (err !== null) { console.log('done'); } else { console.log(err); } });
ãã®å ŽåãWebpackæ§æã®ã¿ãå±éãããreact-scriptsãã«ãã¯å±éãããŸããã çŸãããã°ãçŸåšãšä»¥åã®ãã«ãã®ãµã€ãºã®æ¯èŒããã®ä»ã®æ©èœã¯ãããŸããã
éæšæºã®ããŒããŒïŒyamlãmarkdownãdsvããŒããŒãªã©ïŒãšè¿œå ã®ãã©ã°ã€ã³ã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ãããã«è€éã«ãªããŸãã ãŸããå Žåã«ãã£ãŠã¯ãæ°ããWebpackãªãªãŒã¹ã«ã¢ããã°ã¬ãŒãããããšããã§ããŸããã
ã ãããããç§ã¯Webpackã®éåžžã®css-loaderãã奜ãã§ã¯ãªãã®ã§ãã ç§ã¯åžžã«jsãŸãã¯jsonã¢ãžã¥ãŒã«ã®ã¿ãæ¥ç¶ããããšããŸãã CSSãã¡ã€ã«ã¯ãwebpackå ¥åãã£ãŒã«ãã®æ§æã«é©ããŠããŸãã requireé¢æ°ã䜿çšããŠããããæ¥ç¶ããªãããã«ããŸãã ããã«ãããã¢ããªã±ãŒã·ã§ã³ã¯å¯èœãªéãé»æµã³ã¬ã¯ã¿ãŒã«äŸåããŸãã
Babelã®ããªã»ãããšãã©ã°ã€ã³
Create Reactã¢ããªã¯ããŸã babel configæ¡åŒµæ©èœããµããŒãããŠããŸããã ãããã£ãŠã ãã³ã¬ãŒã¿ããµããŒããããŠããŸãã ã
Pull RequestïŒã«ã¹ã¿ã babelæ§æã®ãµããŒãã®è¿œå ïŒ1357ãè¡ããŸãã ã ãããããã§ã«éããããŠãããReact Appã®äœæããŒã ã«å®å šã«åæããŸããå€ãã®èšå®ã§ã¢ããªã±ãŒã·ã§ã³ãè©°ãŸãããªãã§ãã ããã
ãã³ã¬ãŒã¿ãŒã¯ç©äºãç°¡åã«ããã ãã§ãªãããã³ã¬ãŒã¿ãŒãªãã§ãå®è¡ã§ããŸãããã³ã¬ãŒã¿ãŒã¯ã¹ããŒãž3ã«å ¥ããšããã«ãµããŒããããŸãã
åå¿ã¹ã¯ãªãã
ã»ãšãã©èª°ãç¥ããªãæ©èœã å ¬åŒã®githubã¹ã¬ããã§ããå°ãæ å ±ãèŠã€ããããšãã§ããŸã-ãªãžã§ã¯ãã¹ã¯ãªããã®ãã©ãŒã¯ãæåºãââã代ãããšããŠç¶æããããã¥ã¡ã³ãã ïŒ682
Reactã¹ã¯ãªãã -䜿çšããããã¹ãŠã®ã¹ã¯ãªããïŒéå§/ãã¹ã/ãã«ãïŒããã³äœ¿çšããããã¹ãŠã®ããŒã«ã®æ§æãå®è£ ãããŠããããã±ãŒãžã
ã€ãŸãããã©ãŒã¯ããŠçŸåšã®ããŒãžã§ã³ãšåæããå¿ èŠãªæ©èœãè¿œå ã§ããŸãã
create-react-app my-app --scripts-version my-super-react-scripts,
my-super-react-scripts
ã¯ãreact-scriptsã®ããŒãžã§ã³ã§ãã
ããšãã°ããã³ã¬ãŒã¿ãbabel-preset-stage-0ãLESS / SASSãCSSã¢ãžã¥ãŒã«ããµããŒãããcustom-react-scriptããããŸãïŒè©³çŽ°ã«ã€ããŠã¯ãã ã€ãžã§ã¯ãããã«create-react-appãæ§æãã ããåç §ïŒã
çŽ æŽãããCreate Reactã¢ããª
Awesome Create React App-èå³æ·±ãçŽ æã®éžæãæåŸ ãããæ©èœãFAQã æ¢åã®åå¿ã¹ã¯ãªããããŒãžã§ã³ã®ãªã¹ããæäŸãããŸãã
ããŒãžã§ã³0.10.0ã§æåŸ ãããæ©èœã®ãªã¹ã
ã©ã³ã¿ã€ã ãšã©ãŒãªãŒããŒã¬ã€ïŒ1101
æªåŠçã®äŸå€ãããå Žåããšã©ãŒãã€ã¢ãã°ã衚瀺ãããŸããããã¯ã以åã«è¿œå ãããæ©èœ-æ§æãšã©ãŒãªãŒããŒã¬ã€ã«éåžžã«äŒŒãŠããŸãã ãšã©ãŒã¡ãã»ãŒãžãã³ãŒã«ã¹ã¿ãã¯ããšã©ãŒãçºçããã³ãŒãè¡ã衚瀺ãããŸãã Escapeãã¯ãªãã¯ãããšããã€ã¢ãã°ãé衚瀺ã«ã§ããŸãã 以åã®ããã«ããšã©ãŒã¯ã³ã³ãœãŒã«ã«è€è£œãããŸãã
webpack v2ïŒ1291ãžã®ã¢ããã°ã¬ãŒã
ããã§ãCreate Reactã¢ããªã®ãã¹ãŠã®ãŠãŒã¶ãŒã¯ãWebpack 1ããWebpack 2ãžã®ç§»è¡ã¬ã€ããèªã代ããã«ãreact-scriptsïŒ twitter.com / ... status / 819634786734112768 ïŒã®ããŒãžã§ã³ãæŽæ°ããã ãã§æžã¿ãŸãã webpack 2ã®æ°æ©èœãŸãã¯æ°æ©èœ ã
åçã€ã³ããŒãã®ãµããŒãïŒ1538
ã¢ãžã¥ãŒã«ã®éåæããŒãã®ããã®éåžžã«ã¯ãŒã«ãªæ©èœã 以åã¯ããã®ããã«require.ensureã䜿çšãããŠããŸããã
import('./path/to/module).then(module => { // module.default });
ã³ãããæã®ããããªèªåãã©ãŒãããçšã«ãªã³ãã¹ããŒãž+ãã¹ããŒãè¿œå ïŒ1759
ã€ã³ããã¯ã¹å ã®ãã¡ã€ã«ã®eslintãèªåçã«èµ·åããåã³ãããã®åã«ããããªãã¡ã€ã«ã䜿çšããŠãã©ãŒãããããŸãã
ãããŸã§ãCreate React Appèªäœã®å éšæ©èœãšããŠã®ã¿å®è£ ãããŠããŸããããçæãããã¢ããªã±ãŒã·ã§ã³ã«è¿œå ãããããšãæ¬åœã«æãã§ããŸãã
ãããŠãä»ã®å€ãã®ã¯ãŒã«ãªæ©èœïŒ
- ãã©ãŠã¶ïŒ1590ã§ããŒãã¹ã¯ãªããããµããŒã -ããŒã«ã«ãµãŒããŒdevã®èµ·åæã«nodejsã¹ã¯ãªãããå®è¡ããæ©èœã
- è€æ°ã®.envæ§æããµããŒãïŒ1344 ;
- public /ïŒ1546ãªã©ã®ãã¡ã€ã«ã®ããŒãžã®åèªã¿èŸŒã¿ãæå¹ã«ããŸã ã
çµãã
ãæ§æã®æ¬ åŠããæ©èœãšããŠæ±ãå¿ èŠãããã決ããŠåé¡ãšããŠæ±ãå¿ èŠã¯ãããŸããã ååšããæ©èœã¯ãã©ã®ã¢ããªã±ãŒã·ã§ã³ã«ãååã§ãã
ã€ãžã§ã¯ãïŒãŸãã¯ç¬ç«ããæ§æïŒãè¡ãããšã«ããããã³ã¬ãŒã¿ãŸãã¯ãã®ä»ã®å°ããªãã®ãè¿œå ããããã«ãçŸåšã®CRAæ©èœïŒããã³æ°ãããªãªãŒã¹ã®æ©èœïŒããã¹ãŠç ç²ã«ããŸãã
Create React Appã®ãã¬ãŒã ã¯ãŒã¯å ã§WebpackãBabelããŸãã¯ãã®ä»ã®ããŒã«ãæ§æãããšãCreate React Appãããè匱ã«ãªããŸãã ãŸããCreate React AppããŒã ã¯ãããŒã«ã®å®ç§ãªæäœãšå®å®æ§ãä¿èšŒã§ããŸããã§ããã ãŸããCreate React Appã«é¢é£ããªãCreate React Appã®åé¡ã®çºçãããªã¬ãŒããŸãã