åé¡ïŒåŒã³åºããçç£ãã«ãã®ããã«æé©ånext start
ãŸãã¯äœ¿çšããŠrequire('next')
å
ã®ã«ã¹ã¿ã server.js
ã®ã»ããå
šäœæã¡èŸŒãå¿
èŠnext
ãå«ããäŸåé¢ä¿ãwebpack
ãªã©ãéçºã«ã®ã¿é¢é£ãããã®ã
ããã¯ããã«ãã€ã¡ãŒãžã®èŠ³ç¹ããåé¡ããããæ¬çªãã«ããçæãããšãã®ããŠã³ããŒãæéã®ããã©ãŒãã³ã¹ã ãã§ãªããèµ·åæéã«ãæªåœ±é¿ãäžããå¯èœæ§ããããŸãã _泚ïŒããã¯ãéçºã¢ãŒãã§webpack
ãªã©ã®éãäŸåé¢ä¿ãæ
éã«é
延ããŒããããšããäºå®ã«ãã£ãŠè»œæžãããŸãã_
ããã©ãŒãã³ã¹ãéèŠãã_ã³ãŒã«ãã¹ã¿ãŒãæé_ã«ææãªäººïŒäŸïŒhttpsïŒ//twitter.com/rauchg/status/990667331205447680ãåç
§ïŒã«ã¯ã next-server
ããã±ãŒãžãå°å
¥ã§ããŸãã
require('next')
ãããã¹ãŠã®éçºæèšå®ãå·®ãåŒãããã®ãšåãæ©èœã«å ããŠãããŒããéããŠæ£åžžãªã·ã£ããããŠã³ãå®è¡ã§ããéåžžã«å°ããªnext-server
CLIãåããŠããŸãã
æé©åãã察象ïŒ
next-server
äŸåé¢ä¿ã»ããã®åèšã¯ã§ããã ãå°ããããå¿
èŠãããããã«ã examples/
ã§next-server
ãpkg
ãšçµã¿åãããŠäœ¿çšââããŠãNext.jsã¢ããªã±ãŒã·ã§ã³ãèªå·±å®çµåã®ELFãã€ããªãšããŠãšã¯ã¹ããŒãããæ¹æ³ã®äŸãæäŸããå¿
èŠããããŸãã
ããã³ããšã³ãã®Now2.0ã§èŠãããã³ãŒã«ãã¹ã¿ãŒãæéã¯1.5ç§ã§ãç»åãµã€ãºã¯80mbIIRCã§ãã
NodeãV8ããŸãã¯ã³ãŒã«ãè©äŸ¡ã«ããªãã®æéããããäŸåé¢ä¿ïŒ react
ãreact-dom
ïŒãå€æŽããã«ã 1ã«ããªãè¿ã¥ããããšãã§ããã¯ãã§ãã
ãããŒãããã¯çŽ æŽãããã§ãïŒ ïŒo
ãããŒ...ããã¯çŽ æŽãããã§ãã
next-server
ã«é¢ããããã€ãã®è³ªåã
next-routes
ã§æ§æã§ããŸããïŒ@ Nishchit14ãã«ããµã€ãºãæããããšããŠããå Žåã¯ã express
è¿œå ããŸããã
next-routes
ã¯ãŸã åé¡ãªãåäœãããšç¢ºä¿¡ããŠããŸãã
ãããã£ãŠãããã§è©±ããŠããã®ã¯ãæ¢åã®ãµãŒããŒãç¬èªã®ããã±ãŒãžã«æœåºããããšã§ãã ãããã£ãŠã以åãšåãããã«æ©èœããŸãããnextãã€ã³ããŒããã代ããã«ãnext-serverãã€ã³ããŒãããŸãã
ããã¯ãããïŒ ç§ãšç§ãç¥ã£ãŠããä»ã®äººã ã¯ãã¹ã«ã³ãžãŠã ã䜿çšããŠïŒ
1ïŒããã±ãŒãžãµã€ãºã Lambdaã«ã¯50MBã®ããŒãå¶éããããå«ãŸããŠãããã¹ãŠã®éçºããŒã«ã§ç°¡åã«è¿ã¥ããããšãã§ããŸãã
2ïŒã³ãŒã«ãã¹ã¿ãŒãã Lambdaã¯ãã€ã§ãããå€ãã®ãµãŒããŒãèµ·åããããšã決å®ã§ãããããè¿ éãªèµ·åãè¡ãããšã¯éåžžã«éèŠã§ãã æ¢åã®ãµãŒããŒãæ倧4æé皌åãããããã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«å šäœãéããŠã³ãŒã«ãã¹ã¿ãŒããéèŠã«ãªããŸãã
ãã®ã€ãã·ã¢ãããèŠãŠãšãŠããããããå©ããŠãããŠããããã§ãïŒ
ããã¯çŽ æŽãããã¢ã€ãã¢ã§ããNuxt.jsã§ãåãã§ãã nuxt start
-> nuxt-start
ãå®è¡ããããã«å¿
èŠãªã³ãã³ããªã®ã§ã nuxt-start
ãšåŒã³ãŸãã
ããã«å¯æ¥ã«åŸãã å¯èœã§ããããäœã®ããã®ããŒã¿ãã€ã³ããšããŠwww.bustle.com <1ç§ã³ãŒã«ãã¹ã¿ãŒããšAWSã©ã ãã®SSRã®preactã¢ããªã§ãã ãããã€ãããæ¬çªzipãã¡ã€ã«å šäœã¯166kbã§ãã ããããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãšã©ã€ãã©ãªã®ã³ãŒãã§ãã Webpackã¯ãã³ãã«ã«äœ¿çšãããŸãã
@southpolesteveãå ±æããŠããã ãããããšãããããŸãã ããã¯ãšãŠãå°è±¡çã§ãã #goals
ãŠãŒã¶ãŒã±ãŒã¹ã¯micro
ãšmicro-dev
ã«éåžžã«ãã䌌ãŠããŸãã
åãåœåæ³ã䜿çšããŠã¿ãŸãããïŒ next
ããã³next-dev
ç§ã¯ãã®äŸã䜿çšããŠnext.jsãšãµãŒããŒã¬ã¹ããããåããŠãããä»ããå°ããªãã«ããå®è¡ããæ¹æ³ããããã©ããèå³ããããŸãã æ¬çªç°å¢ã§ã¯çµ¶å¯Ÿã«å¿ èŠã§ã¯ãªãããµãŒããŒã¬ã¹ãrepack-zipãªã©ã®ããã±ãŒãžã£ãŒã®æ§æãã¡ã€ã«ã§é€å€ã§ããnode_modulesã®ãªã¹ãã¯ãããŸããïŒ
@Enalmadaç§ã¯material-ui
ã§ããèŠæš¡ã®ç¹ã§ã¯ããªã倧ããªã¢ããªããããŸãããLambdaã«ã¢ããããŒããããã«ãzipã¯çŽ45MBã§ãã ã©ããªãµã€ãºããæ¢ãã§ããïŒ
@albinekbäžèšã®166kbã®southpolestevebustle.comã®å¿çã«è§Šçºããããã®åªãããã±ãããå®æãããŸã§ãããã¯ãšããŠdisté€å€ãã¡ã€ã«ã«äœãå ¥ããããç¥ã£ãŠããã°ãã45MBãã®ã©ãã ãã圹ã«ç«ãããç°¡åã«åé€ã§ããã®ã ããããšæããŸãã ã
@albinekbã©ã ãçšã®JSããã³ãã«ããããã«ãwebpackãparcelããŸãã¯rollupã®äœ¿çšãæ€èšããããšã匷ããå§ãããŸãã ãµã€ãºãç¯çŽã§ããŸãããéåžžã®ããŒãèŠæ±ãä»ããŠãã¡ã€ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ããã®ã¯ããªãé ããããèµ·åæéãç¯çŽã§ããŸãã
ZEIT Nowã«ãããã€ããŠããŠãé«éã³ãŒã«ãããŒãã®ããã«ã€ã¡ãŒãžãå°ããä¿ã¡ããå Žåã¯ãPackage Phobiaãªã©ã®ããŒã«ã䜿çšããŠãã€ã³ã¹ããŒã«ããåã«npmäŸåé¢ä¿ã®ãµã€ãºã確èªã§ããŸãïŒãŸãã¯çŸåšã®äŸåé¢ä¿ã®ãµã€ãºã確èªããã ãã§ãïŒãèšæºæãã«ããããïŒã
readmeã«ã¯ãèšæºæãšæŠãã®ã«åœ¹ç«ã€å€ãã®åæ§ã®ããŒã«ããããŸãã ããã§ããããã§ãã¯ããŠãã ããïŒ https ïŒ
ããã¯ã次ã®7ãªãªãŒã¹ã§å¯ŸåŠãããã¯ãã§ã¯ãããŸããã§ãããïŒ :(
ä»zeitã«ãããã€ããŠããŠãé«éã³ãŒã«ãããŒãã®ããã«ã€ã¡ãŒãžãå°ããä¿ã¡ããå Žåã¯ãPackagePhobiaãªã©ã®ããŒã«ã䜿çšã§ããŸãã
ãããŒantdïŒ https ïŒ//packagephobia.now.sh/resultïŒp = antd
@Enalmadaãããããã©ã€ãã©ãªèªäœã§ã¯ãªããantdã®äŸåé¢ä¿ãåå ã§ãã https://packagephobia.now.sh/result?p=%40material-ui%2Fcoreã§ããã調ã¹ãŠã
ããã¯ã次ã®7ãªãªãŒã¹ã§å¯ŸåŠãããã¯ãã§ã¯ãããŸããã§ãããïŒ :(
ãããæ確ã«ããããã«ãNext.js 7ã¯ãµãŒããŒã¬ã¹Next.jsã®åºç€ãç¯ããçŽ5ã€ã®ã«ãŒããåé€ããæ¬çªç°å¢ã«æ¬åœã«å¿ èŠãªã«ãŒãã¯2ã€ã ãã«ããŸããã
誰ããnext.jsãããŒã«ã¢ããã§åäœãããããã«ãªã£ãããšããããŸããïŒ éåžžã«è¿ã¥ããããã«æããŸã... 60mã®distãã¡ã€ã«ã§ããŒã«ã¢ãããå®è¡ãããšããµã€ãºã6mã«æžå°ããŸããã æ®å¿µãªãããdistãã¡ã€ã«ã¯å®éã«ã¯èµ·åããŸãããããã¯ãããŒã«ã¢ããäžã®èŠåã§ããnext.jsã³ãŒãã®åäžã®åŸªç°äŸåé¢ä¿ãåå ã§ãããšæããŸãã 誰ããnext.jsã³ãŒãã®åŸªç°äŸåé¢ä¿ãåé€ããå¯èœæ§ãæ€èšã§ããã°ãç§ãã¡ã¯çãã¯ããã«å°ããªãã«ããšããé«éãªèµ·åã«éåžžã«è¿ããããããŸããã
https://github.com/zeit/next.js/issues/5392
ããã«å¯æ¥ã«åŸãã å¯èœã§ããããäœã®ããã®ããŒã¿ãã€ã³ããšããŠwww.bustle.com <1ç§ã³ãŒã«ãã¹ã¿ãŒããšAWSã©ã ãã®SSRã®preactã¢ããªã§ãã ãããã€ãããæ¬çªzipãã¡ã€ã«å šäœã¯166kbã§ãã ããããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãšã©ã€ãã©ãªã®ã³ãŒãã§ãã Webpackã¯ãã³ãã«ã«äœ¿çšãããŸãã
@southpolesteveã¯ãwebpackãã³ãã«æ§æã®åšãã§äœããå ±æã§ããŸããïŒ
@shaunsæ®å¿µãªãããç§ã¯ããBustleã«ããªãã®ã§ãèŠãããã®ã³ãŒãããããŸããïŒ/
@southpolesteveå¿é ãããŸããïŒ å°ãªããšãwebpackã§ãã®å¯èœæ§ãç¥ã£ãŠãããšããã§ãããã
次ã®ãµãŒããŒã«é¢ãããã¥ãŒã¹ãããã ããŸããïŒ ç§ã¯ä»æåã«ããã€ãã®ã³ããããèŠãŸããã
ã«ããªã¢ã®æã確èªããŠãã ããã
ãã€ãªãªãŒã¹ããäºå®ã§ããïŒ
çŸæç¹ã§ã¯ã¿ã€ã ã©ã€ã³ãå ±æã§ããŸããã
ãã®ããã«ããã®ãšã©ãŒã軜æžããã®ã«åœ¹ç«ã€å¯èœæ§ããããŸãã
https://spectrum.chat/zeit/general/unable-to-import-module-now-launcher-error~2662f0ba-4186-402f-b1db-2e3c43d8689a
çéžããã°ããïŒ5927
@timneutkens next
ãdevDependenciesã«ç§»åãã next-server
ãäŸåé¢ä¿ã«è¿œå ããå¿
èŠããããŸããããããšãbabelãä»ããŠãããèªåçã«å®è¡ããŸããïŒ
https://github.com/zeit/next.js/blob/canary/packages/next/build/babel/plugins/next-to-next-server.ts
@ Skaronator ïŒ5927ã䜿çšããŠå®è£
ããŠããå Žåã¯ã.next/serverless/index.js
å¿
èŠãšãïŒ require('./.next/serverless/index.js')
ïŒããããrender
ã¡ãœãããšåŒã¶ããšãã§ããŸãã
const page = require('./.next/serverless/index.js')
page.render(req, res)
ããã§ããŒãžãã¬ã³ããªã³ã°ãããå¿çãçµäºããŸã
ãããïŒ
ç§ã¯ãããè©ŠããŠããŸãããawslambdaã§åäœãããã®ã«åé¡ããããŸãã 誰ããã³ãã¯ãããŸããïŒ
ã«ã¹ã¿ã ãšã¯ã¹ãã¬ã¹ãµãŒããŒã¯ããå¿ èŠãªãã¯ãã§ãããã¹ã«åºã¥ããŠãµãŒããŒã¬ã¹ãã¡ã€ã«ãå¿ èŠã«ãªãå¯èœæ§ããããŸãð€
ç·šé
ããã¯æ©èœããŠããããã§ããããã«ãã¹ããããæé©åããæ¹æ³ã確èªããã«ã¯ãããã«æ·±ãæãäžããå¿
èŠããããŸãã
const serverless = require("serverless-http");
const http = require('http');
const app = require('./.next/serverless/index.js');
const server = new http.Server((req, res) => app.render(req, res))
app.prepare().then(() => {
const handler = serverless(server, {
binary: binaryMimeTypes
});
return handler(event, context, callback);
});
ãã«ã¹ã¿ã ãµãŒããŒããšããµãŒããŒã¬ã¹ããæ··åããŠããããã§ããAPIã¯å®å
šã«åé¢ãããŠããŸãããµãŒããŒã¬ã¹ã«ã¯æºåãããã®ããªãããã .prepare
ã¡ãœããã¯ãããŸãããããã«ãããŒãžãhtmlã«ã¬ã³ããªã³ã°ããŠã render
ãåŒã³åºããããšãã®å¿çã
const serverless = require("serverless-http");
const http = require('http');
const page = require('./.next/serverless/index.js');
const server = new http.Server((req, res) => page.render(req, res))
const handler = serverless(server, {
binary: binaryMimeTypes
});
handler(event, context, callback);
確ãã«ãäžèšã®ã³ãŒããæ©èœããçç±ã¯ããããŸãããïŒãããããã£ãã·ã¥ã ãã§ããïŒã serverless-http
ãhttp.Server
ããµããŒãããŠããªãããã§ãããããç§ã®ã³ãŒããã³ãŒããæ©èœããŸããevent
ãªããžã§ã¯ãã¯å¿
èŠãªã¬ã³ããªã³ã°req
ãã©ã¡ãŒã¿ã眮ãæããããšãã§ããªãããã page.render(req, res)
è¿ãããšã¯ã§ããŸããã
ãŸããexpress / koa / whateverã¯ããã®æ¬¡ã®æ°æ©èœã®ç®çå
šäœãå£ããŠããŸãããã䜿çšããããããŸãããïŒ serverless-http
ã¯äŸåé¢ä¿ããªãããã䜿çšããŠãåé¡ãããŸããïŒ
ç§ã¯ã¢ã€ãã¢ããããŸããïŒ/
ãã¶ãããã¯ããªããå©ããã§ããã@guillaumebreuxhttps ïŒ//github.com/zeit/now-builders/blob/master/packages/now-node-bridge/bridge.js
@timneutkensã«æè¬ããŸããç§ã¯ããªãã®å©ãã«æè¬ããŸãã
ããããçŸæç¹ã§ãæ©èœããŠããŸããããŸã 次ã®ãšã©ãŒããããŸãïŒ typeError: Parameter "url" must be a string, not undefined
ç§ã¯ãã®ã¹ã¬ãããæ±æããã®ããããŠæãç¶ãã解決çãèŠã€ãããäŸãæžããŸãð
å°ãããããŸããã ãã®ã¹ã¬ããã¯ããµãŒããŒã¬ã¹ã¢ããªãšãå¿ èŠãªãµãŒããŒåŽã®npmããã±ãŒãžããã¹ãŠWebpackãããããªã³ã³ãã€ã«æžã¿ãµãŒããŒã®2ã€ã®ã·ããªãªã«é©çšãããããã§ãã
ãã®ã¹ã¬ããã®æåã®ã³ã¡ã³ãã®gifã¯ãç§ãèå³ãæã£ãŠããåŸè
ã®ã·ããªãªãèæ
®ããŠããããã§ãã next-server
ã䜿çšããŠããããã§ãããããã¯ãã®npmããã±ãŒãžã§ããå Žåãšããã§ãªãå ŽåããããŸãããªããžããªãæ¥ç¶ãããŠããããGoogleãŸãã¯GitHubæ€çŽ¢ã§ãªããžããªãèŠã€ããããšãã§ããŸããã§ããããããŒãžã§ã³ã¿ã°ã®1ã€ã¯8.0.0-canary.7ïŒnextã®ããŒãžã§ã³ã¿ã°ïŒã§ãããããé©åãªããã±ãŒãžã
ç§ããããŸã§ã«æžãããã®ã¯æ£ç¢ºã§ããïŒ ãããããªãããããã«ããªã¢ã«ãããšããŠããç§ããããžã®æ©æã¢ã¯ã»ã¹ãåŸãããšãã§ããæ¹æ³ã¯ãããŸããïŒ
ç§ã®çŸåšã®è§£æ±ºçïŒæãããªçç±ã§ãç§ã¯prodã§äœ¿çšããŠããŸããïŒã¯ã next.config.js
config.externals
ããé¢æ°ãåé€ããããšã§ãã ããããã«
ç§ã¯node_modulesã®200ã¡ã¬ãã€ããã€ã³ã¹ããŒã«ããŠãããç§ã®è²§ãããå°ããªçç£VMäžã§ç§ãæŽæ°ãããã·ã¥ãããã³ã«ã³ã³ãã€ã«ãã2åãè²»ããå¿ èŠããªãããã«äºåã«æ§ç¯ããããµãŒããŒãçç£ããããšãã§ããã®ã倧奜ãã§ãã
*ãã®ãããžã§ã¯ãã¯ããã·ã§ã³ã¯ãªãã£ã«ã«ã§ã¯ãªãããããprodãã¯å€§ãŸãã«äœ¿çšãããŸãã
ããã«å¯æ¥ã«åŸãã å¯èœã§ããããäœã®ããã®ããŒã¿ãã€ã³ããšããŠwww.bustle.com <1ç§ã³ãŒã«ãã¹ã¿ãŒããšAWSã©ã ãã®SSRã®preactã¢ããªã§ãã ãããã€ãããæ¬çªzipãã¡ã€ã«å šäœã¯166kbã§ãã ããããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãšã©ã€ãã©ãªã®ã³ãŒãã§ãã Webpackã¯ãã³ãã«ã«äœ¿çšãããŸãã
Next.js8ãµãŒããŒã¬ã¹ã¿ãŒã²ããã®zipãµã€ãºã¯ããã©ã«ãã§42Kbã§ãð
ãããïŒ ããã楜ãã¿ã«ããŠããŸãïŒ
@dfoverdxãšãŸã£ããåã質åããããŸãã å®è¡ã«å¿ èŠãªãã¹ãŠã®node_modulesãå«ããµãŒããŒãã«ããäœæããããšæããŸãã Expressã§ã«ã¹ã¿ã ãµãŒããŒã䜿çšããŠããã®ã§ããããã®äŸåé¢ä¿ãããã±ãŒãžã«å«ãŸããããšã¯æåŸ ããŠããŸãããããµãŒããŒã«ã_all_äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãïŒreactãnextãaxiosã...ïŒã
ãããããã©ã«ãã§ã¯ãªãã®ãããããŸãããïŒ
ãã¹ãŠã®äŸåé¢ä¿ãããã±ãŒãžåããŠæå°åã§ãããšããµãŒããŒåŽã®ããã©ãŒãã³ã¹ã倧å¹
ã«åäžããã¯ãã§ãããããšããããã§å®å
šã«ééã£ãŠããã®ã§ããããã
次ã®ããã«webpackæ§æã®externals
ã»ã¯ã·ã§ã³ãäžæžããããšãã»ãšãã©ã®äŸåé¢ä¿ãå«ãŸããŸã
module.exports = {
webpack: (config, { dev }) => {
config.externals = [];
return config;
})
};
ãã ããreactãšreact-domã¯ãµãŒããŒã«åŒãç¶ãå¿ èŠã§ãã ããããå«ããæ¹æ³ãããããŸãã...
æ®å¿µãªãããçŸåšã®ãµãŒããŒã¬ã¹ã¢ãŒãã§ã«ã¹ã¿ã ãµãŒããŒãäœæããããšã¯ã§ããŸããã ãŸããéåžžã¢ãŒãã䜿çšããå Žåã¯ãnextãšãã®ãã¹ãŠã®äŸåé¢ä¿ãå«ããå¿ èŠããããŸããããã¯ã.nextã§çæããã_app.jsããããšãã°next / routerã«äŸåããŠããããã§ãã
éãµãŒããŒã¬ã¹ã¢ãŒãã次ã«ãã³ãã«ãããªãã®ã¯ãªãã§ããïŒ
æ®å¿µãªãããçŸåšã®ãµãŒããŒã¬ã¹ã¢ãŒãã§ã«ã¹ã¿ã ãµãŒããŒãäœæããããšã¯ã§ããŸããã ãŸããéåžžã¢ãŒãã䜿çšããå Žåã¯ãnextãšãã®ãã¹ãŠã®äŸåé¢ä¿ãå«ããå¿ èŠããããŸããããã¯ã.nextã§çæããã_app.jsããããšãã°next / routerã«äŸåããŠããããã§ãã
next 8以éãserver.jsã§ãnextãã®ä»£ããã«ãnext-serverããèŠæ±ã§ããããšã«æ³šæããŠãã ããããããè¡ããšãããŒã«ã«éçºäžã«ããããªããŒãã倱ãããã ãã§ãã çè«çã«ã¯ãäžéãµãŒããŒã§CIãã«ããå®è¡ããWebpacké¢é£ã®äŸåé¢ä¿ãæ¬çªã€ã³ã¹ã¿ã³ã¹ã«ã³ããŒããªãæ©èœãæäŸããŸãã ããããç§ãã¡ã®ãããžã§ã¯ãã§ã¯ãŸã è©ŠããŠããŸããã
@ElvenMonkyã¯1幎以æ¥ãã®ãããªãã®ãåŸ ã£ãŠããŸãããããã¥ã¡ã³ããäŸã§ããã«ã€ããŠäœãèŠã€ãããŸããã§ããã
@timneutkensããã確èªããŠ
ãããããªããç§ã¯ãã®ãããªèšå®ãè©ŠããŠãdocs / examplesã®PRãéããããããŸããã
next 8以éãserver.jsã§ãnextãã®ä»£ããã«ãnext-serverããèŠæ±ã§ããããšã«æ³šæããŠãã ããããããè¡ããšãããŒã«ã«éçºäžã«ããããªããŒãã倱ãããã ãã§ãã
æ®å¿µãªãããããã¯æ©èœããŸããã
ãŸãããµãŒããŒã¿ãŒã²ããã§ãµãŒããŒã¬ã¹ãã«ããå®è¡ãããšã次ã®ã¡ãã»ãŒãžã衚瀺ãããŠã¢ã¯ãã£ãã«ãããã¯ãããŸãïŒãã¿ãŒã²ããããµãŒããŒã§ãªãå Žåã¯ãµãŒããŒãèµ·åã§ããŸãããhttpsïŒ//err.sh/zeit/next.js/next-start-serverless ã
次ã«ãéåžžã®ãã«ããå®è¡ããããšã«ããå Žåããã«ããã¡ã€ã«ã¯next
ããã±ãŒãžããçŽæ¥next/router
ïŒã ããã¯ã next
ãšwebpack
ãã®ããšã«ããæ¬çªãã«ãã«ããå¿
èŠãããããšãæå³ããŸãã
@ElvenMonky
next 8以éãserver.jsã§ãnextãã®ä»£ããã«ãnext-serverããèŠæ±ã§ããããšã«æ³šæããŠãã ããããããè¡ããšãããŒã«ã«éçºäžã«ããããªããŒãã倱ãããã ãã§ãã
次ã¯ãããã«è¡šç€ºãããŠããããã«ãBabelãã©ã°ã€ã³ãšããŠå
éšçã«å®è¡ããŠããŸãã
https://github.com/zeit/next.js/blob/709850154754278d2fc86b987eebe1b3f0565255/packages/next/build/babel/plugins/commonjs.ts#L5 -L32
@sheerunã¯ãïŒ7011ã§ãè¿°ã¹ãããã«ã next-transpile-modules
ãã©ã°ã€ã³ã䜿çšããŠnext
ã¢ãžã¥ãŒã«ããã©ã³ã¹ãã€ã«ããããšã«ãããæªè§£æ±ºã®next/router
äŸåé¢ä¿ãæé€ã§ããŸãã
ãœãªã¥ãŒã·ã§ã³ã説æããããã«ãã«ã¹ã¿ã ExpressãµãŒããŒã®äŸããã©ãŒã¯ããŠèª¿æŽããŸããïŒ https ïŒ
PSïŒåçã«ãŒããéçã³ã³ãã³ãã®æäŸã¯èšããŸã§ããªããç§ã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯TODOã«ãªã¹ããããŠãããã¹ãŠã®ãã®ãå¿
èŠã§ããããšã«é¢ä¿ãªããç§ã¯ãŸã ïŒ5927ã«æ¬åœã«è奮ããŠããŸãã
幞ããªããšã«ãäžèšã®ãœãªã¥ãŒã·ã§ã³ã¯https://www.npmjs.com/package/next-serverlessã«ã¹ã¿ã ãµãŒããŒã»ããã¢ããã§ããŸãæ©èœããåè¿°ã®å¶éãªãã«AWSLambdaãªã©ã«æ¬¡ã«ãããã€ã§ããããã«ãªããŸãã
next 8以éãserver.jsã§ãnextãã®ä»£ããã«ãnext-serverããèŠæ±ã§ããããšã«æ³šæããŠãã ããããããè¡ããšãããŒã«ã«éçºäžã«ããããªããŒãã倱ãããã ãã§ãã
ç§ã¯ãã®ã¢ããã€ã¹ã䜿çšããŠããŸãããæ®å¿µãªããã©ã³ã¿ã€ã æ§æã䜿çšã§ããŸãããããã«ã¯ã next/config
ãå¿
èŠã§ããã next
ãå¿
èŠã§ãã
çç±ã¯ããããŸãããã require('next/config')
ã次ã®ããŒãžã§ã³8.0.3ã®node_modulesã«next
ã€ã³ã¹ããŒã«ãããŠããªããŠãæ¬çªç°å¢ã§æ©èœããŠããŸãããã次ã®ããŒãžã§ã³8.1.0ã§ã¯æ©èœããŸããã
next / configãnext-runtime-config
ãªã©ã®å¥ã®ããã±ãŒãžã«ç§»åããããšã¯å¯èœã§ããïŒ
ãŸãã¯next-runtime-vars
ïŒnext.config.jsãšã®æ··åãé¿ããããã«configãšããçšèªãé¿ããŸãïŒã
蚱容ã§ããå Žåã¯ãç¥ãããã ãããPRãäœæããŸãã
ããã«ã¡ã¯ãã¿ãªããïŒ ãã®åé¡ã¯Next.js8以éã«å®è£ ãããŠãããNext.js9ã§ãåŒãç¶ãçºçããŠããŸããå®äºããããããéããŸãã ð
ç³ãèš³ãããŸãããããã®åé¡ãšæ··åããŸããïŒ https ïŒ
ã¿ãŒã²ããããã§ãã¯ããŠããŸããïŒããµãŒããŒã¬ã¹ã
åé€ãããã³ã¡ã³ããèŠã
äžéšã®"next/*"
ã¯ã次ã®ããã«"next-server/*"
ã«çœ®ãæããããšãã§ããŸãã
ãããããã®åé¡ã®OPã§èšåãããŠãããã®ãããªæé©åã®ãµããŒãããªããã®ãããã€ããããŸãã
ãµãŒããŒã«ãã€ã³ã©ã€ã³åãããŠããã®ã§äžèŠïŒAKAIKïŒ
ããã«ã¡ã¯ãã¿ãªããïŒ ãã®åé¡ã¯Next.js8以éã«å®è£ ãããŠãããNext.js9ã§ãåŒãç¶ãçºçããŠããŸããå®äºããããããéããŸãã
ããã«ã¡ã¯@ Timer-ãµãŒãã¬ã¹ã¿ãŒã²ãããåç §ããŠããŸããããããšããnextãããnext-serverãã«çœ®ãæããŠããŸããïŒ
nextãnextserverã«çœ®ãæãããšãpackages.jsonã®äŸåé¢ä¿ãæŽæ°ãããªãéããnode_modulesãã©ã«ããŒã®ãµã€ãºã¯å€æŽãããŸããã
ã©ã¡ãã®ã¢ãããŒãã®äŸããããŸããïŒ ãµãŒããŒã¬ã¹ã®å Žåãç§ã®ãŠãŒã¹ã±ãŒã¹ã¯AWSLambdaã«ãããã€ããŠããŸãã
æåã®å·ã§æŠèª¬ããã¢ãããŒãã¯ã serverless
ã¿ãŒã²ããã«é²åãããããããã䜿çšããããšããå§ãããŸãã
@timneutkens serverless
ã¿ãŒã²ããã¯ãåçã«ãŒãã䜿çšããã«ã¹ã¿ã ãµãŒããŒã®åé¡ã解決ããã解決ã§ããŸããã ïŒ5927åçã«çæãããããŒãžãã¢ã»ãããã¬ãã£ãã¯ã¹ãã«ã¹ã¿ã _appã_documentã_errã䜿çšããå¿
èŠãããç§ã®å Žåã®ãããªå€ãã®å®éã®ããžãã¹ã¢ããªã±ãŒã·ã§ã³ã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸãããåºæ¬çã«ãTODOãªã¹ãã«èšèŒãããŠãããã¹ãŠã®ãã®ã§ãã
next-server
ã¯ãwebpackãbabelã®ãããªå¥åŠãªéçºã®ã¿ã®äŸåé¢ä¿ãªãã«ãæ¬çªç°å¢ã«ãããã€ããããã®éšåçãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ãã ããããã¯ãããã§èª¬æããŠããããã€ãã®ããã¯ãšãŠãããŒãã³ã¹ã§è¡ãããšãã§ããŸãã
ç§ã¯ããªãããã®éããç解ããŠãããšããå°è±¡ãåãã @ rauchgã«ãã£ãŠèª¬æãããŠããããã«ããã€ãæåã®åé¡ã«å¯ŸããŠããå ç¢ãªè§£æ±ºçãèŠãããšæã£ãŠã
æãåèã«ãªãã³ã¡ã³ã
ããã³ããšã³ãã®Now2.0ã§èŠãããã³ãŒã«ãã¹ã¿ãŒãæéã¯1.5ç§ã§ãç»åãµã€ãºã¯80mbIIRCã§ãã
NodeãV8ããŸãã¯ã³ãŒã«ãè©äŸ¡ã«ããªãã®æéããããäŸåé¢ä¿ïŒ
react
ãreact-dom
ïŒãå€æŽããã«ã 1ã«ããªãè¿ã¥ããããšãã§ããã¯ãã§ãã