> learn-starter@0.1.0 build \nextjs-blog
> next build
info - Creating an optimized production build
info - Compiled successfully
info - Collecting page data ...
++++++ Dynamic getStaticPaths { locales: [ 'en', 'zh-CN' ], defaultLocale: 'en' } [
{ locale: 'zh-CN', params: { dynamic: 'dynamic' } },
{ locale: 'zh-CN', params: { dynamic: 'pass' } },
{ locale: 'zh-CN', params: { dynamic: 'sideway' } },
{ locale: 'zh-CN', params: { dynamic: 'more' } }
]
====== getPostSlugs Docs
info - Collecting page data .
====== getPostSlugs Docs\Advanced
====== getPostSlugs Docs\React
++++++[...slug] getStaticPaths { locales: [ 'en', 'zh-CN' ], defaultLocale: 'en' } [{"locale":"zh-CN","params":{"slug":["tutorial-assets"]}},{"locale":"zh-CN","params":{"slug":["tutorial-basic"]}},{"locale":"zh-CN","params":{"slug":["tutorial-config"]}},{"locale":"zh-CN","params":{"slug":["tutorial-custom-page"]}},{"locale":"zh-CN","params":{"slug":["tutorial-layout"]}},{"locale":"zh-CN","params":{"slug":["tutorial-link-route"]}},{"locale":"zh-CN","params":{"slug":["tutorial-start"]}},{"locale":"zh-CN","params":{"slug":["tutorial-styling"]}},{"locale":"zh-CN","params":{"slug":["tutorial-typescript"]}},{"locale":"zh-CN","params":{"slug":["Advanced","i18n"]}},{"locale":"zh-CN","params":{"slug":["Advanced","markdown"]}},{"locale":"zh-CN","params":{"slug":["Advanced","pages"]}},{"locale":"zh-CN","params":{"slug":["Advanced","prerendering"]}},{"locale":"zh-CN","params":{"slug":["Advanced","route"]}},{"locale":"zh-CN","params":{"slug":["React","babel"]}},{"locale":"zh-CN","params":{"slug":["React","createClass"]}},{"locale":"zh-CN","params":{"slug":["React","hello"]}},{"locale":"zh-CN","params":{"slug":["React","list-key-reconciliation"]}},{"locale":"zh-CN","params":{"slug":["React","mainconcepts"]}},{"locale":"zh-CN","params":{"slug":["React","props"]}},{"locale":"zh-CN","params":{"slug":["React","render"]}},{"locale":"zh-CN","params":{"slug":["React","state"]}}]
info - Collecting page data ..
++++++ Optional Catch-all getStaticPaths { locales: [ 'en', 'zh-CN' ], defaultLocale: 'en' } [
{ locale: 'zh-CN', params: { catchopt: [Array] } },
{ locale: 'zh-CN', params: { catchopt: [Array] } },
{ locale: 'zh-CN', params: { catchopt: false } }
]
info - Collecting page data
[ ==] info - Generating static pages (0/45)
------ route normal.tsx {} ServerRouter {
route: '/route/normal',
pathname: '/route/normal',
query: {},
asPath: '/route/normal',
basePath: '',
events: undefined,
isFallback: false,
locale: 'en',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
[ =] info - Generating static pages (0/45)
++++++ Dynamic getStaticProps {
params: { dynamic: 'pass' },
locales: [ 'en', 'zh-CN' ],
locale: 'zh-CN',
defaultLocale: 'en'
}
++++++ Dynamic getStaticProps {
params: { dynamic: 'dynamic' },
locales: [ 'en', 'zh-CN' ],
locale: 'zh-CN',
defaultLocale: 'en'
}
++++++ Dynamic getStaticProps {
params: { dynamic: 'sideway' },
locales: [ 'en', 'zh-CN' ],
locale: 'zh-CN',
defaultLocale: 'en'
}
++++++ Dynamic getStaticProps {
params: { dynamic: 'more' },
locales: [ 'en', 'zh-CN' ],
locale: 'zh-CN',
defaultLocale: 'en'
}
------ route [dynamic].tsx {
data: '{"params":{"dynamic":"pass"},"locales":["en","zh-CN"],"locale":"zh-CN","defaultLocale":"en"}'
} {"dynamic":"pass"} ServerRouter {
route: '/route/[dynamic]',
pathname: '/route/[dynamic]',
query: { dynamic: 'pass' },
asPath: '/route/pass',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
------ route [dynamic].tsx {
data: '{"params":{"dynamic":"dynamic"},"locales":["en","zh-CN"],"locale":"zh-CN","defaultLocale":"en"}'
} {"dynamic":"dynamic"} ServerRouter {
route: '/route/[dynamic]',
pathname: '/route/[dynamic]',
query: { dynamic: 'dynamic' },
asPath: '/route/dynamic',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
------ route [dynamic].tsx {
data: '{"params":{"dynamic":"sideway"},"locales":["en","zh-CN"],"locale":"zh-CN","defaultLocale":"en"}'
} {"dynamic":"sideway"} ServerRouter {
route: '/route/[dynamic]',
pathname: '/route/[dynamic]',
query: { dynamic: 'sideway' },
asPath: '/route/sideway',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
------ route [dynamic].tsx {
data: '{"params":{"dynamic":"more"},"locales":["en","zh-CN"],"locale":"zh-CN","defaultLocale":"en"}'
} {"dynamic":"more"} ServerRouter {
route: '/route/[dynamic]',
pathname: '/route/[dynamic]',
query: { dynamic: 'more' },
asPath: '/route/more',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
[ ] info - Generating static pages (0/45)
++++++[...slug] getStaticProps { slug: [ 'tutorial-assets' ] }
[ =] info - Generating static pages (0/45)
++++++[...slug] getStaticProps { slug: [ 'tutorial-config' ] }
====== getPostBySlug [ 'tutorial-assets' ] \nextjs-blog\Docs\tutorial-assets.md 👉 05 静态资源管理
++++++[...slug] getStaticProps { slug: [ 'tutorial-basic' ] }
[ ==] info - Generating static pages (0/45)
++++++[...slug] getStaticProps { slug: [ 'tutorial-custom-page' ] }
====== getPostBySlug [ 'tutorial-config' ] \nextjs-blog\Docs\tutorial-config.md 👉 09 next.config.js 配置脚本
++++++[...slug] getStaticProps { slug: [ 'tutorial-layout' ] }
Markdown { slug: [ 'tutorial-assets' ] } /tutorial/tutorial-assets
====== getPostBySlug [ 'tutorial-basic' ] \nextjs-blog\Docs\tutorial-basic.md 👉 02 工程基本结构
++++++[...slug] getStaticProps { slug: [ 'tutorial-start' ] }
++++++[...slug] getStaticProps { slug: [ 'tutorial-link-route' ] }
Markdown { slug: [ 'tutorial-config' ] } /tutorial/tutorial-config
Markdown { slug: [ 'tutorial-basic' ] } /tutorial/tutorial-basic
====== getPostBySlug [ 'tutorial-custom-page' ] \nextjs-blog\Docs\tutorial-custom-page.md 👉 03 自定义页面
[ ===] info - Generating static pages (0/45)Markdown { slug: [ 'tutorial-custom-page' ] } /tutorial/tutorial-custom-page
++++++[...slug] getStaticProps { slug: [ 'tutorial-styling' ] }
====== getPostBySlug [ 'tutorial-layout' ] \nextjs-blog\Docs\tutorial-layout.md 👉 06 布局打磨
====== getPostBySlug [ 'tutorial-start' ] \nextjs-blog\Docs\tutorial-start.md 👉 01 Next.js SSR 服务端渲染!
====== getPostBySlug [ 'tutorial-link-route' ] \nextjs-blog\Docs\tutorial-link-route.md 👉 04 路由相关组件 Link & Route
Markdown { slug: [ 'tutorial-start' ] } /tutorial/tutorial-start
Markdown { slug: [ 'tutorial-link-route' ] } /tutorial/tutorial-link-route
====== getPostBySlug [ 'tutorial-styling' ] \nextjs-blog\Docs\tutorial-styling.md ? 07 样式配置建议
Markdown { slug: [ 'tutorial-layout' ] } /tutorial/tutorial-layout
Markdown { slug: [ 'tutorial-styling' ] } /tutorial/tutorial-styling
++++++[...slug] getStaticProps { slug: [ 'Advanced', 'markdown' ] }
++++++[...slug] getStaticProps { slug: [ 'tutorial-typescript' ] }
++++++[...slug] getStaticProps { slug: [ 'Advanced', 'prerendering' ] }
++++++[...slug] getStaticProps { slug: [ 'Advanced', 'pages' ] }
++++++[...slug] getStaticProps { slug: [ 'Advanced', 'i18n' ] }
[====] info - Generating static pages (11/45)
====== getPostBySlug [ 'tutorial-typescript' ] \nextjs-blog\Docs\tutorial-typescript.md 👉 08 Typ
eScript 配置使用
====== getPostBySlug [ 'Advanced', 'markdown' ] \nextjs-blog\Docs\Advanced\markdown.md 👉 14 Markdown 文档处理
====== getPostBySlug [ 'Advanced', 'i18n' ] \nextjs-blog\Docs\Advanced\i18n.md 👉 15 i18n 国际化与本地化
====== getPostBySlug [ 'Advanced', 'pages' ] \nextjs-blog\Docs\Advanced\pages.md 👉 12 页面组件渲染
====== getPostBySlug [ 'Advanced', 'prerendering' ] \nextjs-blog\Docs\Advanced\prerendering.md 👉 13 预渲染与数据依赖
Markdown { slug: [ 'tutorial-typescript' ] } /tutorial/tutorial-typescript
Markdown { slug: [ 'Advanced', 'markdown' ] } /tutorial/Advanced/markdown
Markdown { slug: [ 'Advanced', 'i18n' ] } /tutorial/Advanced/i18n
Markdown { slug: [ 'Advanced', 'pages' ] } /tutorial/Advanced/pages
Markdown { slug: [ 'Advanced', 'prerendering' ] } /tutorial/Advanced/prerendering
++++++[...slug] getStaticProps { slug: [ 'React', 'babel' ] }
++++++[...slug] getStaticProps { slug: [ 'Advanced', 'route' ] }
++++++[...slug] getStaticProps { slug: [ 'React', 'hello' ] }
++++++[...slug] getStaticProps { slug: [ 'React', 'list-key-reconciliation' ] }
====== getPostBySlug [ 'React', 'babel' ] \nextjs-blog\Docs\React\babel.md 👉 A3 JSX & Babel 入门
++++++[...slug] getStaticProps { slug: [ 'React', 'createClass' ] }
[=== ] info - Generating static pages (11/45)
====== getPostBySlug [ 'React', 'hello' ] \nextjs-blog\Docs\React\hello.md 👉 A1 Hello React
====== getPostBySlug [ 'React', 'list-key-reconciliation' ] \nextjs-blog\Docs\React\list-key-reconciliation.md 👉 A8 列表、键值与协调器
Markdown { slug: [ 'React', 'babel' ] } /tutorial/React/babel
====== getPostBySlug [ 'Advanced', 'route' ] \nextjs-blog\Docs\Advanced\route.md 👉 11 路由配置
====== getPostBySlug [ 'React', 'createClass' ] \nextjs-blog\Docs\React\createClass.md 👉 A4 换一种组件创建方式
Markdown { slug: [ 'React', 'hello' ] } /tutorial/React/hello
Markdown { slug: [ 'React', 'list-key-reconciliation' ] } /tutorial/React/list-key-reconciliation
Markdown { slug: [ 'Advanced', 'route' ] } /tutorial/Advanced/route
Markdown { slug: [ 'React', 'createClass' ] } /tutorial/React/createClass
++++++[...slug] getStaticProps { slug: [ 'React', 'mainconcepts' ] }
++++++[...slug] getStaticProps { slug: [ 'React', 'props' ] }
[== ] info - Generating static pages (11/45)
====== getPostBySlug [ 'React', 'mainconcepts' ] \nextjs-blog\Docs\React\mainconcepts.md 👉 A2 基
本概念
++++++[...slug] getStaticProps { slug: [ 'React', 'render' ] }
====== getPostBySlug [ 'React', 'props' ] \nextjs-blog\Docs\React\props.md 👉 A6 组件与属性
Markdown { slug: [ 'React', 'mainconcepts' ] } /tutorial/React/mainconcepts
====== getPostBySlug [ 'React', 'render' ] \nextjs-blog\Docs\React\render.md 👉 A5 触发更新渲染
Markdown { slug: [ 'React', 'props' ] } /tutorial/React/props
[= ] info - Generating static pages (22/45)Markdown { slug: [ 'React', 'render' ] } /tutorial/React/render
++++++ Optional Catch-all getStaticProps {
params: { catchopt: [ 'catch', 'all' ] },
locales: [ 'en', 'zh-CN' ],
locale: 'zh-CN',
defaultLocale: 'en'
}
++++++ Optional Catch-all getStaticProps {
params: {},
locales: [ 'en', 'zh-CN' ],
locale: 'zh-CN',
defaultLocale: 'en'
}
++++++ Optional Catch-all getStaticProps {
params: { catchopt: [ 'catch', 'GitHub' ] },
locales: [ 'en', 'zh-CN' ],
locale: 'zh-CN',
defaultLocale: 'en'
}
------ [[...catchopt]].tsx false {
data: '{"params":{"catchopt":["catch","all"]},"locales":["en","zh-CN"],"locale":"zh-CN","defaultLocale":"en"}'
} ServerRouter {
route: '/route/[[...catchopt]]',
pathname: '/route/[[...catchopt]]',
query: { catchopt: [ 'catch', 'all' ] },
asPath: '/route/catch/all',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
++++++[...slug] getStaticProps { slug: [ 'React', 'state' ] }
------ [[...catchopt]].tsx false {
data: '{"params":{},"locales":["en","zh-CN"],"locale":"zh-CN","defaultLocale":"en"}'
} ServerRouter {
route: '/route/[[...catchopt]]',
pathname: '/route/[[...catchopt]]',
query: {},
asPath: '/route',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
[ ] info - Generating static pages (22/45)------ [[...catchopt]].tsx false {
data: '{"params":{"catchopt":["catch","GitHub"]},"locales":["en","zh-CN"],"locale":"zh-CN","defaultLocale":"en"}'
} ServerRouter {
route: '/route/[[...catchopt]]',
pathname: '/route/[[...catchopt]]',
query: { catchopt: [ 'catch', 'GitHub' ] },
asPath: '/route/catch/GitHub',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
====== getPostBySlug [ 'React', 'state' ] \nextjs-blog\Docs\React\state.md 👉 A7 组件状态与生命周期
Markdown { slug: [ 'React', 'state' ] } /tutorial/React/state
------ route normal.tsx {} ServerRouter {
route: '/route/normal',
pathname: '/route/normal',
query: {},
asPath: '/route/normal',
basePath: '',
events: undefined,
isFallback: false,
locale: 'zh-CN',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
------ route normal.tsx {} ServerRouter {
route: '/route/normal',
pathname: '/route/normal',
query: {},
asPath: '/route/normal',
basePath: '',
events: undefined,
isFallback: false,
locale: 'en',
isReady: false,
locales: [ 'en', 'zh-CN' ],
defaultLocale: 'en',
domainLocales: undefined
}
[= ] info - Generating static pages (33/45)Will component execute getStaticProps? { locales: [ 'en', 'zh-CN' ], locale: 'en', defaultLocale: 'en' }
++++++ Home getStaticProps { locales: [ 'en', 'zh-CN' ], locale: 'en', defaultLocale: 'en' }
Will component execute getStaticProps? { locales: [ 'en', 'zh-CN' ], locale: 'zh-CN', defaultLocale: 'en' }
++++++ Home getStaticProps { locales: [ 'en', 'zh-CN' ], locale: 'zh-CN', defaultLocale: 'en' }
[== ] info - Generating static pages (33/45)
====== getPostSlugs Docs
====== getPostSlugs Docs\Advanced
====== getPostSlugs Docs\React
====== getPosts false Docs
====== getPostBySlug tutorial-assets \nextjs-blog\Docs\tutorial-assets.md 👉 05 静态资源管理
====== getPostBySlug tutorial-basic \nextjs-blog\Docs\tutorial-basic.md 👉 02 工程基本结构
====== getPostBySlug tutorial-config \nextjs-blog\Docs\tutorial-config.md 👉 09 next.config.js 配置脚本
====== getPostBySlug tutorial-custom-page \nextjs-blog\Docs\tutorial-custom-page.md 👉 03 自定义页面
====== getPostBySlug tutorial-layout \nextjs-blog\Docs\tutorial-layout.md 👉 06 布局打磨
====== getPostBySlug tutorial-link-route \nextjs-blog\Docs\tutorial-link-route.md ? 04 路由相关组件 Link & Route
====== getPostBySlug tutorial-start \nextjs-blog\Docs\tutorial-start.md 👉 01 Next.js SSR 服务端渲染!
====== getPostBySlug tutorial-styling \nextjs-blog\Docs\tutorial-styling.md 👉 07 样式配置建议
====== getPostBySlug tutorial-typescript \nextjs-blog\Docs\tutorial-typescript.md ? 08 TypeScript 配置使用
====== getPosts false Docs\Advanced
====== getPostSlugs Docs
====== getPostBySlug i18n \nextjs-blog\Docs\Advanced\i18n.md 👉 15 i18n 国际化与本地化
====== getPostBySlug markdown \nextjs-blog\Docs\Advanced\markdown.md 👉 14 Markdown 文档处理
====== getPostSlugs Docs\Advanced
====== getPostBySlug pages \nextjs-blog\Docs\Advanced\pages.md 👉 12 页面组件渲染
====== getPostSlugs Docs\React
====== getPostBySlug prerendering \nextjs-blog\Docs\Advanced\prerendering.md 👉 13 预渲染与数据依赖
====== getPosts false Docs
====== getPostBySlug route \nextjs-blog\Docs\Advanced\route.md 👉 11 路由配置
====== getPostBySlug tutorial-assets \nextjs-blog\Docs\tutorial-assets.md 👉 05 静态资源管理
====== getPosts false Docs\React
====== getPostBySlug tutorial-basic \nextjs-blog\Docs\tutorial-basic.md 👉 02 工程基本结构
====== getPostBySlug babel \nextjs-blog\Docs\React\babel.md 👉 A3 JSX & Babel 入门
====== getPostBySlug tutorial-config \nextjs-blog\Docs\tutorial-config.md 👉 09 next.config.js 配置脚本
====== getPostBySlug createClass \nextjs-blog\Docs\React\createClass.md 👉 A4 换一种组件创建方式
====== getPostBySlug tutorial-custom-page \nextjs-blog\Docs\tutorial-custom-page.md 👉 03 自定义页面
====== getPostBySlug hello \nextjs-blog\Docs\React\hello.md 👉 A1 Hello React
====== getPostBySlug tutorial-layout \nextjs-blog\Docs\tutorial-layout.md 👉 06 布局打磨
====== getPostBySlug list-key-reconciliation \nextjs-blog\Docs\React\list-key-reconciliation.md 👉 A8 列表、键值与协调器
====== getPostBySlug mainconcepts \nextjs-blog\Docs\React\mainconcepts.md 👉 A2 基本概念
====== getPostBySlug tutorial-link-route \nextjs-blog\Docs\tutorial-link-route.md ? 04 路由相关组件 Link & Route
====== getPostBySlug props \nextjs-blog\Docs\React\props.md 👉 A6 组件与属性
====== getPostBySlug tutorial-start \nextjs-blog\Docs\tutorial-start.md 👉 01 Next.js SSR 服务端渲染!
====== getPostBySlug render \nextjs-blog\Docs\React\render.md 👉 A5 触发更新渲染
====== getPostBySlug tutorial-styling \nextjs-blog\Docs\tutorial-styling.md 👉 07 样式配置建议
====== getPostBySlug state \nextjs-blog\Docs\React\state.md 👉 A7 组件状态与生命周期
====== getPostBySlug tutorial-typescript \nextjs-blog\Docs\tutorial-typescript.md ? 08 TypeScript 配置使用
====== getPosts false Docs\Advanced
====== getPostBySlug i18n \nextjs-blog\Docs\Advanced\i18n.md 👉 15 i18n 国际化与本地化
====== getPostBySlug markdown \nextjs-blog\Docs\Advanced\markdown.md 👉 14 Markdown 文档处理
====== getPostBySlug pages \nextjs-blog\Docs\Advanced\pages.md 👉 12 页面组件渲染
====== getPostBySlug prerendering \nextjs-blog\Docs\Advanced\prerendering.md 👉 13 预渲染与数据依赖
====== getPostBySlug route \nextjs-blog\Docs\Advanced\route.md 👉 11 路由配置
====== getPosts false Docs\React
====== getPostBySlug babel \nextjs-blog\Docs\React\babel.md 👉 A3 JSX & Babel 入门
info - Generating static pages (45/45)
info - Finalizing page optimization .====== getPostBySlug createClass \nextjs-blog\Docs\React\createClass.md 👉 A4 换一种组件创建方式
info - Finalizing page optimization
Page Size First Load JS
┌ ● / 2.39 kB 73.8 kB
├ /_app 0 B 63.6 kB
├ ○ /404 3.46 kB 67 kB
├ ○ /authors/me 2.86 kB 66.4 kB
├ ○ /posts/build 3.51 kB 75 kB
├ ● /posts/posts 1.93 kB 65.5 kB
├ λ /posts/tutorial-assets 3.66 kB 82.9 kB
├ ● /route/[[...catchopt]] 459 B 68.4 kB
├ ├ /zh-CN/route/catch/all
├ ├ /zh-CN/route/catch/GitHub
├ └ /zh-CN/route
├ ● /route/[dynamic] 411 B 68.3 kB
├ ├ /zh-CN/route/dynamic
├ ├ /zh-CN/route/pass
├ ├ /zh-CN/route/sideway
├ └ /zh-CN/route/more
├ ○ /route/normal 403 B 68.3 kB
└ ● /tutorial/[...slug] 685 B 79.9 kB
├ /zh-CN/tutorial/tutorial-assets
├ /zh-CN/tutorial/tutorial-basic
├ /zh-CN/tutorial/tutorial-config
└ [+19 more paths]
+ First Load JS shared by all 63.6 kB
├ chunks/3b3c9a2ea2010c89a76e8629b038f31464800316.486aa7.js 13.7 kB
├ chunks/framework.abffcf.js 41.8 kB
├ chunks/main.fee731.js 6.76 kB
├ chunks/pages/_app.3be81f.js 586 B
├ chunks/webpack.50bee0.js 751 B
└ css/245a5a5b69ac3d01410a.css 1.03 kB
λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
○ (Static) automatically rendered as static HTML (uses no initial props)
● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)
(ISR) incremental static regeneration (uses revalidate in getStaticProps)
Terminal will be reused by tasks, press any key to close it.