Razzle: рдбреЛрдХрд░ рджреЗрд╡ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдХрд╛рдЪреМрдВрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рджрд┐рд╕ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jaredpalmer/razzle

рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдХреЛрдИ рдореБрдЭреЗ рдереЛрдбрд╝реА рдорджрдж рджреЗ рд╕рдХреЗред рдореИрдВ рдбреЛрдХрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдПрдХ рдбреЛрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдЪрдПрдордЖрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рд▓рдХреНрд╖реНрдп рдмреЗрд╕ рд░реИрдЬрд╝рд▓-рдХреНрд░рд┐рдПрдЯ-рдРрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЕрдзрд┐рдХ рд╣реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдирд╛ dockerfile рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИ:

FROM node:6

WORKDIR /home/node/app

EXPOSE 3000
EXPOSE 3001

CMD ["npm", "start"]

рддреЛ рдореИрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рджреЗрд╡ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░реЛрд╣рд┐рдд рд╣реИ
docker run --name hmr-test -d -p 8080:3000 -p 3001:3001 -v C:\Users\charles\Desktop\docker-hmr-test\ui-service:/home/node/app docker-hmr

рдРрдк рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реИрдЬрд╝рд▓ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЛ рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреИрд╢ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рд╣реА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рд░реИрдЬрд╝рд▓ рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рд░реИрдЬрд╝рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛ рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдбреЙрдХрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬрд╝ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдирд╛ рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдИрд╡реЗрдВрдЯ рдХреЛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдВрдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп-рдЖрд╕рдкрд╛рд╕ рдЬрдм рддрдХ рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рддрдм рддрдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдорддрджрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗред рдЗрд╕рд▓рд┐рдП, рдЕрдкрдбреЗрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЪрдПрдордЖрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ razzle.config.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

       if(config.devServer){
            config.devServer.watchOptions['poll'] = 1000;
            config.devServer.watchOptions['aggregateTimeout'] = 300;
        }

@jaredpalmer рдЕрдЧрд░ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рдлреАрдЪрд░ рд╢рд╛рдЦрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдмрд╕ рдореБрдЭреЗ рдкрддрд╛ рд╣реИред рдЗрд╕ рд╢рд╛рдирджрд╛рд░ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдбреЙрдХрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬрд╝ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдирд╛ рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдИрд╡реЗрдВрдЯ рдХреЛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдВрдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп-рдЖрд╕рдкрд╛рд╕ рдЬрдм рддрдХ рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рддрдм рддрдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдорддрджрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗред рдЗрд╕рд▓рд┐рдП, рдЕрдкрдбреЗрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЪрдПрдордЖрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ razzle.config.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

       if(config.devServer){
            config.devServer.watchOptions['poll'] = 1000;
            config.devServer.watchOptions['aggregateTimeout'] = 300;
        }

@jaredpalmer рдЕрдЧрд░ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рдлреАрдЪрд░ рд╢рд╛рдЦрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдмрд╕ рдореБрдЭреЗ рдкрддрд╛ рд╣реИред рдЗрд╕ рд╢рд╛рдирджрд╛рд░ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@alexjoyner рдкрд╡рд┐рддреНрд░ рдореЛрд▓реАред рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдбрд╝рдХрд╛ рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдПрдХ рдЯрди рдорджрдж рдорд┐рд▓реАред

config рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЙрдЧ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрд╛рддрд╛ рд╣реИред

0|razzle   |
0|razzle   | > [email protected] start /app/razzle/razzle
0|razzle   | > razzle start
0|razzle   |
0|razzle   |  WAIT  Compiling...
0|razzle   |
0|razzle   | тД╣ Compiling Client
0|razzle   | тД╣ я╜вwdsя╜г: Project is running at http://apps.syntapse.co.uk:3001/
0|razzle   | тД╣ я╜вwdsя╜г: webpack output is served from undefined
0|razzle   | тД╣ я╜вwdsя╜г: Content not from webpack is served from /app/razzle/razzle
0|razzle   | тД╣ я╜вwdsя╜г: 404s will fallback to /index.html

0|razzle  | тЬФ Client: Compiled successfully in 8.28s
0|razzle  | тД╣ Compiling Server
0|razzle  | тЬФ Server: Compiled successfully in 765.85ms
0|razzle  | Warning: Please use `require("react-router-dom").Route` instead of `require("react-router-dom/Rout0|razzle  | Warning: Please use `require("react-router-dom").Switch` instead of `require("react-router-dom/Swi0|razzle  | тЬЕ  Server-side HMR Enabled!
0|razzle  | ЁЯЪА started
0|razzle  | тД╣ Compiling Server
0|razzle  | тЬФ Server: Compiled successfully in 88.70ms
0|razzle  | ЁЯФБ  HMR Reloading `./server`...
0|razzle  | [HMR] Updated modules:
0|razzle  | [HMR]  - ./src/Home.js
0|razzle  | [HMR]  - ./src/App.js
0|razzle  | [HMR]  - ./src/server.js
0|razzle  | [HMR] Update applied.
0|razzle  | тД╣ Compiling Client
0|razzle  | тЬФ Client: Compiled successfully in 73.55ms
0|razzle  | тД╣ Compiling Client
0|razzle  | тЬФ Client: Compiled successfully in 228.31ms
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

panbanda picture panbanda  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kkarkos picture kkarkos  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sebmor picture sebmor  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mhuggins picture mhuggins  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

howardya picture howardya  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ