gatsby 3.14.0-drupal-next.63 → 3.14.0-drupal-next.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap/requires-writer.js +1 -1
- package/dist/bootstrap/requires-writer.js.map +1 -1
- package/dist/commands/build-html.js +2 -3
- package/dist/commands/build-html.js.map +1 -1
- package/dist/commands/build-utils.js +1 -1
- package/dist/commands/build-utils.js.map +1 -1
- package/dist/commands/build.js +7 -7
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/serve.js +1 -1
- package/dist/commands/serve.js.map +1 -1
- package/dist/query/query-runner.js +1 -1
- package/dist/query/query-runner.js.map +1 -1
- package/dist/redux/actions/public.js +1 -1
- package/dist/redux/actions/public.js.map +1 -1
- package/dist/schema/graphql-engine/entry.js +1 -1
- package/dist/schema/graphql-engine/entry.js.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/services/initialize.js +1 -1
- package/dist/services/initialize.js.map +1 -1
- package/dist/utils/babel-loader-helpers.js +1 -1
- package/dist/utils/babel-loader-helpers.js.map +1 -1
- package/dist/utils/flags.js +2 -2
- package/dist/utils/flags.js.map +1 -1
- package/dist/utils/page-data.js +1 -1
- package/dist/utils/page-data.js.map +1 -1
- package/dist/utils/start-server.js +1 -1
- package/dist/utils/start-server.js.map +1 -1
- package/dist/utils/webpack/force-css-hmr-for-edge-cases.js +2 -3
- package/dist/utils/webpack/force-css-hmr-for-edge-cases.js.map +1 -1
- package/dist/utils/webpack.config.js +2 -2
- package/dist/utils/webpack.config.js.map +1 -1
- package/dist/utils/websocket-manager.js +147 -140
- package/dist/utils/websocket-manager.js.map +1 -1
- package/dist/utils/worker/child/queries.js.map +1 -1
- package/package.json +2 -2
- package/dist/internal-plugins/prod-404-500/gatsby-node.js +0 -51
- package/dist/internal-plugins/prod-404-500/gatsby-node.js.map +0 -1
- package/dist/internal-plugins/prod-404-500/index.js +0 -3
- package/dist/internal-plugins/prod-404-500/index.js.map +0 -1
- package/dist/query/graphql-errors-codeframe.js +0 -23
- package/dist/query/graphql-errors-codeframe.js.map +0 -1
- package/dist/utils/clear-require-cache.js +0 -32
- package/dist/utils/clear-require-cache.js.map +0 -1
- package/dist/utils/engine-context.js +0 -25
- package/dist/utils/engine-context.js.map +0 -1
- package/dist/utils/normalize-path.js +0 -15
- package/dist/utils/normalize-path.js.map +0 -1
- package/dist/utils/page-mode.js +0 -102
- package/dist/utils/page-mode.js.map +0 -1
- package/dist/utils/report-once.js +0 -25
- package/dist/utils/report-once.js.map +0 -1
- package/dist/utils/validate-engines/child.js +0 -87
- package/dist/utils/validate-engines/child.js.map +0 -1
- package/dist/utils/validate-engines/index.js +0 -25
- package/dist/utils/validate-engines/index.js.map +0 -1
- package/dist/utils/webpack/bundle.js +0 -47
- package/dist/utils/webpack/bundle.js.map +0 -1
- package/dist/utils/webpack/plugins/cache-folder-resolver.js +0 -48
- package/dist/utils/webpack/plugins/cache-folder-resolver.js.map +0 -1
- package/dist/utils/webpack/plugins/corejs-resolver.js +0 -74
- package/dist/utils/webpack/plugins/corejs-resolver.js.map +0 -1
- package/dist/utils/webpack/plugins/force-css-hmr-for-edge-cases.js +0 -104
- package/dist/utils/webpack/plugins/force-css-hmr-for-edge-cases.js.map +0 -1
- package/dist/utils/webpack/plugins/static-query-mapper.js +0 -218
- package/dist/utils/webpack/plugins/static-query-mapper.js.map +0 -1
- package/dist/utils/webpack/plugins/webpack-logging.js +0 -62
- package/dist/utils/webpack/plugins/webpack-logging.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bootstrap/requires-writer.ts"],"names":["paramRe","SEGMENT_POINTS","STATIC_POINTS","DYNAMIC_POINTS","SPLAT_PENALTY","ROOT_POINTS","isRootSegment","segment","isDynamic","test","isSplat","segmentize","uri","replace","split","rankRoute","path","reduce","score","lastHash","resetLastHash","pickComponentFields","page","_","pick","getComponents","pages","map","uniqBy","c","componentChunkName","orderBy","value","getMatchPaths","createMatchPathEntry","index","matchPath","undefined","reporter","panic","matchPathPages","forEach","mode","push","length","newMatches","isInsideMatchPath","find","pageWithMatchPath","sort","a","b","order","localeCompare","createHash","matchPaths","components","cleanedSSRVisitedPageComponents","crypto","update","JSON","stringify","digest","writeAll","state","program","values","process","env","GATSBY_EXPERIMENTAL_DEV_SSR","ssrVisitedPageComponents","visitedPages","get","filter","some","s","newHash","lazySyncRequires","component","join","syncRequires","asyncRequires","relativeComponentPath","relative","writeAndMove","virtualFilePath","file","data","destination","directory","tmp","Date","now","fs","writeFile","then","move","overwrite","Promise","all","debouncedWriteAll","debounce","activity","activityTimer","id","start","store","getState","end","leading","listenerStarted","startListener","emitter","on","pendingActivity"],"mappings":"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","sourcesContent":["import _ from \"lodash\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport crypto from \"crypto\"\nimport { slash } from \"gatsby-core-utils\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { match } from \"@gatsbyjs/reach-router/lib/utils\"\nimport { joinPath } from \"gatsby-core-utils\"\nimport { store, emitter } from \"../redux/\"\nimport { IGatsbyState, IGatsbyPage } from \"../redux/types\"\nimport {\n writeModule,\n getAbsolutePathForVirtualModule,\n} from \"../utils/gatsby-webpack-virtual-modules\"\n\ninterface IGatsbyPageComponent {\n component: string\n componentChunkName: string\n}\n\ninterface IGatsbyPageMatchPath {\n path: string\n matchPath: string | undefined\n}\n\n// path ranking algorithm copied (with small adjustments) from `@reach/router` (internal util, not exported from the package)\n// https://github.com/reach/router/blob/28a79e7fc3a3487cb3304210dc3501efb8a50eba/src/lib/utils.js#L216-L254\nconst paramRe = /^:(.+)/\n\nconst SEGMENT_POINTS = 4\nconst STATIC_POINTS = 3\nconst DYNAMIC_POINTS = 2\nconst SPLAT_PENALTY = 1\nconst ROOT_POINTS = 1\n\nconst isRootSegment = (segment: string): boolean => segment === ``\nconst isDynamic = (segment: string): boolean => paramRe.test(segment)\nconst isSplat = (segment: string): boolean => segment === `*`\n\nconst segmentize = (uri: string): Array<string> =>\n uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, ``)\n .split(`/`)\n\nconst rankRoute = (path: string): number =>\n segmentize(path).reduce((score, segment) => {\n score += SEGMENT_POINTS\n if (isRootSegment(segment)) score += ROOT_POINTS\n else if (isDynamic(segment)) score += DYNAMIC_POINTS\n else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY\n else score += STATIC_POINTS\n return score\n }, 0)\n// end of copied `@reach/router` internals\n\nlet lastHash: string | null = null\n\nexport const resetLastHash = (): void => {\n lastHash = null\n}\n\nconst pickComponentFields = (page: IGatsbyPage): IGatsbyPageComponent =>\n _.pick(page, [`component`, `componentChunkName`])\n\nexport const getComponents = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageComponent> =>\n _(pages)\n .map(pickComponentFields)\n .uniqBy(c => c.componentChunkName)\n .orderBy(c => c.componentChunkName)\n .value()\n\n/**\n * Get all dynamic routes and sort them by most specific at the top\n * code is based on @reach/router match utility (https://github.com/reach/router/blob/152aff2352bc62cefc932e1b536de9efde6b64a5/src/lib/utils.js#L224-L254)\n */\nconst getMatchPaths = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageMatchPath> => {\n interface IMatchPathEntry extends IGatsbyPage {\n index: number\n score: number\n matchPath: string\n }\n\n const createMatchPathEntry = (\n page: IGatsbyPage,\n index: number\n ): IMatchPathEntry => {\n const { matchPath } = page\n\n if (matchPath === undefined) {\n return reporter.panic(\n `Error: matchPath property is undefined for page ${page.path}, should be a string`\n ) as never\n }\n\n return {\n ...page,\n matchPath,\n index,\n score: rankRoute(matchPath),\n }\n }\n\n const matchPathPages: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n if (page.matchPath && page.mode === `SSG`) {\n matchPathPages.push(createMatchPathEntry(page, index))\n }\n } else {\n if (page.matchPath) {\n matchPathPages.push(createMatchPathEntry(page, index))\n }\n }\n })\n\n // Pages can live in matchPaths, to keep them working without doing another network request\n // we save them in matchPath. We use `@reach/router` path ranking to score paths/matchPaths\n // and sort them so more specific paths are before less specific paths.\n // More info in https://github.com/gatsbyjs/gatsby/issues/16097\n // small speedup: don't bother traversing when no matchPaths found.\n if (matchPathPages.length) {\n const newMatches: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n const isInsideMatchPath = !!matchPathPages.find(\n pageWithMatchPath =>\n !page.matchPath && match(pageWithMatchPath.matchPath, page.path)\n )\n\n if (isInsideMatchPath) {\n newMatches.push(\n createMatchPathEntry(\n {\n ...page,\n matchPath: page.path,\n },\n index\n )\n )\n }\n })\n // Add afterwards because the new matches are not relevant for the existing search\n matchPathPages.push(...newMatches)\n }\n\n return matchPathPages\n .sort((a, b) => {\n // The higher the score, the higher the specificity of our matchPath\n const order = b.score - a.score\n if (order !== 0) {\n return order\n }\n\n // if specificity is the same we do lexigraphic comparison of path to ensure\n // deterministic order regardless of order pages where created\n return a.matchPath.localeCompare(b.matchPath)\n })\n .map(({ path, matchPath }) => {\n return { path, matchPath }\n })\n}\n\nconst createHash = (\n matchPaths: Array<IGatsbyPageMatchPath>,\n components: Array<IGatsbyPageComponent>,\n cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent>\n): string =>\n crypto\n .createHash(`md5`)\n .update(\n JSON.stringify({\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents,\n })\n )\n .digest(`hex`)\n\n// Write out pages information.\nexport const writeAll = async (state: IGatsbyState): Promise<boolean> => {\n const { program } = state\n const pages = [...state.pages.values()]\n const matchPaths = getMatchPaths(pages)\n const components = getComponents(pages)\n let cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent> = []\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n const ssrVisitedPageComponents = [\n ...(state.visitedPages.get(`server`)?.values() || []),\n ]\n\n // Remove any page components that no longer exist.\n cleanedSSRVisitedPageComponents = components.filter(c =>\n ssrVisitedPageComponents.some(s => s === c.componentChunkName)\n )\n }\n\n const newHash = createHash(\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents\n )\n\n if (newHash === lastHash) {\n // Nothing changed. No need to rewrite files\n return false\n }\n\n lastHash = newHash\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n // Create file with sync requires of visited page components files.\n let lazySyncRequires = `\n // prefer default export if available\n const preferDefault = m => (m && m.default) || m\n \\n\\n`\n lazySyncRequires += `exports.ssrComponents = {\\n${cleanedSSRVisitedPageComponents\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": preferDefault(require(\"${joinPath(\n c.component\n )}\"))`\n )\n .join(`,\\n`)}\n }\\n\\n`\n\n writeModule(`$virtual/ssr-sync-requires`, lazySyncRequires)\n }\n\n // Create file with sync requires of components/json files.\n let syncRequires = `\n// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\\n\\n`\n syncRequires += `exports.components = {\\n${components\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": preferDefault(require(\"${joinPath(\n c.component\n )}\"))`\n )\n .join(`,\\n`)}\n}\\n\\n`\n\n // Create file with async requires of components/json files.\n let asyncRequires = `// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\\n`\n asyncRequires += `exports.components = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}\" /* webpackChunkName: \"${c.componentChunkName}\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n`\n\n const writeAndMove = (\n virtualFilePath: string,\n file: string,\n data: string\n ): Promise<void> => {\n writeModule(virtualFilePath, data)\n\n // files in .cache are not used anymore as part of webpack builds, but\n // still can be used by other tools (for example `gatsby serve` reads\n // `match-paths.json` to setup routing)\n const destination = joinPath(program.directory, `.cache`, file)\n const tmp = `${destination}.${Date.now()}`\n return fs\n .writeFile(tmp, data)\n .then(() => fs.move(tmp, destination, { overwrite: true }))\n }\n\n await Promise.all([\n writeAndMove(`$virtual/sync-requires.js`, `sync-requires.js`, syncRequires),\n writeAndMove(\n `$virtual/async-requires.js`,\n `async-requires.js`,\n asyncRequires\n ),\n writeAndMove(\n `$virtual/match-paths.json`,\n `match-paths.json`,\n JSON.stringify(matchPaths, null, 4)\n ),\n ])\n\n return true\n}\n\nconst debouncedWriteAll = _.debounce(\n async (): Promise<void> => {\n const activity = reporter.activityTimer(`write out requires`, {\n id: `requires-writer`,\n })\n activity.start()\n await writeAll(store.getState())\n activity.end()\n },\n 500,\n {\n // using \"leading\" can cause double `writeAll` call - particularly\n // when refreshing data using `/__refresh` hook.\n leading: false,\n }\n)\n\n/**\n * Start listening to CREATE/DELETE_PAGE events so we can rewrite\n * files as required\n */\nlet listenerStarted = false\nexport const startListener = (): void => {\n // Only start the listener once.\n if (listenerStarted) {\n return\n }\n listenerStarted = true\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n /**\n * Start listening to CREATE_SERVER_VISITED_PAGE events so we can rewrite\n * files as required\n */\n emitter.on(`CREATE_SERVER_VISITED_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n }\n\n emitter.on(`CREATE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`CREATE_PAGE_END`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE_BY_PATH`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n}\n"],"file":"requires-writer.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/bootstrap/requires-writer.ts"],"names":["paramRe","SEGMENT_POINTS","STATIC_POINTS","DYNAMIC_POINTS","SPLAT_PENALTY","ROOT_POINTS","isRootSegment","segment","isDynamic","test","isSplat","segmentize","uri","replace","split","rankRoute","path","reduce","score","lastHash","resetLastHash","pickComponentFields","page","_","pick","getComponents","pages","map","uniqBy","c","componentChunkName","orderBy","value","getMatchPaths","createMatchPathEntry","index","matchPath","undefined","reporter","panic","matchPathPages","forEach","mode","push","length","newMatches","isInsideMatchPath","find","pageWithMatchPath","sort","a","b","order","localeCompare","createHash","matchPaths","components","cleanedSSRVisitedPageComponents","crypto","update","JSON","stringify","digest","writeAll","state","program","values","process","env","GATSBY_EXPERIMENTAL_DEV_SSR","ssrVisitedPageComponents","visitedPages","get","filter","some","s","newHash","lazySyncRequires","component","join","syncRequires","asyncRequires","relativeComponentPath","relative","writeAndMove","virtualFilePath","file","data","destination","directory","tmp","Date","now","fs","writeFile","then","move","overwrite","Promise","all","debouncedWriteAll","debounce","activity","activityTimer","id","start","store","getState","end","leading","listenerStarted","startListener","emitter","on","pendingActivity"],"mappings":"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","sourcesContent":["import _ from \"lodash\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport crypto from \"crypto\"\nimport { slash } from \"gatsby-core-utils\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { match } from \"@gatsbyjs/reach-router/lib/utils\"\nimport { joinPath } from \"gatsby-core-utils\"\nimport { store, emitter } from \"../redux/\"\nimport { IGatsbyState, IGatsbyPage } from \"../redux/types\"\nimport {\n writeModule,\n getAbsolutePathForVirtualModule,\n} from \"../utils/gatsby-webpack-virtual-modules\"\n\ninterface IGatsbyPageComponent {\n component: string\n componentChunkName: string\n}\n\ninterface IGatsbyPageMatchPath {\n path: string\n matchPath: string | undefined\n}\n\n// path ranking algorithm copied (with small adjustments) from `@reach/router` (internal util, not exported from the package)\n// https://github.com/reach/router/blob/28a79e7fc3a3487cb3304210dc3501efb8a50eba/src/lib/utils.js#L216-L254\nconst paramRe = /^:(.+)/\n\nconst SEGMENT_POINTS = 4\nconst STATIC_POINTS = 3\nconst DYNAMIC_POINTS = 2\nconst SPLAT_PENALTY = 1\nconst ROOT_POINTS = 1\n\nconst isRootSegment = (segment: string): boolean => segment === ``\nconst isDynamic = (segment: string): boolean => paramRe.test(segment)\nconst isSplat = (segment: string): boolean => segment === `*`\n\nconst segmentize = (uri: string): Array<string> =>\n uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, ``)\n .split(`/`)\n\nconst rankRoute = (path: string): number =>\n segmentize(path).reduce((score, segment) => {\n score += SEGMENT_POINTS\n if (isRootSegment(segment)) score += ROOT_POINTS\n else if (isDynamic(segment)) score += DYNAMIC_POINTS\n else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY\n else score += STATIC_POINTS\n return score\n }, 0)\n// end of copied `@reach/router` internals\n\nlet lastHash: string | null = null\n\nexport const resetLastHash = (): void => {\n lastHash = null\n}\n\nconst pickComponentFields = (page: IGatsbyPage): IGatsbyPageComponent =>\n _.pick(page, [`component`, `componentChunkName`])\n\nexport const getComponents = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageComponent> =>\n _(pages)\n .map(pickComponentFields)\n .uniqBy(c => c.componentChunkName)\n .orderBy(c => c.componentChunkName)\n .value()\n\n/**\n * Get all dynamic routes and sort them by most specific at the top\n * code is based on @reach/router match utility (https://github.com/reach/router/blob/152aff2352bc62cefc932e1b536de9efde6b64a5/src/lib/utils.js#L224-L254)\n */\nconst getMatchPaths = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageMatchPath> => {\n interface IMatchPathEntry extends IGatsbyPage {\n index: number\n score: number\n matchPath: string\n }\n\n const createMatchPathEntry = (\n page: IGatsbyPage,\n index: number\n ): IMatchPathEntry => {\n const { matchPath } = page\n\n if (matchPath === undefined) {\n return reporter.panic(\n `Error: matchPath property is undefined for page ${page.path}, should be a string`\n ) as never\n }\n\n return {\n ...page,\n matchPath,\n index,\n score: rankRoute(matchPath),\n }\n }\n\n const matchPathPages: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n if (page.matchPath && page.mode === `SSG`) {\n matchPathPages.push(createMatchPathEntry(page, index))\n }\n } else {\n if (page.matchPath) {\n matchPathPages.push(createMatchPathEntry(page, index))\n }\n }\n })\n\n // Pages can live in matchPaths, to keep them working without doing another network request\n // we save them in matchPath. We use `@reach/router` path ranking to score paths/matchPaths\n // and sort them so more specific paths are before less specific paths.\n // More info in https://github.com/gatsbyjs/gatsby/issues/16097\n // small speedup: don't bother traversing when no matchPaths found.\n if (matchPathPages.length) {\n const newMatches: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n const isInsideMatchPath = !!matchPathPages.find(\n pageWithMatchPath =>\n !page.matchPath && match(pageWithMatchPath.matchPath, page.path)\n )\n\n if (isInsideMatchPath) {\n newMatches.push(\n createMatchPathEntry(\n {\n ...page,\n matchPath: page.path,\n },\n index\n )\n )\n }\n })\n // Add afterwards because the new matches are not relevant for the existing search\n matchPathPages.push(...newMatches)\n }\n\n return matchPathPages\n .sort((a, b) => {\n // The higher the score, the higher the specificity of our matchPath\n const order = b.score - a.score\n if (order !== 0) {\n return order\n }\n\n // if specificity is the same we do lexigraphic comparison of path to ensure\n // deterministic order regardless of order pages where created\n return a.matchPath.localeCompare(b.matchPath)\n })\n .map(({ path, matchPath }) => {\n return { path, matchPath }\n })\n}\n\nconst createHash = (\n matchPaths: Array<IGatsbyPageMatchPath>,\n components: Array<IGatsbyPageComponent>,\n cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent>\n): string =>\n crypto\n .createHash(`md5`)\n .update(\n JSON.stringify({\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents,\n })\n )\n .digest(`hex`)\n\n// Write out pages information.\nexport const writeAll = async (state: IGatsbyState): Promise<boolean> => {\n const { program } = state\n const pages = [...state.pages.values()]\n const matchPaths = getMatchPaths(pages)\n const components = getComponents(pages)\n let cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent> = []\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n const ssrVisitedPageComponents = [\n ...(state.visitedPages.get(`server`)?.values() || []),\n ]\n\n // Remove any page components that no longer exist.\n cleanedSSRVisitedPageComponents = components.filter(c =>\n ssrVisitedPageComponents.some(s => s === c.componentChunkName)\n )\n }\n\n const newHash = createHash(\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents\n )\n\n if (newHash === lastHash) {\n // Nothing changed. No need to rewrite files\n return false\n }\n\n lastHash = newHash\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n // Create file with sync requires of visited page components files.\n let lazySyncRequires = `\n // prefer default export if available\n const preferDefault = m => (m && m.default) || m\n \\n\\n`\n lazySyncRequires += `exports.ssrComponents = {\\n${cleanedSSRVisitedPageComponents\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": preferDefault(require(\"${joinPath(\n c.component\n )}\"))`\n )\n .join(`,\\n`)}\n }\\n\\n`\n\n writeModule(`$virtual/ssr-sync-requires`, lazySyncRequires)\n }\n\n // Create file with sync requires of components/json files.\n let syncRequires = `\n// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\\n\\n`\n syncRequires += `exports.components = {\\n${components\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": preferDefault(require(\"${joinPath(\n c.component\n )}\"))`\n )\n .join(`,\\n`)}\n}\\n\\n`\n\n // Create file with async requires of components/json files.\n let asyncRequires = `// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\\n`\n asyncRequires += `exports.components = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}\" /* webpackChunkName: \"${c.componentChunkName}\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n`\n\n const writeAndMove = (\n virtualFilePath: string,\n file: string,\n data: string\n ): Promise<void> => {\n writeModule(virtualFilePath, data)\n\n // files in .cache are not used anymore as part of webpack builds, but\n // still can be used by other tools (for example `gatsby serve` reads\n // `match-paths.json` to setup routing)\n const destination = joinPath(program.directory, `.cache`, file)\n const tmp = `${destination}.${Date.now()}`\n return fs\n .writeFile(tmp, data)\n .then(() => fs.move(tmp, destination, { overwrite: true }))\n }\n\n await Promise.all([\n writeAndMove(`$virtual/sync-requires.js`, `sync-requires.js`, syncRequires),\n writeAndMove(\n `$virtual/async-requires.js`,\n `async-requires.js`,\n asyncRequires\n ),\n writeAndMove(\n `$virtual/match-paths.json`,\n `match-paths.json`,\n JSON.stringify(matchPaths, null, 4)\n ),\n ])\n\n return true\n}\n\nconst debouncedWriteAll = _.debounce(\n async (): Promise<void> => {\n const activity = reporter.activityTimer(`write out requires`, {\n id: `requires-writer`,\n })\n activity.start()\n await writeAll(store.getState())\n activity.end()\n },\n 500,\n {\n // using \"leading\" can cause double `writeAll` call - particularly\n // when refreshing data using `/__refresh` hook.\n leading: false,\n }\n)\n\n/**\n * Start listening to CREATE/DELETE_PAGE events so we can rewrite\n * files as required\n */\nlet listenerStarted = false\nexport const startListener = (): void => {\n // Only start the listener once.\n if (listenerStarted) {\n return\n }\n listenerStarted = true\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n /**\n * Start listening to CREATE_SERVER_VISITED_PAGE events so we can rewrite\n * files as required\n */\n emitter.on(`CREATE_SERVER_VISITED_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n }\n\n emitter.on(`CREATE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`CREATE_PAGE_END`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE_BY_PATH`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n}\n"],"file":"requires-writer.js"}
|
|
@@ -284,12 +284,11 @@ const renderHTMLQueue = async (workerPool, activity, htmlComponentRendererPath,
|
|
|
284
284
|
};
|
|
285
285
|
|
|
286
286
|
class BuildHTMLError extends Error {
|
|
287
|
-
codeFrame = ``;
|
|
288
|
-
|
|
289
287
|
constructor(error) {
|
|
290
288
|
super(error.message); // We must use getOwnProperty because keys like `stack` are not enumerable,
|
|
291
289
|
// but we want to copy over the entire error
|
|
292
290
|
|
|
291
|
+
this.codeFrame = ``;
|
|
293
292
|
Object.getOwnPropertyNames(error).forEach(key => {
|
|
294
293
|
this[key] = error[key];
|
|
295
294
|
});
|
|
@@ -424,7 +423,7 @@ async function buildHTMLPagesAndDeleteStaleArtifacts({
|
|
|
424
423
|
} // TODO move to per page builds in _routes directory
|
|
425
424
|
|
|
426
425
|
|
|
427
|
-
if (!program.keepPageRenderer && "
|
|
426
|
+
if (!program.keepPageRenderer && "" !== `4`) {
|
|
428
427
|
try {
|
|
429
428
|
await deleteRenderer(pageRenderer);
|
|
430
429
|
} catch (err) {// pass through
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/build-html.ts"],"names":["isPreview","process","env","GATSBY_IS_PREVIEW","devssrWebpackCompiler","devssrWebpackWatcher","needToRecompileSSRBundle","getDevSSRWebpack","gatsby_executing_command","Error","oldHash","newHash","runWebpack","compilerConfig","stage","directory","parentSpan","Bluebird","resolve","reject","GATSBY_EXPERIMENTAL_DEV_SSR","compiler","run","err","stats","activity","GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE","reporter","activityTimer","start","waitForCompilerClose","Promise","close","error","end","hooks","invalid","tap","watch","ignored","emitter","emit","suspend","hash","restartWorker","require","doBuildRenderer","webpackConfig","hasErrors","panic","compilation","errors","store","getState","html","ssrCompilationHash","dispatch","type","payload","rendererPath","buildRenderer","program","config","deleteRenderer","fs","remove","e","renderHTMLQueue","workerPool","htmlComponentRendererPath","pages","Stage","BuildHTML","envVars","NODE_ENV","gatsby_log_level","segments","sessionId","Date","now","renderHTML","single","renderHTMLProd","renderHTMLDev","uniqueUnsafeBuiltinUsedStacks","Set","map","pageSegment","renderHTMLResult","paths","seenErrors","errorMessages","Map","all","Object","entries","previewErrors","pagePath","has","stack","set","pagePaths","add","prettyError","errorMessageStr","codeFrame","errorMessage","get","push","value","values","p","join","id","context","htmlRenderMeta","_pagePath","arrayOfUsages","unsafeBuiltinsUsageByPagePath","unsafeUsageStack","tick","length","size","console","warn","unsafeBuiltinUsedStack","warningMessage","BuildHTMLError","constructor","message","getOwnPropertyNames","forEach","key","truncateObjStrings","obj","doBuildPages","buildError","path","pageData","truncatedPageData","pageDataMessage","JSON","stringify","buildHTML","span","buildHTMLPagesAndDeleteStaleArtifacts","pageRenderer","buildSpan","buildUtils","markHtmlDirtyIfResultOfUsedStaticQueryChanged","toRegenerate","toDelete","toCleanupFromTrackedState","calcDirtyHtmlFiles","buildHTMLActivityProgress","createProgress","errorPath","ref","match","info","keepPageRenderer","publicDir","deletePageDataActivityTimer","removePageFiles"],"mappings":"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","sourcesContent":["import Bluebird from \"bluebird\"\nimport fs from \"fs-extra\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { createErrorFromString } from \"gatsby-cli/lib/reporter/errors\"\nimport { chunk, truncate } from \"lodash\"\nimport webpack, { Stats } from \"webpack\"\nimport * as path from \"path\"\n\nimport { emitter, store } from \"../redux\"\nimport { IWebpackWatchingPauseResume } from \"../utils/start-server\"\nimport webpackConfig from \"../utils/webpack.config\"\nimport { structureWebpackErrors } from \"../utils/webpack-error-utils\"\nimport * as buildUtils from \"./build-utils\"\nimport { getPageData } from \"../utils/get-page-data\"\n\nimport { Span } from \"opentracing\"\nimport { IProgram, Stage } from \"./types\"\nimport { PackageJson } from \"../..\"\nimport type { GatsbyWorkerPool } from \"../utils/worker/pool\"\nimport { IPageDataWithQueryResult } from \"../utils/page-data\"\nimport { processNodeManifests } from \"../utils/node-manifest\"\n\ntype IActivity = any // TODO\n\nconst isPreview =\n typeof process.env.GATSBY_IS_PREVIEW === `boolean`\n ? process.env.GATSBY_IS_PREVIEW\n : process.env.GATSBY_IS_PREVIEW === `true`\n\nexport interface IBuildArgs extends IProgram {\n directory: string\n sitePackageJson: PackageJson\n prefixPaths: boolean\n noUglify: boolean\n logPages: boolean\n writeToFile: boolean\n profile: boolean\n graphqlTracing: boolean\n openTracingConfigFile: string\n keepPageRenderer: boolean\n}\n\nlet devssrWebpackCompiler: webpack.Compiler\nlet devssrWebpackWatcher: IWebpackWatchingPauseResume\nlet needToRecompileSSRBundle = true\nexport const getDevSSRWebpack = (): {\n devssrWebpackWatcher: IWebpackWatchingPauseResume\n devssrWebpackCompiler: webpack.Compiler\n needToRecompileSSRBundle: boolean\n} => {\n if (process.env.gatsby_executing_command !== `develop`) {\n throw new Error(`This function can only be called in development`)\n }\n\n return {\n devssrWebpackWatcher,\n devssrWebpackCompiler,\n needToRecompileSSRBundle,\n }\n}\n\nlet oldHash = ``\nlet newHash = ``\nconst runWebpack = (\n compilerConfig,\n stage: Stage,\n directory,\n parentSpan?: Span\n): Bluebird<{\n stats: Stats\n waitForCompilerClose: Promise<void>\n}> =>\n new Bluebird((resolve, reject) => {\n if (!process.env.GATSBY_EXPERIMENTAL_DEV_SSR || stage === `build-html`) {\n const compiler = webpack(compilerConfig)\n compiler.run((err, stats) => {\n let activity\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {\n activity = reporter.activityTimer(\n `Caching HTML renderer compilation`,\n { parentSpan }\n )\n activity.start()\n }\n\n const waitForCompilerClose = new Promise<void>((resolve, reject) => {\n compiler.close(error => {\n if (activity) {\n activity.end()\n }\n\n if (error) {\n return reject(error)\n }\n return resolve()\n })\n })\n\n if (err) {\n return reject(err)\n } else {\n return resolve({ stats: stats as Stats, waitForCompilerClose })\n }\n })\n } else if (\n process.env.GATSBY_EXPERIMENTAL_DEV_SSR &&\n stage === `develop-html`\n ) {\n devssrWebpackCompiler = webpack(compilerConfig)\n devssrWebpackCompiler.hooks.invalid.tap(`ssr file invalidation`, () => {\n needToRecompileSSRBundle = true\n })\n devssrWebpackWatcher = devssrWebpackCompiler.watch(\n {\n ignored: /node_modules/,\n },\n (err, stats) => {\n needToRecompileSSRBundle = false\n emitter.emit(`DEV_SSR_COMPILATION_DONE`)\n devssrWebpackWatcher.suspend()\n\n if (err) {\n return reject(err)\n } else {\n newHash = stats?.hash || ``\n\n const {\n restartWorker,\n } = require(`../utils/dev-ssr/render-dev-html`)\n // Make sure we use the latest version during development\n if (oldHash !== `` && newHash !== oldHash) {\n restartWorker(`${directory}/public/render-page.js`)\n }\n\n oldHash = newHash\n\n return resolve({\n stats: stats as Stats,\n waitForCompilerClose: Promise.resolve(),\n })\n }\n }\n ) as IWebpackWatchingPauseResume\n }\n })\n\nconst doBuildRenderer = async (\n { directory }: IProgram,\n webpackConfig: webpack.Configuration,\n stage: Stage,\n parentSpan?: Span\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { stats, waitForCompilerClose } = await runWebpack(\n webpackConfig,\n stage,\n directory,\n parentSpan\n )\n if (stats.hasErrors()) {\n reporter.panic(structureWebpackErrors(stage, stats.compilation.errors))\n }\n\n if (\n stage === `build-html` &&\n store.getState().html.ssrCompilationHash !== stats.hash\n ) {\n store.dispatch({\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`,\n payload: stats.hash as string,\n })\n }\n\n // render-page.js is hard coded in webpack.config\n return {\n rendererPath: `${directory}/public/render-page.js`,\n waitForCompilerClose,\n }\n}\n\nexport const buildRenderer = async (\n program: IProgram,\n stage: Stage,\n parentSpan?: IActivity\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { directory } = program\n const config = await webpackConfig(program, directory, stage, null, {\n parentSpan,\n })\n\n return doBuildRenderer(program, config, stage, parentSpan)\n}\n\nexport const deleteRenderer = async (rendererPath: string): Promise<void> => {\n try {\n await fs.remove(rendererPath)\n await fs.remove(`${rendererPath}.map`)\n } catch (e) {\n // This function will fail on Windows with no further consequences.\n }\n}\n\nexport interface IRenderHtmlResult {\n unsafeBuiltinsUsageByPagePath: Record<string, Array<string>>\n previewErrors: Record<string, any>\n}\n\nconst renderHTMLQueue = async (\n workerPool: GatsbyWorkerPool,\n activity: IActivity,\n htmlComponentRendererPath: string,\n pages: Array<string>,\n stage: Stage = Stage.BuildHTML\n): Promise<void> => {\n // We need to only pass env vars that are set programmatically in gatsby-cli\n // to child process. Other vars will be picked up from environment.\n const envVars: Array<[string, string | undefined]> = [\n [`NODE_ENV`, process.env.NODE_ENV],\n [`gatsby_executing_command`, process.env.gatsby_executing_command],\n [`gatsby_log_level`, process.env.gatsby_log_level],\n ]\n\n const segments = chunk(pages, 50)\n\n const sessionId = Date.now()\n\n const renderHTML =\n stage === `build-html`\n ? workerPool.single.renderHTMLProd\n : workerPool.single.renderHTMLDev\n\n const uniqueUnsafeBuiltinUsedStacks = new Set<string>()\n\n try {\n await Bluebird.map(segments, async pageSegment => {\n const renderHTMLResult = await renderHTML({\n envVars,\n htmlComponentRendererPath,\n paths: pageSegment,\n sessionId,\n })\n\n if (isPreview) {\n const seenErrors = new Set()\n const errorMessages = new Map()\n await Promise.all(\n Object.entries(renderHTMLResult.previewErrors).map(\n async ([pagePath, error]) => {\n if (!seenErrors.has(error.stack)) {\n errorMessages.set(error.stack, {\n pagePaths: [pagePath],\n })\n seenErrors.add(error.stack)\n const prettyError = await createErrorFromString(\n error.stack,\n `${htmlComponentRendererPath}.map`\n )\n\n const errorMessageStr = `${prettyError.stack}${\n prettyError.codeFrame ? `\\n\\n${prettyError.codeFrame}\\n` : ``\n }`\n\n const errorMessage = errorMessages.get(error.stack)\n errorMessage.errorMessage = errorMessageStr\n errorMessages.set(error.stack, errorMessage)\n } else {\n const errorMessage = errorMessages.get(error.stack)\n errorMessage.pagePaths.push(pagePath)\n errorMessages.set(error.stack, errorMessage)\n }\n }\n )\n )\n\n for (const value of errorMessages.values()) {\n const errorMessage = `Preview build error for page path(s):\\n\\n${value.pagePaths\n .map(p => `- ${p}`)\n .join(`\\n`)}\\n\\n${value.errorMessage}`\n reporter.error({\n id: `95314`,\n context: { errorMessage },\n })\n }\n }\n\n if (stage === `build-html`) {\n const htmlRenderMeta = renderHTMLResult as IRenderHtmlResult\n store.dispatch({\n type: `HTML_GENERATED`,\n payload: pageSegment,\n })\n\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n htmlRenderMeta.unsafeBuiltinsUsageByPagePath\n )) {\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n\n if (activity && activity.tick) {\n activity.tick(pageSegment.length)\n }\n })\n } catch (e) {\n if (e?.context?.unsafeBuiltinsUsageByPagePath) {\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n e.context.unsafeBuiltinsUsageByPagePath\n )) {\n // @ts-ignore TS doesn't know arrayOfUsages is Iterable\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n throw e\n } finally {\n if (uniqueUnsafeBuiltinUsedStacks.size > 0) {\n console.warn(\n `Unsafe builtin method was used, future builds will need to rebuild all pages`\n )\n store.dispatch({\n type: `SSR_USED_UNSAFE_BUILTIN`,\n })\n }\n\n for (const unsafeBuiltinUsedStack of uniqueUnsafeBuiltinUsedStacks) {\n const prettyError = await createErrorFromString(\n unsafeBuiltinUsedStack,\n `${htmlComponentRendererPath}.map`\n )\n\n const warningMessage = `${prettyError.stack}${\n prettyError.codeFrame ? `\\n\\n${prettyError.codeFrame}\\n` : ``\n }`\n\n reporter.warn(warningMessage)\n }\n }\n}\n\nclass BuildHTMLError extends Error {\n codeFrame = ``\n context?: {\n path: string\n }\n\n constructor(error: Error) {\n super(error.message)\n\n // We must use getOwnProperty because keys like `stack` are not enumerable,\n // but we want to copy over the entire error\n Object.getOwnPropertyNames(error).forEach(key => {\n this[key] = error[key]\n })\n }\n}\n\nconst truncateObjStrings = (obj): IPageDataWithQueryResult => {\n // Recursively truncate strings nested in object\n // These objs can be quite large, but we want to preserve each field\n for (const key in obj) {\n if (typeof obj[key] === `object`) {\n truncateObjStrings(obj[key])\n } else if (typeof obj[key] === `string`) {\n obj[key] = truncate(obj[key], { length: 250 })\n }\n }\n\n return obj\n}\n\nexport const doBuildPages = async (\n rendererPath: string,\n pagePaths: Array<string>,\n activity: IActivity,\n workerPool: GatsbyWorkerPool,\n stage: Stage\n): Promise<void> => {\n try {\n await renderHTMLQueue(workerPool, activity, rendererPath, pagePaths, stage)\n } catch (error) {\n const prettyError = await createErrorFromString(\n error.stack,\n `${rendererPath}.map`\n )\n\n const buildError = new BuildHTMLError(prettyError)\n buildError.context = error.context\n\n if (error?.context?.path) {\n const pageData = await getPageData(error.context.path)\n const truncatedPageData = truncateObjStrings(pageData)\n\n const pageDataMessage = `Page data from page-data.json for the failed page \"${\n error.context.path\n }\": ${JSON.stringify(truncatedPageData, null, 2)}`\n\n // This is our only error during preview so customize it a bit + add the\n // pretty build error.\n if (isPreview) {\n reporter.error({\n id: `95314`,\n context: { pageData: pageDataMessage },\n error: buildError,\n })\n } else {\n reporter.error(pageDataMessage)\n reporter.error(error)\n }\n }\n\n // Don't crash the builder when we're in preview-mode.\n if (!isPreview) {\n throw buildError\n }\n }\n}\n\n// TODO remove in v4 - this could be a \"public\" api\nexport const buildHTML = async ({\n program,\n stage,\n pagePaths,\n activity,\n workerPool,\n}: {\n program: IProgram\n stage: Stage\n pagePaths: Array<string>\n activity: IActivity\n workerPool: GatsbyWorkerPool\n}): Promise<void> => {\n const { rendererPath } = await buildRenderer(program, stage, activity.span)\n await doBuildPages(rendererPath, pagePaths, activity, workerPool, stage)\n await deleteRenderer(rendererPath)\n}\n\nexport async function buildHTMLPagesAndDeleteStaleArtifacts({\n pageRenderer,\n workerPool,\n buildSpan,\n program,\n}: {\n pageRenderer: string\n workerPool: GatsbyWorkerPool\n buildSpan?: Span\n program: IBuildArgs\n}): Promise<{\n toRegenerate: Array<string>\n toDelete: Array<string>\n}> {\n buildUtils.markHtmlDirtyIfResultOfUsedStaticQueryChanged()\n\n const { toRegenerate, toDelete, toCleanupFromTrackedState } =\n buildUtils.calcDirtyHtmlFiles(store.getState())\n\n store.dispatch({\n type: `HTML_TRACKED_PAGES_CLEANUP`,\n payload: toCleanupFromTrackedState,\n })\n\n if (toRegenerate.length > 0) {\n const buildHTMLActivityProgress = reporter.createProgress(\n `Building static HTML for pages`,\n toRegenerate.length,\n 0,\n {\n parentSpan: buildSpan,\n }\n )\n buildHTMLActivityProgress.start()\n try {\n await doBuildPages(\n pageRenderer,\n toRegenerate,\n buildHTMLActivityProgress,\n workerPool,\n Stage.BuildHTML\n )\n } catch (err) {\n let id = `95313` // TODO: verify error IDs exist\n const context = {\n errorPath: err.context && err.context.path,\n ref: ``,\n }\n\n const match = err.message.match(\n /ReferenceError: (window|document|localStorage|navigator|alert|location) is not defined/i\n )\n if (match && match[1]) {\n id = `95312`\n context.ref = match[1]\n }\n\n buildHTMLActivityProgress.panic({\n id,\n context,\n error: err,\n })\n }\n buildHTMLActivityProgress.end()\n } else {\n reporter.info(`There are no new or changed html files to build.`)\n }\n\n // TODO move to per page builds in _routes directory\n if (!program.keepPageRenderer && _CFLAGS_.GATSBY_MAJOR !== `4`) {\n try {\n await deleteRenderer(pageRenderer)\n } catch (err) {\n // pass through\n }\n }\n\n if (toDelete.length > 0) {\n const publicDir = path.join(program.directory, `public`)\n const deletePageDataActivityTimer = reporter.activityTimer(\n `Delete previous page data`\n )\n deletePageDataActivityTimer.start()\n await buildUtils.removePageFiles(publicDir, toDelete)\n\n deletePageDataActivityTimer.end()\n }\n\n // we process node manifests in this location because we need to make sure all page-data.json files are written for gatsby as well as inc-builds (both call builHTMLPagesAndDeleteStaleArtifacts). Node manifests include a digest of the corresponding page-data.json file and at this point we can be sure page-data has been written out for the latest updates in gatsby build AND inc builds.\n await processNodeManifests()\n\n return { toRegenerate, toDelete }\n}\n"],"file":"build-html.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/build-html.ts"],"names":["isPreview","process","env","GATSBY_IS_PREVIEW","devssrWebpackCompiler","devssrWebpackWatcher","needToRecompileSSRBundle","getDevSSRWebpack","gatsby_executing_command","Error","oldHash","newHash","runWebpack","compilerConfig","stage","directory","parentSpan","Bluebird","resolve","reject","GATSBY_EXPERIMENTAL_DEV_SSR","compiler","run","err","stats","activity","GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE","reporter","activityTimer","start","waitForCompilerClose","Promise","close","error","end","hooks","invalid","tap","watch","ignored","emitter","emit","suspend","hash","restartWorker","require","doBuildRenderer","webpackConfig","hasErrors","panic","compilation","errors","store","getState","html","ssrCompilationHash","dispatch","type","payload","rendererPath","buildRenderer","program","config","deleteRenderer","fs","remove","e","renderHTMLQueue","workerPool","htmlComponentRendererPath","pages","Stage","BuildHTML","envVars","NODE_ENV","gatsby_log_level","segments","sessionId","Date","now","renderHTML","single","renderHTMLProd","renderHTMLDev","uniqueUnsafeBuiltinUsedStacks","Set","map","pageSegment","renderHTMLResult","paths","seenErrors","errorMessages","Map","all","Object","entries","previewErrors","pagePath","has","stack","set","pagePaths","add","prettyError","errorMessageStr","codeFrame","errorMessage","get","push","value","values","p","join","id","context","htmlRenderMeta","_pagePath","arrayOfUsages","unsafeBuiltinsUsageByPagePath","unsafeUsageStack","tick","length","size","console","warn","unsafeBuiltinUsedStack","warningMessage","BuildHTMLError","constructor","message","getOwnPropertyNames","forEach","key","truncateObjStrings","obj","doBuildPages","buildError","path","pageData","truncatedPageData","pageDataMessage","JSON","stringify","buildHTML","span","buildHTMLPagesAndDeleteStaleArtifacts","pageRenderer","buildSpan","buildUtils","markHtmlDirtyIfResultOfUsedStaticQueryChanged","toRegenerate","toDelete","toCleanupFromTrackedState","calcDirtyHtmlFiles","buildHTMLActivityProgress","createProgress","errorPath","ref","match","info","keepPageRenderer","publicDir","deletePageDataActivityTimer","removePageFiles"],"mappings":"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","sourcesContent":["import Bluebird from \"bluebird\"\nimport fs from \"fs-extra\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { createErrorFromString } from \"gatsby-cli/lib/reporter/errors\"\nimport { chunk, truncate } from \"lodash\"\nimport webpack, { Stats } from \"webpack\"\nimport * as path from \"path\"\n\nimport { emitter, store } from \"../redux\"\nimport { IWebpackWatchingPauseResume } from \"../utils/start-server\"\nimport webpackConfig from \"../utils/webpack.config\"\nimport { structureWebpackErrors } from \"../utils/webpack-error-utils\"\nimport * as buildUtils from \"./build-utils\"\nimport { getPageData } from \"../utils/get-page-data\"\n\nimport { Span } from \"opentracing\"\nimport { IProgram, Stage } from \"./types\"\nimport { PackageJson } from \"../..\"\nimport type { GatsbyWorkerPool } from \"../utils/worker/pool\"\nimport { IPageDataWithQueryResult } from \"../utils/page-data\"\nimport { processNodeManifests } from \"../utils/node-manifest\"\n\ntype IActivity = any // TODO\n\nconst isPreview =\n typeof process.env.GATSBY_IS_PREVIEW === `boolean`\n ? process.env.GATSBY_IS_PREVIEW\n : process.env.GATSBY_IS_PREVIEW === `true`\n\nexport interface IBuildArgs extends IProgram {\n directory: string\n sitePackageJson: PackageJson\n prefixPaths: boolean\n noUglify: boolean\n logPages: boolean\n writeToFile: boolean\n profile: boolean\n graphqlTracing: boolean\n openTracingConfigFile: string\n keepPageRenderer: boolean\n}\n\nlet devssrWebpackCompiler: webpack.Compiler\nlet devssrWebpackWatcher: IWebpackWatchingPauseResume\nlet needToRecompileSSRBundle = true\nexport const getDevSSRWebpack = (): {\n devssrWebpackWatcher: IWebpackWatchingPauseResume\n devssrWebpackCompiler: webpack.Compiler\n needToRecompileSSRBundle: boolean\n} => {\n if (process.env.gatsby_executing_command !== `develop`) {\n throw new Error(`This function can only be called in development`)\n }\n\n return {\n devssrWebpackWatcher,\n devssrWebpackCompiler,\n needToRecompileSSRBundle,\n }\n}\n\nlet oldHash = ``\nlet newHash = ``\nconst runWebpack = (\n compilerConfig,\n stage: Stage,\n directory,\n parentSpan?: Span\n): Bluebird<{\n stats: Stats\n waitForCompilerClose: Promise<void>\n}> =>\n new Bluebird((resolve, reject) => {\n if (!process.env.GATSBY_EXPERIMENTAL_DEV_SSR || stage === `build-html`) {\n const compiler = webpack(compilerConfig)\n compiler.run((err, stats) => {\n let activity\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {\n activity = reporter.activityTimer(\n `Caching HTML renderer compilation`,\n { parentSpan }\n )\n activity.start()\n }\n\n const waitForCompilerClose = new Promise<void>((resolve, reject) => {\n compiler.close(error => {\n if (activity) {\n activity.end()\n }\n\n if (error) {\n return reject(error)\n }\n return resolve()\n })\n })\n\n if (err) {\n return reject(err)\n } else {\n return resolve({ stats: stats as Stats, waitForCompilerClose })\n }\n })\n } else if (\n process.env.GATSBY_EXPERIMENTAL_DEV_SSR &&\n stage === `develop-html`\n ) {\n devssrWebpackCompiler = webpack(compilerConfig)\n devssrWebpackCompiler.hooks.invalid.tap(`ssr file invalidation`, () => {\n needToRecompileSSRBundle = true\n })\n devssrWebpackWatcher = devssrWebpackCompiler.watch(\n {\n ignored: /node_modules/,\n },\n (err, stats) => {\n needToRecompileSSRBundle = false\n emitter.emit(`DEV_SSR_COMPILATION_DONE`)\n devssrWebpackWatcher.suspend()\n\n if (err) {\n return reject(err)\n } else {\n newHash = stats?.hash || ``\n\n const {\n restartWorker,\n } = require(`../utils/dev-ssr/render-dev-html`)\n // Make sure we use the latest version during development\n if (oldHash !== `` && newHash !== oldHash) {\n restartWorker(`${directory}/public/render-page.js`)\n }\n\n oldHash = newHash\n\n return resolve({\n stats: stats as Stats,\n waitForCompilerClose: Promise.resolve(),\n })\n }\n }\n ) as IWebpackWatchingPauseResume\n }\n })\n\nconst doBuildRenderer = async (\n { directory }: IProgram,\n webpackConfig: webpack.Configuration,\n stage: Stage,\n parentSpan?: Span\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { stats, waitForCompilerClose } = await runWebpack(\n webpackConfig,\n stage,\n directory,\n parentSpan\n )\n if (stats.hasErrors()) {\n reporter.panic(structureWebpackErrors(stage, stats.compilation.errors))\n }\n\n if (\n stage === `build-html` &&\n store.getState().html.ssrCompilationHash !== stats.hash\n ) {\n store.dispatch({\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`,\n payload: stats.hash as string,\n })\n }\n\n // render-page.js is hard coded in webpack.config\n return {\n rendererPath: `${directory}/public/render-page.js`,\n waitForCompilerClose,\n }\n}\n\nexport const buildRenderer = async (\n program: IProgram,\n stage: Stage,\n parentSpan?: IActivity\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { directory } = program\n const config = await webpackConfig(program, directory, stage, null, {\n parentSpan,\n })\n\n return doBuildRenderer(program, config, stage, parentSpan)\n}\n\nexport const deleteRenderer = async (rendererPath: string): Promise<void> => {\n try {\n await fs.remove(rendererPath)\n await fs.remove(`${rendererPath}.map`)\n } catch (e) {\n // This function will fail on Windows with no further consequences.\n }\n}\n\nexport interface IRenderHtmlResult {\n unsafeBuiltinsUsageByPagePath: Record<string, Array<string>>\n previewErrors: Record<string, any>\n}\n\nconst renderHTMLQueue = async (\n workerPool: GatsbyWorkerPool,\n activity: IActivity,\n htmlComponentRendererPath: string,\n pages: Array<string>,\n stage: Stage = Stage.BuildHTML\n): Promise<void> => {\n // We need to only pass env vars that are set programmatically in gatsby-cli\n // to child process. Other vars will be picked up from environment.\n const envVars: Array<[string, string | undefined]> = [\n [`NODE_ENV`, process.env.NODE_ENV],\n [`gatsby_executing_command`, process.env.gatsby_executing_command],\n [`gatsby_log_level`, process.env.gatsby_log_level],\n ]\n\n const segments = chunk(pages, 50)\n\n const sessionId = Date.now()\n\n const renderHTML =\n stage === `build-html`\n ? workerPool.single.renderHTMLProd\n : workerPool.single.renderHTMLDev\n\n const uniqueUnsafeBuiltinUsedStacks = new Set<string>()\n\n try {\n await Bluebird.map(segments, async pageSegment => {\n const renderHTMLResult = await renderHTML({\n envVars,\n htmlComponentRendererPath,\n paths: pageSegment,\n sessionId,\n })\n\n if (isPreview) {\n const seenErrors = new Set()\n const errorMessages = new Map()\n await Promise.all(\n Object.entries(renderHTMLResult.previewErrors).map(\n async ([pagePath, error]) => {\n if (!seenErrors.has(error.stack)) {\n errorMessages.set(error.stack, {\n pagePaths: [pagePath],\n })\n seenErrors.add(error.stack)\n const prettyError = await createErrorFromString(\n error.stack,\n `${htmlComponentRendererPath}.map`\n )\n\n const errorMessageStr = `${prettyError.stack}${\n prettyError.codeFrame ? `\\n\\n${prettyError.codeFrame}\\n` : ``\n }`\n\n const errorMessage = errorMessages.get(error.stack)\n errorMessage.errorMessage = errorMessageStr\n errorMessages.set(error.stack, errorMessage)\n } else {\n const errorMessage = errorMessages.get(error.stack)\n errorMessage.pagePaths.push(pagePath)\n errorMessages.set(error.stack, errorMessage)\n }\n }\n )\n )\n\n for (const value of errorMessages.values()) {\n const errorMessage = `Preview build error for page path(s):\\n\\n${value.pagePaths\n .map(p => `- ${p}`)\n .join(`\\n`)}\\n\\n${value.errorMessage}`\n reporter.error({\n id: `95314`,\n context: { errorMessage },\n })\n }\n }\n\n if (stage === `build-html`) {\n const htmlRenderMeta = renderHTMLResult as IRenderHtmlResult\n store.dispatch({\n type: `HTML_GENERATED`,\n payload: pageSegment,\n })\n\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n htmlRenderMeta.unsafeBuiltinsUsageByPagePath\n )) {\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n\n if (activity && activity.tick) {\n activity.tick(pageSegment.length)\n }\n })\n } catch (e) {\n if (e?.context?.unsafeBuiltinsUsageByPagePath) {\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n e.context.unsafeBuiltinsUsageByPagePath\n )) {\n // @ts-ignore TS doesn't know arrayOfUsages is Iterable\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n throw e\n } finally {\n if (uniqueUnsafeBuiltinUsedStacks.size > 0) {\n console.warn(\n `Unsafe builtin method was used, future builds will need to rebuild all pages`\n )\n store.dispatch({\n type: `SSR_USED_UNSAFE_BUILTIN`,\n })\n }\n\n for (const unsafeBuiltinUsedStack of uniqueUnsafeBuiltinUsedStacks) {\n const prettyError = await createErrorFromString(\n unsafeBuiltinUsedStack,\n `${htmlComponentRendererPath}.map`\n )\n\n const warningMessage = `${prettyError.stack}${\n prettyError.codeFrame ? `\\n\\n${prettyError.codeFrame}\\n` : ``\n }`\n\n reporter.warn(warningMessage)\n }\n }\n}\n\nclass BuildHTMLError extends Error {\n codeFrame = ``\n context?: {\n path: string\n }\n\n constructor(error: Error) {\n super(error.message)\n\n // We must use getOwnProperty because keys like `stack` are not enumerable,\n // but we want to copy over the entire error\n Object.getOwnPropertyNames(error).forEach(key => {\n this[key] = error[key]\n })\n }\n}\n\nconst truncateObjStrings = (obj): IPageDataWithQueryResult => {\n // Recursively truncate strings nested in object\n // These objs can be quite large, but we want to preserve each field\n for (const key in obj) {\n if (typeof obj[key] === `object`) {\n truncateObjStrings(obj[key])\n } else if (typeof obj[key] === `string`) {\n obj[key] = truncate(obj[key], { length: 250 })\n }\n }\n\n return obj\n}\n\nexport const doBuildPages = async (\n rendererPath: string,\n pagePaths: Array<string>,\n activity: IActivity,\n workerPool: GatsbyWorkerPool,\n stage: Stage\n): Promise<void> => {\n try {\n await renderHTMLQueue(workerPool, activity, rendererPath, pagePaths, stage)\n } catch (error) {\n const prettyError = await createErrorFromString(\n error.stack,\n `${rendererPath}.map`\n )\n\n const buildError = new BuildHTMLError(prettyError)\n buildError.context = error.context\n\n if (error?.context?.path) {\n const pageData = await getPageData(error.context.path)\n const truncatedPageData = truncateObjStrings(pageData)\n\n const pageDataMessage = `Page data from page-data.json for the failed page \"${\n error.context.path\n }\": ${JSON.stringify(truncatedPageData, null, 2)}`\n\n // This is our only error during preview so customize it a bit + add the\n // pretty build error.\n if (isPreview) {\n reporter.error({\n id: `95314`,\n context: { pageData: pageDataMessage },\n error: buildError,\n })\n } else {\n reporter.error(pageDataMessage)\n reporter.error(error)\n }\n }\n\n // Don't crash the builder when we're in preview-mode.\n if (!isPreview) {\n throw buildError\n }\n }\n}\n\n// TODO remove in v4 - this could be a \"public\" api\nexport const buildHTML = async ({\n program,\n stage,\n pagePaths,\n activity,\n workerPool,\n}: {\n program: IProgram\n stage: Stage\n pagePaths: Array<string>\n activity: IActivity\n workerPool: GatsbyWorkerPool\n}): Promise<void> => {\n const { rendererPath } = await buildRenderer(program, stage, activity.span)\n await doBuildPages(rendererPath, pagePaths, activity, workerPool, stage)\n await deleteRenderer(rendererPath)\n}\n\nexport async function buildHTMLPagesAndDeleteStaleArtifacts({\n pageRenderer,\n workerPool,\n buildSpan,\n program,\n}: {\n pageRenderer: string\n workerPool: GatsbyWorkerPool\n buildSpan?: Span\n program: IBuildArgs\n}): Promise<{\n toRegenerate: Array<string>\n toDelete: Array<string>\n}> {\n buildUtils.markHtmlDirtyIfResultOfUsedStaticQueryChanged()\n\n const { toRegenerate, toDelete, toCleanupFromTrackedState } =\n buildUtils.calcDirtyHtmlFiles(store.getState())\n\n store.dispatch({\n type: `HTML_TRACKED_PAGES_CLEANUP`,\n payload: toCleanupFromTrackedState,\n })\n\n if (toRegenerate.length > 0) {\n const buildHTMLActivityProgress = reporter.createProgress(\n `Building static HTML for pages`,\n toRegenerate.length,\n 0,\n {\n parentSpan: buildSpan,\n }\n )\n buildHTMLActivityProgress.start()\n try {\n await doBuildPages(\n pageRenderer,\n toRegenerate,\n buildHTMLActivityProgress,\n workerPool,\n Stage.BuildHTML\n )\n } catch (err) {\n let id = `95313` // TODO: verify error IDs exist\n const context = {\n errorPath: err.context && err.context.path,\n ref: ``,\n }\n\n const match = err.message.match(\n /ReferenceError: (window|document|localStorage|navigator|alert|location) is not defined/i\n )\n if (match && match[1]) {\n id = `95312`\n context.ref = match[1]\n }\n\n buildHTMLActivityProgress.panic({\n id,\n context,\n error: err,\n })\n }\n buildHTMLActivityProgress.end()\n } else {\n reporter.info(`There are no new or changed html files to build.`)\n }\n\n // TODO move to per page builds in _routes directory\n if (!program.keepPageRenderer && _CFLAGS_.GATSBY_MAJOR !== `4`) {\n try {\n await deleteRenderer(pageRenderer)\n } catch (err) {\n // pass through\n }\n }\n\n if (toDelete.length > 0) {\n const publicDir = path.join(program.directory, `public`)\n const deletePageDataActivityTimer = reporter.activityTimer(\n `Delete previous page data`\n )\n deletePageDataActivityTimer.start()\n await buildUtils.removePageFiles(publicDir, toDelete)\n\n deletePageDataActivityTimer.end()\n }\n\n // we process node manifests in this location because we need to make sure all page-data.json files are written for gatsby as well as inc-builds (both call builHTMLPagesAndDeleteStaleArtifacts). Node manifests include a digest of the corresponding page-data.json file and at this point we can be sure page-data has been written out for the latest updates in gatsby build AND inc builds.\n await processNodeManifests()\n\n return { toRegenerate, toDelete }\n}\n"],"file":"build-html.js"}
|
|
@@ -152,7 +152,7 @@ function calcDirtyHtmlFiles(state) {
|
|
|
152
152
|
// and because of that `isDeleted` might not be set ...
|
|
153
153
|
markActionForPage(path, `delete`);
|
|
154
154
|
} else {
|
|
155
|
-
if ("
|
|
155
|
+
if ("" === `4`) {
|
|
156
156
|
if (page.mode === `SSG`) {
|
|
157
157
|
if (htmlFile.dirty || state.html.unsafeBuiltinWasUsedInSSR) {
|
|
158
158
|
markActionForPage(path, `regenerate`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/build-utils.ts"],"names":["checkFolderIsEmpty","path","fs","existsSync","readdirSync","length","checkAndRemoveEmptyDir","publicDir","pagePath","pageHtmlDirectory","dirname","pageDataDirectory","join","removeSync","sortedPageKeysByNestedLevel","pageKeys","sort","a","b","currentPagePathValue","split","previousPagePathValue","removePageFiles","removePages","map","removePromise","then","store","dispatch","type","payload","removePageDataList","Promise","all","forEach","FSisCaseInsensitive","normalizePagePath","toLowerCase","endsWith","slice","pageGenerationActionPriority","regenerate","reuse","delete","calcDirtyHtmlFiles","state","toRegenerate","Set","toDelete","toCleanupFromTrackedState","normalizedPagePathToAction","Map","markActionForPage","action","normalizedPagePath","previousAction","get","overwritePreviousAction","previousActionPriority","currentActionPriority","add","actualPath","set","html","unsafeBuiltinWasUsedInSSR","reporter","warn","trackedHtmlFiles","htmlFile","page","pages","isDeleted","mode","dirty","Array","from","markHtmlDirtyIfResultOfUsedStaticQueryChanged","getState","dirtyStaticQueryResults","trackedStaticQueryResults","staticQueryResultState","staticQueryHash","dirtyTemplates","staticQueriesByTemplate","staticQueryHashes","componentPath","dirtyStaticQueryHash","includes","dirtyPages","dirtyTemplate","component","components"],"mappings":"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","sourcesContent":["import fs from \"fs-extra\"\nimport path from \"path\"\nimport { platform } from \"os\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport {\n remove as removePageHtmlFile,\n generateHtmlPath,\n fixedPagePath,\n} from \"gatsby-core-utils\"\nimport { removePageData } from \"../utils/page-data\"\nimport { store } from \"../redux\"\nimport { IGatsbyState } from \"../redux/types\"\n\nconst checkFolderIsEmpty = (path: string): boolean =>\n fs.existsSync(path) && !fs.readdirSync(path).length\n\nconst checkAndRemoveEmptyDir = (publicDir: string, pagePath: string): void => {\n const pageHtmlDirectory = path.dirname(generateHtmlPath(publicDir, pagePath))\n const pageDataDirectory = path.join(\n publicDir,\n `page-data`,\n fixedPagePath(pagePath)\n )\n // if page's folder is empty also remove matching page-data folder\n if (checkFolderIsEmpty(pageHtmlDirectory)) {\n fs.removeSync(pageHtmlDirectory)\n }\n if (checkFolderIsEmpty(pageDataDirectory)) {\n fs.removeSync(pageDataDirectory)\n }\n}\n\nconst sortedPageKeysByNestedLevel = (pageKeys: Array<string>): Array<string> =>\n pageKeys.sort((a, b) => {\n const currentPagePathValue = a.split(`/`).length\n const previousPagePathValue = b.split(`/`).length\n return previousPagePathValue - currentPagePathValue\n })\n\nexport const removePageFiles = async (\n publicDir: string,\n pageKeys: Array<string>\n): Promise<void> => {\n const removePages = pageKeys.map(pagePath => {\n const removePromise = removePageHtmlFile({ publicDir }, pagePath)\n removePromise.then(() => {\n store.dispatch({\n type: `HTML_REMOVED`,\n payload: pagePath,\n })\n })\n return removePromise\n })\n\n const removePageDataList = pageKeys.map(pagePath =>\n removePageData(publicDir, pagePath)\n )\n\n return Promise.all([...removePages, ...removePageDataList]).then(() => {\n // Sort removed pageKeys by nested directories and remove if empty.\n sortedPageKeysByNestedLevel(pageKeys).forEach(pagePath => {\n checkAndRemoveEmptyDir(publicDir, pagePath)\n })\n })\n}\n\nconst FSisCaseInsensitive = platform() === `win32` || platform() === `darwin`\nfunction normalizePagePath(path: string): string {\n if (path === `/`) {\n return `/`\n }\n\n if (FSisCaseInsensitive) {\n // e.g. /TEST/ and /test/ would produce \"same\" artifacts on case insensitive\n // file systems\n path = path.toLowerCase()\n }\n\n return path.endsWith(`/`) ? path.slice(0, -1) : path\n}\n\ntype PageGenerationAction = \"delete\" | \"regenerate\" | \"reuse\"\nconst pageGenerationActionPriority: Record<PageGenerationAction, number> = {\n // higher the number, higher the priority\n regenerate: 2,\n reuse: 1,\n delete: 0,\n}\n\nexport function calcDirtyHtmlFiles(state: IGatsbyState): {\n toRegenerate: Array<string>\n toDelete: Array<string>\n toCleanupFromTrackedState: Set<string>\n} {\n const toRegenerate = new Set<string>()\n const toDelete = new Set<string>()\n const toCleanupFromTrackedState = new Set<string>()\n const normalizedPagePathToAction = new Map<\n string,\n {\n actualPath: string\n action: PageGenerationAction\n }\n >()\n\n /**\n * multiple page paths can result in same html and page-data filenames\n * so we need to keep that in mind when generating list of pages\n * to regenerate and more importantly - to delete (so we don't delete html and page-data file\n * when path changes slightly but it would still result in same html and page-data filenames\n * for example adding/removing trailing slash between builds or even mid build with plugins\n * like `gatsby-plugin-remove-trailing-slashes`). Additionally similar consideration need to\n * be accounted for cases where page paths casing on case-insensitive file systems.\n */\n function markActionForPage(path: string, action: PageGenerationAction): void {\n const normalizedPagePath = normalizePagePath(path)\n\n const previousAction = normalizedPagePathToAction.get(normalizedPagePath)\n let overwritePreviousAction = false\n if (previousAction) {\n const previousActionPriority =\n pageGenerationActionPriority[previousAction.action]\n const currentActionPriority = pageGenerationActionPriority[action]\n\n if (currentActionPriority > previousActionPriority) {\n overwritePreviousAction = true\n toCleanupFromTrackedState.add(previousAction.actualPath)\n if (previousAction.action === `delete`) {\n // \"reuse\" or \"regenerate\" will take over, so we should\n // remove path from list of paths to delete\n toDelete.delete(previousAction.actualPath)\n }\n }\n }\n\n if (!previousAction || overwritePreviousAction) {\n normalizedPagePathToAction.set(normalizedPagePath, {\n actualPath: path,\n action,\n })\n if (action === `delete`) {\n toDelete.add(path)\n } else if (action === `regenerate`) {\n toRegenerate.add(path)\n }\n }\n }\n\n if (state.html.unsafeBuiltinWasUsedInSSR) {\n reporter.warn(\n `Previous build used unsafe builtin method. We need to rebuild all pages`\n )\n }\n\n state.html.trackedHtmlFiles.forEach(function (htmlFile, path) {\n const page = state.pages.get(path)\n if (htmlFile.isDeleted || !page) {\n // FIXME: checking pages state here because pages are not persisted\n // and because of that `isDeleted` might not be set ...\n markActionForPage(path, `delete`)\n } else {\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n if (page.mode === `SSG`) {\n if (htmlFile.dirty || state.html.unsafeBuiltinWasUsedInSSR) {\n markActionForPage(path, `regenerate`)\n } else {\n markActionForPage(path, `reuse`)\n }\n }\n } else {\n if (htmlFile.dirty || state.html.unsafeBuiltinWasUsedInSSR) {\n markActionForPage(path, `regenerate`)\n } else {\n markActionForPage(path, `reuse`)\n }\n }\n }\n })\n\n return {\n toRegenerate: Array.from(toRegenerate),\n toDelete: Array.from(toDelete),\n toCleanupFromTrackedState,\n }\n}\n\nexport function markHtmlDirtyIfResultOfUsedStaticQueryChanged(): void {\n const state = store.getState()\n\n const dirtyStaticQueryResults = new Set<string>()\n state.html.trackedStaticQueryResults.forEach(function (\n staticQueryResultState,\n staticQueryHash\n ) {\n if (staticQueryResultState.dirty) {\n dirtyStaticQueryResults.add(staticQueryHash)\n }\n })\n\n // we have dirty static query hashes - now we need to find templates that use them\n const dirtyTemplates = new Set<string>()\n state.staticQueriesByTemplate.forEach(function (\n staticQueryHashes,\n componentPath\n ) {\n for (const dirtyStaticQueryHash of dirtyStaticQueryResults) {\n if (staticQueryHashes.includes(dirtyStaticQueryHash)) {\n dirtyTemplates.add(componentPath)\n break // we already know this template need to rebuild, no need to check rest of queries\n }\n }\n })\n\n // mark html as dirty\n const dirtyPages = new Set<string>()\n for (const dirtyTemplate of dirtyTemplates) {\n const component = state.components.get(dirtyTemplate)\n if (component) {\n for (const page of component.pages) {\n dirtyPages.add(page)\n }\n }\n }\n\n store.dispatch({\n type: `HTML_MARK_DIRTY_BECAUSE_STATIC_QUERY_RESULT_CHANGED`,\n payload: {\n pages: dirtyPages,\n staticQueryHashes: dirtyStaticQueryResults,\n },\n })\n}\n"],"file":"build-utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/build-utils.ts"],"names":["checkFolderIsEmpty","path","fs","existsSync","readdirSync","length","checkAndRemoveEmptyDir","publicDir","pagePath","pageHtmlDirectory","dirname","pageDataDirectory","join","removeSync","sortedPageKeysByNestedLevel","pageKeys","sort","a","b","currentPagePathValue","split","previousPagePathValue","removePageFiles","removePages","map","removePromise","then","store","dispatch","type","payload","removePageDataList","Promise","all","forEach","FSisCaseInsensitive","normalizePagePath","toLowerCase","endsWith","slice","pageGenerationActionPriority","regenerate","reuse","delete","calcDirtyHtmlFiles","state","toRegenerate","Set","toDelete","toCleanupFromTrackedState","normalizedPagePathToAction","Map","markActionForPage","action","normalizedPagePath","previousAction","get","overwritePreviousAction","previousActionPriority","currentActionPriority","add","actualPath","set","html","unsafeBuiltinWasUsedInSSR","reporter","warn","trackedHtmlFiles","htmlFile","page","pages","isDeleted","mode","dirty","Array","from","markHtmlDirtyIfResultOfUsedStaticQueryChanged","getState","dirtyStaticQueryResults","trackedStaticQueryResults","staticQueryResultState","staticQueryHash","dirtyTemplates","staticQueriesByTemplate","staticQueryHashes","componentPath","dirtyStaticQueryHash","includes","dirtyPages","dirtyTemplate","component","components"],"mappings":"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","sourcesContent":["import fs from \"fs-extra\"\nimport path from \"path\"\nimport { platform } from \"os\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport {\n remove as removePageHtmlFile,\n generateHtmlPath,\n fixedPagePath,\n} from \"gatsby-core-utils\"\nimport { removePageData } from \"../utils/page-data\"\nimport { store } from \"../redux\"\nimport { IGatsbyState } from \"../redux/types\"\n\nconst checkFolderIsEmpty = (path: string): boolean =>\n fs.existsSync(path) && !fs.readdirSync(path).length\n\nconst checkAndRemoveEmptyDir = (publicDir: string, pagePath: string): void => {\n const pageHtmlDirectory = path.dirname(generateHtmlPath(publicDir, pagePath))\n const pageDataDirectory = path.join(\n publicDir,\n `page-data`,\n fixedPagePath(pagePath)\n )\n // if page's folder is empty also remove matching page-data folder\n if (checkFolderIsEmpty(pageHtmlDirectory)) {\n fs.removeSync(pageHtmlDirectory)\n }\n if (checkFolderIsEmpty(pageDataDirectory)) {\n fs.removeSync(pageDataDirectory)\n }\n}\n\nconst sortedPageKeysByNestedLevel = (pageKeys: Array<string>): Array<string> =>\n pageKeys.sort((a, b) => {\n const currentPagePathValue = a.split(`/`).length\n const previousPagePathValue = b.split(`/`).length\n return previousPagePathValue - currentPagePathValue\n })\n\nexport const removePageFiles = async (\n publicDir: string,\n pageKeys: Array<string>\n): Promise<void> => {\n const removePages = pageKeys.map(pagePath => {\n const removePromise = removePageHtmlFile({ publicDir }, pagePath)\n removePromise.then(() => {\n store.dispatch({\n type: `HTML_REMOVED`,\n payload: pagePath,\n })\n })\n return removePromise\n })\n\n const removePageDataList = pageKeys.map(pagePath =>\n removePageData(publicDir, pagePath)\n )\n\n return Promise.all([...removePages, ...removePageDataList]).then(() => {\n // Sort removed pageKeys by nested directories and remove if empty.\n sortedPageKeysByNestedLevel(pageKeys).forEach(pagePath => {\n checkAndRemoveEmptyDir(publicDir, pagePath)\n })\n })\n}\n\nconst FSisCaseInsensitive = platform() === `win32` || platform() === `darwin`\nfunction normalizePagePath(path: string): string {\n if (path === `/`) {\n return `/`\n }\n\n if (FSisCaseInsensitive) {\n // e.g. /TEST/ and /test/ would produce \"same\" artifacts on case insensitive\n // file systems\n path = path.toLowerCase()\n }\n\n return path.endsWith(`/`) ? path.slice(0, -1) : path\n}\n\ntype PageGenerationAction = \"delete\" | \"regenerate\" | \"reuse\"\nconst pageGenerationActionPriority: Record<PageGenerationAction, number> = {\n // higher the number, higher the priority\n regenerate: 2,\n reuse: 1,\n delete: 0,\n}\n\nexport function calcDirtyHtmlFiles(state: IGatsbyState): {\n toRegenerate: Array<string>\n toDelete: Array<string>\n toCleanupFromTrackedState: Set<string>\n} {\n const toRegenerate = new Set<string>()\n const toDelete = new Set<string>()\n const toCleanupFromTrackedState = new Set<string>()\n const normalizedPagePathToAction = new Map<\n string,\n {\n actualPath: string\n action: PageGenerationAction\n }\n >()\n\n /**\n * multiple page paths can result in same html and page-data filenames\n * so we need to keep that in mind when generating list of pages\n * to regenerate and more importantly - to delete (so we don't delete html and page-data file\n * when path changes slightly but it would still result in same html and page-data filenames\n * for example adding/removing trailing slash between builds or even mid build with plugins\n * like `gatsby-plugin-remove-trailing-slashes`). Additionally similar consideration need to\n * be accounted for cases where page paths casing on case-insensitive file systems.\n */\n function markActionForPage(path: string, action: PageGenerationAction): void {\n const normalizedPagePath = normalizePagePath(path)\n\n const previousAction = normalizedPagePathToAction.get(normalizedPagePath)\n let overwritePreviousAction = false\n if (previousAction) {\n const previousActionPriority =\n pageGenerationActionPriority[previousAction.action]\n const currentActionPriority = pageGenerationActionPriority[action]\n\n if (currentActionPriority > previousActionPriority) {\n overwritePreviousAction = true\n toCleanupFromTrackedState.add(previousAction.actualPath)\n if (previousAction.action === `delete`) {\n // \"reuse\" or \"regenerate\" will take over, so we should\n // remove path from list of paths to delete\n toDelete.delete(previousAction.actualPath)\n }\n }\n }\n\n if (!previousAction || overwritePreviousAction) {\n normalizedPagePathToAction.set(normalizedPagePath, {\n actualPath: path,\n action,\n })\n if (action === `delete`) {\n toDelete.add(path)\n } else if (action === `regenerate`) {\n toRegenerate.add(path)\n }\n }\n }\n\n if (state.html.unsafeBuiltinWasUsedInSSR) {\n reporter.warn(\n `Previous build used unsafe builtin method. We need to rebuild all pages`\n )\n }\n\n state.html.trackedHtmlFiles.forEach(function (htmlFile, path) {\n const page = state.pages.get(path)\n if (htmlFile.isDeleted || !page) {\n // FIXME: checking pages state here because pages are not persisted\n // and because of that `isDeleted` might not be set ...\n markActionForPage(path, `delete`)\n } else {\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n if (page.mode === `SSG`) {\n if (htmlFile.dirty || state.html.unsafeBuiltinWasUsedInSSR) {\n markActionForPage(path, `regenerate`)\n } else {\n markActionForPage(path, `reuse`)\n }\n }\n } else {\n if (htmlFile.dirty || state.html.unsafeBuiltinWasUsedInSSR) {\n markActionForPage(path, `regenerate`)\n } else {\n markActionForPage(path, `reuse`)\n }\n }\n }\n })\n\n return {\n toRegenerate: Array.from(toRegenerate),\n toDelete: Array.from(toDelete),\n toCleanupFromTrackedState,\n }\n}\n\nexport function markHtmlDirtyIfResultOfUsedStaticQueryChanged(): void {\n const state = store.getState()\n\n const dirtyStaticQueryResults = new Set<string>()\n state.html.trackedStaticQueryResults.forEach(function (\n staticQueryResultState,\n staticQueryHash\n ) {\n if (staticQueryResultState.dirty) {\n dirtyStaticQueryResults.add(staticQueryHash)\n }\n })\n\n // we have dirty static query hashes - now we need to find templates that use them\n const dirtyTemplates = new Set<string>()\n state.staticQueriesByTemplate.forEach(function (\n staticQueryHashes,\n componentPath\n ) {\n for (const dirtyStaticQueryHash of dirtyStaticQueryResults) {\n if (staticQueryHashes.includes(dirtyStaticQueryHash)) {\n dirtyTemplates.add(componentPath)\n break // we already know this template need to rebuild, no need to check rest of queries\n }\n }\n })\n\n // mark html as dirty\n const dirtyPages = new Set<string>()\n for (const dirtyTemplate of dirtyTemplates) {\n const component = state.components.get(dirtyTemplate)\n if (component) {\n for (const page of component.pages) {\n dirtyPages.add(page)\n }\n }\n }\n\n store.dispatch({\n type: `HTML_MARK_DIRTY_BECAUSE_STATIC_QUERY_RESULT_CHANGED`,\n payload: {\n pages: dirtyPages,\n staticQueryHashes: dirtyStaticQueryResults,\n },\n })\n}\n"],"file":"build-utils.js"}
|
package/dist/commands/build.js
CHANGED
|
@@ -113,7 +113,7 @@ module.exports = async function build(program) {
|
|
|
113
113
|
});
|
|
114
114
|
const engineBundlingPromises = [];
|
|
115
115
|
|
|
116
|
-
if ("
|
|
116
|
+
if ("" === `4` && (0, _enginesHelpers.shouldGenerateEngines)()) {
|
|
117
117
|
// bundle graphql-engine
|
|
118
118
|
engineBundlingPromises.push((0, _bundleWebpack.createGraphqlEngineBundle)());
|
|
119
119
|
}
|
|
@@ -128,7 +128,7 @@ module.exports = async function build(program) {
|
|
|
128
128
|
store: _redux.store
|
|
129
129
|
}); // Only run queries with mode SSG
|
|
130
130
|
|
|
131
|
-
if ("
|
|
131
|
+
if ("" === `4`) {
|
|
132
132
|
queryIds.pageQueryIds = queryIds.pageQueryIds.filter(query => query.mode === `SSG`);
|
|
133
133
|
}
|
|
134
134
|
|
|
@@ -193,7 +193,7 @@ module.exports = async function build(program) {
|
|
|
193
193
|
buildActivityTimer.end();
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
if ("
|
|
196
|
+
if ("" === `4` && (0, _enginesHelpers.shouldGenerateEngines)()) {
|
|
197
197
|
// client bundle is produced so static query maps should be ready
|
|
198
198
|
engineBundlingPromises.push((0, _bundleWebpack2.createPageSSRBundle)());
|
|
199
199
|
}
|
|
@@ -251,7 +251,7 @@ module.exports = async function build(program) {
|
|
|
251
251
|
const result = await (0, _buildHtml.buildRenderer)(program, _types.Stage.BuildHTML, buildSSRBundleActivityProgress.span);
|
|
252
252
|
pageRenderer = result.rendererPath;
|
|
253
253
|
|
|
254
|
-
if ("
|
|
254
|
+
if ("" === `4` && (0, _enginesHelpers.shouldGenerateEngines)()) {
|
|
255
255
|
// for now copy page-render to `.cache` so page-ssr module can require it as a sibling module
|
|
256
256
|
const outputDir = _path.default.join(program.directory, `.cache`, `page-ssr`);
|
|
257
257
|
|
|
@@ -260,7 +260,7 @@ module.exports = async function build(program) {
|
|
|
260
260
|
|
|
261
261
|
waitForCompilerCloseBuildHtml = result.waitForCompilerClose;
|
|
262
262
|
|
|
263
|
-
if ("
|
|
263
|
+
if ("" === `4` && (0, _enginesHelpers.shouldGenerateEngines)()) {
|
|
264
264
|
Promise.all(engineBundlingPromises).then(() => {
|
|
265
265
|
if (process.send) {
|
|
266
266
|
process.send({
|
|
@@ -274,7 +274,7 @@ module.exports = async function build(program) {
|
|
|
274
274
|
} // TODO Move to page-renderer
|
|
275
275
|
|
|
276
276
|
|
|
277
|
-
if ("
|
|
277
|
+
if ("" === `4`) {
|
|
278
278
|
const routesWebpackConfig = await (0, _webpackConfig.default)(program, program.directory, `build-ssr`, null, {
|
|
279
279
|
parentSpan: buildSSRBundleActivityProgress.span
|
|
280
280
|
});
|
|
@@ -302,7 +302,7 @@ module.exports = async function build(program) {
|
|
|
302
302
|
buildSSRBundleActivityProgress.end();
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
-
if ("
|
|
305
|
+
if ("" === `4` && (0, _enginesHelpers.shouldGenerateEngines)()) {
|
|
306
306
|
// well, tbf we should just generate this in `.cache` and avoid deleting it :shrug:
|
|
307
307
|
program.keepPageRenderer = true;
|
|
308
308
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/build.ts"],"names":["module","exports","build","program","process","env","VERBOSE","verbose","report","setVerbose","profile","warn","name","sitePackageJson","sitePath","directory","lastRun","Date","now","pid","publicDir","path","join","GATSBY_OPEN_TRACING_CONFIG_FILE","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","gatsbyNodeGraphQLFunction","workerPool","parentSpan","engineBundlingPromises","push","graphqlRunner","GraphQLRunner","store","collectStats","graphqlTracing","queryIds","pageQueryIds","filter","query","mode","waitForWorkerPoolRestart","Promise","resolve","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","graphql","buildActivityTimer","activityTimer","stats","waitForCompilerClose","result","hasWarnings","rawMessages","toJson","moduleTrace","warnings","err","panic","Stage","BuildJavascript","end","webpackCompilationHash","hash","getState","appDataUtil","exists","dispatch","type","payload","rewriteActivityTimer","write","isTrackingEnabled","bundleSizes","assets","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","actions","setProgramStatus","db","saveState","buildSSRBundleActivityProgress","pageRenderer","waitForCompilerCloseBuildHtml","BuildHTML","rendererPath","outputDir","fs","ensureDir","then","copyFile","all","send","action","routesWebpackConfig","reject","compiler","run","close","error","undefined","keepPageRenderer","toRegenerate","toDelete","pagesCount","length","totalPagesCount","pages","postBuildActivityTimer","info","uptime","finish","logPages","writeToFile","createdFilesPath","createdFilesContent","deletedFilesPath","deletedFilesContent","writeFile"],"mappings":"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","sourcesContent":["import path from \"path\"\nimport report from \"gatsby-cli/lib/reporter\"\nimport signalExit from \"signal-exit\"\nimport fs from \"fs-extra\"\nimport telemetry from \"gatsby-telemetry\"\nimport { updateSiteMetadata, isTruthy } from \"gatsby-core-utils\"\nimport {\n buildRenderer,\n buildHTMLPagesAndDeleteStaleArtifacts,\n IBuildArgs,\n} from \"./build-html\"\nimport { buildProductionBundle } from \"./build-javascript\"\nimport { bootstrap } from \"../bootstrap\"\nimport apiRunnerNode from \"../utils/api-runner-node\"\nimport { GraphQLRunner } from \"../query/graphql-runner\"\nimport { copyStaticDirs } from \"../utils/get-static-dir\"\nimport { initTracer, stopTracer } from \"../utils/tracer\"\nimport * as db from \"../redux/save-state\"\nimport { store } from \"../redux\"\nimport * as appDataUtil from \"../utils/app-data\"\nimport { flush as flushPendingPageDataWrites } from \"../utils/page-data\"\nimport {\n structureWebpackErrors,\n reportWebpackWarnings,\n} from \"../utils/webpack-error-utils\"\nimport {\n userGetsSevenDayFeedback,\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n showSevenDayFeedbackRequest,\n} from \"../utils/feedback\"\nimport { actions } from \"../redux/actions\"\nimport { waitUntilAllJobsComplete } from \"../utils/wait-until-jobs-complete\"\nimport { Stage } from \"./types\"\nimport {\n calculateDirtyQueries,\n runStaticQueries,\n runPageQueries,\n writeOutRequires,\n} from \"../services\"\nimport {\n markWebpackStatusAsPending,\n markWebpackStatusAsDone,\n} from \"../utils/webpack-status\"\nimport { showExperimentNotices } from \"../utils/show-experiment-notice\"\nimport {\n mergeWorkerState,\n runQueriesInWorkersQueue,\n} from \"../utils/worker/pool\"\nimport webpackConfig from \"../utils/webpack.config.js\"\nimport { webpack } from \"webpack\"\nimport { createGraphqlEngineBundle } from \"../schema/graphql-engine/bundle-webpack\"\nimport { createPageSSRBundle } from \"../utils/page-ssr-module/bundle-webpack\"\nimport { shouldGenerateEngines } from \"../utils/engines-helpers\"\n\nmodule.exports = async function build(program: IBuildArgs): Promise<void> {\n if (isTruthy(process.env.VERBOSE)) {\n program.verbose = true\n }\n report.setVerbose(program.verbose)\n\n if (program.profile) {\n report.warn(\n `React Profiling is enabled. This can have a performance impact. See https://www.gatsbyjs.org/docs/profiling-site-performance-with-react-profiler/#performance-impact`\n )\n }\n\n await updateSiteMetadata({\n name: program.sitePackageJson.name,\n sitePath: program.directory,\n lastRun: Date.now(),\n pid: process.pid,\n })\n\n markWebpackStatusAsPending()\n\n const publicDir = path.join(program.directory, `public`)\n initTracer(\n process.env.GATSBY_OPEN_TRACING_CONFIG_FILE || program.openTracingConfigFile\n )\n const buildActivity = report.phantomActivity(`build`)\n buildActivity.start()\n\n telemetry.trackCli(`BUILD_START`)\n signalExit(exitCode => {\n telemetry.trackCli(`BUILD_END`, {\n exitCode: exitCode as number | undefined,\n })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n const { gatsbyNodeGraphQLFunction, workerPool } = await bootstrap({\n program,\n parentSpan: buildSpan,\n })\n\n const engineBundlingPromises: Array<Promise<any>> = []\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // bundle graphql-engine\n engineBundlingPromises.push(createGraphqlEngineBundle())\n }\n\n const graphqlRunner = new GraphQLRunner(store, {\n collectStats: true,\n graphqlTracing: program.graphqlTracing,\n })\n\n const { queryIds } = await calculateDirtyQueries({ store })\n\n // Only run queries with mode SSG\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n queryIds.pageQueryIds = queryIds.pageQueryIds.filter(\n query => query.mode === `SSG`\n )\n }\n\n const waitForWorkerPoolRestart = Promise.resolve()\n if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {\n await runQueriesInWorkersQueue(workerPool, queryIds)\n // Jobs still might be running even though query running finished\n await waitUntilAllJobsComplete()\n // Restart worker pool before merging state to lower memory pressure while merging state\n // waitForWorkerPoolRestart = workerPool.restart()\n await mergeWorkerState(workerPool)\n } else {\n await runStaticQueries({\n queryIds,\n parentSpan: buildSpan,\n store,\n graphqlRunner,\n })\n\n await runPageQueries({\n queryIds,\n graphqlRunner,\n parentSpan: buildSpan,\n store,\n })\n }\n\n await writeOutRequires({\n store,\n parentSpan: buildSpan,\n })\n\n await apiRunnerNode(`onPreBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n\n // Copy files from the static directory to\n // an equivalent static directory within public.\n copyStaticDirs()\n\n const buildActivityTimer = report.activityTimer(\n `Building production JavaScript and CSS bundles`,\n { parentSpan: buildSpan }\n )\n buildActivityTimer.start()\n let stats\n let waitForCompilerClose\n try {\n const result = await buildProductionBundle(program, buildActivityTimer.span)\n stats = result.stats\n waitForCompilerClose = result.waitForCompilerClose\n\n if (stats.hasWarnings()) {\n const rawMessages = stats.toJson({ moduleTrace: false })\n reportWebpackWarnings(rawMessages.warnings, report)\n }\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // client bundle is produced so static query maps should be ready\n engineBundlingPromises.push(createPageSSRBundle())\n }\n\n const webpackCompilationHash = stats.hash\n if (\n webpackCompilationHash !== store.getState().webpackCompilationHash ||\n !appDataUtil.exists(publicDir)\n ) {\n store.dispatch({\n type: `SET_WEBPACK_COMPILATION_HASH`,\n payload: webpackCompilationHash,\n })\n\n const rewriteActivityTimer = report.activityTimer(\n `Rewriting compilation hashes`,\n {\n parentSpan: buildSpan,\n }\n )\n rewriteActivityTimer.start()\n\n await appDataUtil.write(publicDir, webpackCompilationHash)\n\n rewriteActivityTimer.end()\n }\n\n await flushPendingPageDataWrites(buildSpan)\n markWebpackStatusAsDone()\n\n if (telemetry.isTrackingEnabled()) {\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const bundleSizes = stats\n .toJson({ assets: true })\n .assets.filter(asset => asset.name.endsWith(`.js`))\n .map(asset => asset.size / 1000)\n const pageDataSizes = [...store.getState().pageDataStats.values()]\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n bundleStats: telemetry.aggregateStats(bundleSizes),\n pageDataStats: telemetry.aggregateStats(pageDataSizes),\n queryStats: graphqlRunner.getStats(),\n })\n }\n\n store.dispatch(actions.setProgramStatus(`BOOTSTRAP_QUERY_RUNNING_FINISHED`))\n\n await db.saveState()\n\n await waitUntilAllJobsComplete()\n\n // we need to save it again to make sure our latest state has been saved\n await db.saveState()\n\n const buildSSRBundleActivityProgress = report.activityTimer(\n `Building HTML renderer`,\n { parentSpan: buildSpan }\n )\n buildSSRBundleActivityProgress.start()\n let pageRenderer = ``\n let waitForCompilerCloseBuildHtml\n try {\n const result = await buildRenderer(\n program,\n Stage.BuildHTML,\n buildSSRBundleActivityProgress.span\n )\n pageRenderer = result.rendererPath\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // for now copy page-render to `.cache` so page-ssr module can require it as a sibling module\n const outputDir = path.join(program.directory, `.cache`, `page-ssr`)\n engineBundlingPromises.push(\n fs\n .ensureDir(outputDir)\n .then(() =>\n fs.copyFile(\n result.rendererPath,\n path.join(outputDir, `render-page.js`)\n )\n )\n )\n }\n waitForCompilerCloseBuildHtml = result.waitForCompilerClose\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n Promise.all(engineBundlingPromises).then(() => {\n if (process.send) {\n process.send({\n type: `LOG_ACTION`,\n action: {\n type: `ENGINES_READY`,\n },\n })\n }\n })\n }\n\n // TODO Move to page-renderer\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n const routesWebpackConfig = await webpackConfig(\n program,\n program.directory,\n `build-ssr`,\n null,\n { parentSpan: buildSSRBundleActivityProgress.span }\n )\n\n await new Promise((resolve, reject) => {\n const compiler = webpack(routesWebpackConfig)\n compiler.run(err => {\n if (err) {\n return void reject(err)\n }\n\n compiler.close(error => {\n if (error) {\n return void reject(error)\n }\n return void resolve(undefined)\n })\n\n return undefined\n })\n })\n }\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildHTML, err))\n } finally {\n buildSSRBundleActivityProgress.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // well, tbf we should just generate this in `.cache` and avoid deleting it :shrug:\n program.keepPageRenderer = true\n }\n\n await waitForWorkerPoolRestart\n\n const { toRegenerate, toDelete } =\n await buildHTMLPagesAndDeleteStaleArtifacts({\n program,\n pageRenderer,\n workerPool,\n buildSpan,\n })\n\n // const waitWorkerPoolEnd = Promise.all(workerPool.end())\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n pagesCount: toRegenerate.length, // number of html files that will be written\n totalPagesCount: store.getState().pages.size, // total number of pages\n })\n\n const postBuildActivityTimer = report.activityTimer(`onPostBuild`, {\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.start()\n await apiRunnerNode(`onPostBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: postBuildActivityTimer.span,\n })\n postBuildActivityTimer.end()\n\n // Wait for any jobs that were started in onPostBuild\n // This could occur due to queries being run which invoke sharp for instance\n await waitUntilAllJobsComplete()\n\n // try {\n // await waitWorkerPoolEnd\n // } catch (e) {\n // report.warn(`Error when closing WorkerPool: ${e.message}`)\n // }\n\n // Make sure we saved the latest state so we have all jobs cached\n await db.saveState()\n\n await Promise.all([waitForCompilerClose, waitForCompilerCloseBuildHtml])\n\n report.info(`Done building in ${process.uptime()} sec`)\n\n buildSpan.finish()\n await stopTracer()\n buildActivity.end()\n\n if (program.logPages) {\n if (toRegenerate.length) {\n report.info(\n `Built pages:\\n${toRegenerate\n .map(path => `Updated page: ${path}`)\n .join(`\\n`)}`\n )\n }\n\n if (toDelete.length) {\n report.info(\n `Deleted pages:\\n${toDelete\n .map(path => `Deleted page: ${path}`)\n .join(`\\n`)}`\n )\n }\n }\n\n if (program.writeToFile) {\n const createdFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `newPages.txt`\n )\n const createdFilesContent = toRegenerate.length\n ? `${toRegenerate.join(`\\n`)}\\n`\n : ``\n\n const deletedFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `deletedPages.txt`\n )\n const deletedFilesContent = toDelete.length\n ? `${toDelete.join(`\\n`)}\\n`\n : ``\n\n await fs.writeFile(createdFilesPath, createdFilesContent, `utf8`)\n report.info(`.cache/newPages.txt created`)\n\n await fs.writeFile(deletedFilesPath, deletedFilesContent, `utf8`)\n report.info(`.cache/deletedPages.txt created`)\n }\n\n await Promise.all(engineBundlingPromises)\n\n showExperimentNotices()\n\n if (await userGetsSevenDayFeedback()) {\n showSevenDayFeedbackRequest()\n } else if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n}\n"],"file":"build.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/build.ts"],"names":["module","exports","build","program","process","env","VERBOSE","verbose","report","setVerbose","profile","warn","name","sitePackageJson","sitePath","directory","lastRun","Date","now","pid","publicDir","path","join","GATSBY_OPEN_TRACING_CONFIG_FILE","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","gatsbyNodeGraphQLFunction","workerPool","parentSpan","engineBundlingPromises","push","graphqlRunner","GraphQLRunner","store","collectStats","graphqlTracing","queryIds","pageQueryIds","filter","query","mode","waitForWorkerPoolRestart","Promise","resolve","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","graphql","buildActivityTimer","activityTimer","stats","waitForCompilerClose","result","hasWarnings","rawMessages","toJson","moduleTrace","warnings","err","panic","Stage","BuildJavascript","end","webpackCompilationHash","hash","getState","appDataUtil","exists","dispatch","type","payload","rewriteActivityTimer","write","isTrackingEnabled","bundleSizes","assets","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","actions","setProgramStatus","db","saveState","buildSSRBundleActivityProgress","pageRenderer","waitForCompilerCloseBuildHtml","BuildHTML","rendererPath","outputDir","fs","ensureDir","then","copyFile","all","send","action","routesWebpackConfig","reject","compiler","run","close","error","undefined","keepPageRenderer","toRegenerate","toDelete","pagesCount","length","totalPagesCount","pages","postBuildActivityTimer","info","uptime","finish","logPages","writeToFile","createdFilesPath","createdFilesContent","deletedFilesPath","deletedFilesContent","writeFile"],"mappings":"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","sourcesContent":["import path from \"path\"\nimport report from \"gatsby-cli/lib/reporter\"\nimport signalExit from \"signal-exit\"\nimport fs from \"fs-extra\"\nimport telemetry from \"gatsby-telemetry\"\nimport { updateSiteMetadata, isTruthy } from \"gatsby-core-utils\"\nimport {\n buildRenderer,\n buildHTMLPagesAndDeleteStaleArtifacts,\n IBuildArgs,\n} from \"./build-html\"\nimport { buildProductionBundle } from \"./build-javascript\"\nimport { bootstrap } from \"../bootstrap\"\nimport apiRunnerNode from \"../utils/api-runner-node\"\nimport { GraphQLRunner } from \"../query/graphql-runner\"\nimport { copyStaticDirs } from \"../utils/get-static-dir\"\nimport { initTracer, stopTracer } from \"../utils/tracer\"\nimport * as db from \"../redux/save-state\"\nimport { store } from \"../redux\"\nimport * as appDataUtil from \"../utils/app-data\"\nimport { flush as flushPendingPageDataWrites } from \"../utils/page-data\"\nimport {\n structureWebpackErrors,\n reportWebpackWarnings,\n} from \"../utils/webpack-error-utils\"\nimport {\n userGetsSevenDayFeedback,\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n showSevenDayFeedbackRequest,\n} from \"../utils/feedback\"\nimport { actions } from \"../redux/actions\"\nimport { waitUntilAllJobsComplete } from \"../utils/wait-until-jobs-complete\"\nimport { Stage } from \"./types\"\nimport {\n calculateDirtyQueries,\n runStaticQueries,\n runPageQueries,\n writeOutRequires,\n} from \"../services\"\nimport {\n markWebpackStatusAsPending,\n markWebpackStatusAsDone,\n} from \"../utils/webpack-status\"\nimport { showExperimentNotices } from \"../utils/show-experiment-notice\"\nimport {\n mergeWorkerState,\n runQueriesInWorkersQueue,\n} from \"../utils/worker/pool\"\nimport webpackConfig from \"../utils/webpack.config.js\"\nimport { webpack } from \"webpack\"\nimport { createGraphqlEngineBundle } from \"../schema/graphql-engine/bundle-webpack\"\nimport { createPageSSRBundle } from \"../utils/page-ssr-module/bundle-webpack\"\nimport { shouldGenerateEngines } from \"../utils/engines-helpers\"\n\nmodule.exports = async function build(program: IBuildArgs): Promise<void> {\n if (isTruthy(process.env.VERBOSE)) {\n program.verbose = true\n }\n report.setVerbose(program.verbose)\n\n if (program.profile) {\n report.warn(\n `React Profiling is enabled. This can have a performance impact. See https://www.gatsbyjs.org/docs/profiling-site-performance-with-react-profiler/#performance-impact`\n )\n }\n\n await updateSiteMetadata({\n name: program.sitePackageJson.name,\n sitePath: program.directory,\n lastRun: Date.now(),\n pid: process.pid,\n })\n\n markWebpackStatusAsPending()\n\n const publicDir = path.join(program.directory, `public`)\n initTracer(\n process.env.GATSBY_OPEN_TRACING_CONFIG_FILE || program.openTracingConfigFile\n )\n const buildActivity = report.phantomActivity(`build`)\n buildActivity.start()\n\n telemetry.trackCli(`BUILD_START`)\n signalExit(exitCode => {\n telemetry.trackCli(`BUILD_END`, {\n exitCode: exitCode as number | undefined,\n })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n const { gatsbyNodeGraphQLFunction, workerPool } = await bootstrap({\n program,\n parentSpan: buildSpan,\n })\n\n const engineBundlingPromises: Array<Promise<any>> = []\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // bundle graphql-engine\n engineBundlingPromises.push(createGraphqlEngineBundle())\n }\n\n const graphqlRunner = new GraphQLRunner(store, {\n collectStats: true,\n graphqlTracing: program.graphqlTracing,\n })\n\n const { queryIds } = await calculateDirtyQueries({ store })\n\n // Only run queries with mode SSG\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n queryIds.pageQueryIds = queryIds.pageQueryIds.filter(\n query => query.mode === `SSG`\n )\n }\n\n const waitForWorkerPoolRestart = Promise.resolve()\n if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {\n await runQueriesInWorkersQueue(workerPool, queryIds)\n // Jobs still might be running even though query running finished\n await waitUntilAllJobsComplete()\n // Restart worker pool before merging state to lower memory pressure while merging state\n // waitForWorkerPoolRestart = workerPool.restart()\n await mergeWorkerState(workerPool)\n } else {\n await runStaticQueries({\n queryIds,\n parentSpan: buildSpan,\n store,\n graphqlRunner,\n })\n\n await runPageQueries({\n queryIds,\n graphqlRunner,\n parentSpan: buildSpan,\n store,\n })\n }\n\n await writeOutRequires({\n store,\n parentSpan: buildSpan,\n })\n\n await apiRunnerNode(`onPreBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n\n // Copy files from the static directory to\n // an equivalent static directory within public.\n copyStaticDirs()\n\n const buildActivityTimer = report.activityTimer(\n `Building production JavaScript and CSS bundles`,\n { parentSpan: buildSpan }\n )\n buildActivityTimer.start()\n let stats\n let waitForCompilerClose\n try {\n const result = await buildProductionBundle(program, buildActivityTimer.span)\n stats = result.stats\n waitForCompilerClose = result.waitForCompilerClose\n\n if (stats.hasWarnings()) {\n const rawMessages = stats.toJson({ moduleTrace: false })\n reportWebpackWarnings(rawMessages.warnings, report)\n }\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // client bundle is produced so static query maps should be ready\n engineBundlingPromises.push(createPageSSRBundle())\n }\n\n const webpackCompilationHash = stats.hash\n if (\n webpackCompilationHash !== store.getState().webpackCompilationHash ||\n !appDataUtil.exists(publicDir)\n ) {\n store.dispatch({\n type: `SET_WEBPACK_COMPILATION_HASH`,\n payload: webpackCompilationHash,\n })\n\n const rewriteActivityTimer = report.activityTimer(\n `Rewriting compilation hashes`,\n {\n parentSpan: buildSpan,\n }\n )\n rewriteActivityTimer.start()\n\n await appDataUtil.write(publicDir, webpackCompilationHash)\n\n rewriteActivityTimer.end()\n }\n\n await flushPendingPageDataWrites(buildSpan)\n markWebpackStatusAsDone()\n\n if (telemetry.isTrackingEnabled()) {\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const bundleSizes = stats\n .toJson({ assets: true })\n .assets.filter(asset => asset.name.endsWith(`.js`))\n .map(asset => asset.size / 1000)\n const pageDataSizes = [...store.getState().pageDataStats.values()]\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n bundleStats: telemetry.aggregateStats(bundleSizes),\n pageDataStats: telemetry.aggregateStats(pageDataSizes),\n queryStats: graphqlRunner.getStats(),\n })\n }\n\n store.dispatch(actions.setProgramStatus(`BOOTSTRAP_QUERY_RUNNING_FINISHED`))\n\n await db.saveState()\n\n await waitUntilAllJobsComplete()\n\n // we need to save it again to make sure our latest state has been saved\n await db.saveState()\n\n const buildSSRBundleActivityProgress = report.activityTimer(\n `Building HTML renderer`,\n { parentSpan: buildSpan }\n )\n buildSSRBundleActivityProgress.start()\n let pageRenderer = ``\n let waitForCompilerCloseBuildHtml\n try {\n const result = await buildRenderer(\n program,\n Stage.BuildHTML,\n buildSSRBundleActivityProgress.span\n )\n pageRenderer = result.rendererPath\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // for now copy page-render to `.cache` so page-ssr module can require it as a sibling module\n const outputDir = path.join(program.directory, `.cache`, `page-ssr`)\n engineBundlingPromises.push(\n fs\n .ensureDir(outputDir)\n .then(() =>\n fs.copyFile(\n result.rendererPath,\n path.join(outputDir, `render-page.js`)\n )\n )\n )\n }\n waitForCompilerCloseBuildHtml = result.waitForCompilerClose\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n Promise.all(engineBundlingPromises).then(() => {\n if (process.send) {\n process.send({\n type: `LOG_ACTION`,\n action: {\n type: `ENGINES_READY`,\n },\n })\n }\n })\n }\n\n // TODO Move to page-renderer\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n const routesWebpackConfig = await webpackConfig(\n program,\n program.directory,\n `build-ssr`,\n null,\n { parentSpan: buildSSRBundleActivityProgress.span }\n )\n\n await new Promise((resolve, reject) => {\n const compiler = webpack(routesWebpackConfig)\n compiler.run(err => {\n if (err) {\n return void reject(err)\n }\n\n compiler.close(error => {\n if (error) {\n return void reject(error)\n }\n return void resolve(undefined)\n })\n\n return undefined\n })\n })\n }\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildHTML, err))\n } finally {\n buildSSRBundleActivityProgress.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // well, tbf we should just generate this in `.cache` and avoid deleting it :shrug:\n program.keepPageRenderer = true\n }\n\n await waitForWorkerPoolRestart\n\n const { toRegenerate, toDelete } =\n await buildHTMLPagesAndDeleteStaleArtifacts({\n program,\n pageRenderer,\n workerPool,\n buildSpan,\n })\n\n // const waitWorkerPoolEnd = Promise.all(workerPool.end())\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n pagesCount: toRegenerate.length, // number of html files that will be written\n totalPagesCount: store.getState().pages.size, // total number of pages\n })\n\n const postBuildActivityTimer = report.activityTimer(`onPostBuild`, {\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.start()\n await apiRunnerNode(`onPostBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: postBuildActivityTimer.span,\n })\n postBuildActivityTimer.end()\n\n // Wait for any jobs that were started in onPostBuild\n // This could occur due to queries being run which invoke sharp for instance\n await waitUntilAllJobsComplete()\n\n // try {\n // await waitWorkerPoolEnd\n // } catch (e) {\n // report.warn(`Error when closing WorkerPool: ${e.message}`)\n // }\n\n // Make sure we saved the latest state so we have all jobs cached\n await db.saveState()\n\n await Promise.all([waitForCompilerClose, waitForCompilerCloseBuildHtml])\n\n report.info(`Done building in ${process.uptime()} sec`)\n\n buildSpan.finish()\n await stopTracer()\n buildActivity.end()\n\n if (program.logPages) {\n if (toRegenerate.length) {\n report.info(\n `Built pages:\\n${toRegenerate\n .map(path => `Updated page: ${path}`)\n .join(`\\n`)}`\n )\n }\n\n if (toDelete.length) {\n report.info(\n `Deleted pages:\\n${toDelete\n .map(path => `Deleted page: ${path}`)\n .join(`\\n`)}`\n )\n }\n }\n\n if (program.writeToFile) {\n const createdFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `newPages.txt`\n )\n const createdFilesContent = toRegenerate.length\n ? `${toRegenerate.join(`\\n`)}\\n`\n : ``\n\n const deletedFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `deletedPages.txt`\n )\n const deletedFilesContent = toDelete.length\n ? `${toDelete.join(`\\n`)}\\n`\n : ``\n\n await fs.writeFile(createdFilesPath, createdFilesContent, `utf8`)\n report.info(`.cache/newPages.txt created`)\n\n await fs.writeFile(deletedFilesPath, deletedFilesContent, `utf8`)\n report.info(`.cache/deletedPages.txt created`)\n }\n\n await Promise.all(engineBundlingPromises)\n\n showExperimentNotices()\n\n if (await userGetsSevenDayFeedback()) {\n showSevenDayFeedbackRequest()\n } else if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n}\n"],"file":"build.js"}
|