Current progress
This commit is contained in:
parent
1ce6b2ac85
commit
b82e42500f
12 changed files with 133 additions and 66 deletions
|
@ -71,6 +71,7 @@
|
||||||
"esbuild": "^0.13.6",
|
"esbuild": "^0.13.6",
|
||||||
"estree-util-value-to-estree": "^1.2.0",
|
"estree-util-value-to-estree": "^1.2.0",
|
||||||
"fast-xml-parser": "^3.19.0",
|
"fast-xml-parser": "^3.19.0",
|
||||||
|
"gzip-size": "^6.0.0",
|
||||||
"html-entities": "^2.3.2",
|
"html-entities": "^2.3.2",
|
||||||
"htmlparser2": "^7.1.2",
|
"htmlparser2": "^7.1.2",
|
||||||
"kleur": "^4.1.4",
|
"kleur": "^4.1.4",
|
||||||
|
@ -78,9 +79,11 @@
|
||||||
"morphdom": "^2.6.1",
|
"morphdom": "^2.6.1",
|
||||||
"node-fetch": "^2.6.5",
|
"node-fetch": "^2.6.5",
|
||||||
"path-to-regexp": "^6.2.0",
|
"path-to-regexp": "^6.2.0",
|
||||||
|
"pretty-bytes": "^5.6.0",
|
||||||
"prismjs": "^1.25.0",
|
"prismjs": "^1.25.0",
|
||||||
"remark-slug": "^7.0.0",
|
"remark-slug": "^7.0.0",
|
||||||
"resolve": "^1.20.0",
|
"resolve": "^1.20.0",
|
||||||
|
"rollup-plugin-terser": "^7.0.2",
|
||||||
"sass": "^1.43.3",
|
"sass": "^1.43.3",
|
||||||
"semver": "^7.3.5",
|
"semver": "^7.3.5",
|
||||||
"send": "^0.17.1",
|
"send": "^0.17.1",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import type { ScriptInfo } from './astro-core';
|
import type { ScriptInfo } from './astro-core';
|
||||||
|
import type { Response as FetchResponse } from 'node-fetch';
|
||||||
|
|
||||||
/** Entire output of `astro build`, stored in memory */
|
/** Entire output of `astro build`, stored in memory */
|
||||||
export interface BuildOutput {
|
export interface BuildOutput {
|
||||||
|
@ -32,4 +33,6 @@ export interface PageDependencies {
|
||||||
images: Set<string>;
|
images: Set<string>;
|
||||||
/** Async hoisted Javascript */
|
/** Async hoisted Javascript */
|
||||||
hoistedJS: Map<string, ScriptInfo>;
|
hoistedJS: Map<string, ScriptInfo>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type ServerFetch = (pathName: string) => Promise<FetchResponse>;
|
|
@ -1,8 +1,8 @@
|
||||||
import type { InputOptions, OutputOptions, OutputChunk } from 'rollup';
|
import type { InputOptions, OutputOptions, OutputChunk } from 'rollup';
|
||||||
import type { AstroConfig, ScriptInfo } from '../../../@types/astro-core';
|
import type { AstroConfig, ScriptInfo, ScriptInfoInline } from '../../../@types/astro-core';
|
||||||
//import type { AstroConfig, BundleMap, BuildOutput, ScriptInfo, InlineScriptInfo } from '../../../@types/astro-build';
|
import type { BundleMap, BuildOutput, ServerFetch } from '../../../@types/astro-build';
|
||||||
import type { AstroRuntime } from '../../runtime';
|
|
||||||
import type { LogOptions } from '../../logger.js';
|
import type { LogOptions } from '../../logger.js';
|
||||||
|
import type { ViteDevServer } from 'vite';
|
||||||
|
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import { rollup } from 'rollup';
|
import { rollup } from 'rollup';
|
||||||
|
@ -14,7 +14,8 @@ import path from 'path';
|
||||||
|
|
||||||
interface BundleOptions {
|
interface BundleOptions {
|
||||||
dist: URL;
|
dist: URL;
|
||||||
astroRuntime: AstroRuntime;
|
fetchPath: ServerFetch;
|
||||||
|
viteServer: ViteDevServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Collect JS imports from build output */
|
/** Collect JS imports from build output */
|
||||||
|
@ -32,18 +33,14 @@ function pageUrlToVirtualJSEntry(pageUrl: string) {
|
||||||
|
|
||||||
export async function bundleHoistedJS({
|
export async function bundleHoistedJS({
|
||||||
buildState,
|
buildState,
|
||||||
astroConfig,
|
fetchPath,
|
||||||
logging,
|
|
||||||
depTree,
|
depTree,
|
||||||
dist,
|
dist
|
||||||
runtime,
|
|
||||||
}: {
|
}: {
|
||||||
astroConfig: AstroConfig;
|
|
||||||
buildState: BuildOutput;
|
buildState: BuildOutput;
|
||||||
logging: LogOptions;
|
|
||||||
depTree: BundleMap;
|
depTree: BundleMap;
|
||||||
dist: URL;
|
dist: URL;
|
||||||
runtime: AstroRuntime;
|
fetchPath: ServerFetch;
|
||||||
}) {
|
}) {
|
||||||
const sortedPages = Object.keys(depTree); // these were scanned in parallel; sort to create somewhat deterministic order
|
const sortedPages = Object.keys(depTree); // these were scanned in parallel; sort to create somewhat deterministic order
|
||||||
sortedPages.sort((a, b) => a.localeCompare(b, 'en', { numeric: true }));
|
sortedPages.sort((a, b) => a.localeCompare(b, 'en', { numeric: true }));
|
||||||
|
@ -104,17 +101,18 @@ export async function bundleHoistedJS({
|
||||||
},
|
},
|
||||||
async load(id: string) {
|
async load(id: string) {
|
||||||
if (virtualScripts.has(id)) {
|
if (virtualScripts.has(id)) {
|
||||||
let info = virtualScripts.get(id) as InlineScriptInfo;
|
let info = virtualScripts.get(id) as ScriptInfoInline;
|
||||||
return info.content;
|
return info.content;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await runtime.load(id);
|
// TODO replace with fetch
|
||||||
|
const result = await fetchPath(id);
|
||||||
|
|
||||||
if (result.statusCode !== 200) {
|
if (!result.ok) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.contents.toString('utf-8');
|
return await result.text();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -181,7 +179,7 @@ export async function bundleHoistedJS({
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Bundle JS action */
|
/** Bundle JS action */
|
||||||
export async function bundleJS(imports: Set<string>, { astroRuntime, dist }: BundleOptions): Promise<BundleStatsMap> {
|
export async function bundleJS(imports: Set<string>, { fetchPath, dist }: BundleOptions): Promise<BundleStatsMap> {
|
||||||
const ROOT = 'astro:root';
|
const ROOT = 'astro:root';
|
||||||
const validImports = [...imports].filter((url) => IS_ASTRO_FILE_URL.test(url));
|
const validImports = [...imports].filter((url) => IS_ASTRO_FILE_URL.test(url));
|
||||||
const root = `
|
const root = `
|
||||||
|
@ -213,13 +211,13 @@ export async function bundleJS(imports: Set<string>, { astroRuntime, dist }: Bun
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await astroRuntime.load(id);
|
const result = await fetchPath(id);
|
||||||
|
|
||||||
if (result.statusCode !== 200) {
|
if (!result.ok) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.contents.toString('utf-8');
|
return await result.text();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
import type { AstroConfig, RouteData, RuntimeMode, ScriptInfo } from '../../@types/astro-core';
|
import type { AstroConfig, RouteCache, RouteData, RuntimeMode, ScriptInfo } from '../../@types/astro-core';
|
||||||
import type { BuildOutput, BundleMap, PageDependencies } from '../../@types/astro-build';
|
import type { BuildOutput, BundleMap, PageDependencies, ServerFetch } from '../../@types/astro-build';
|
||||||
|
import type { LogOptions } from '../logger';
|
||||||
|
|
||||||
import cheerio from 'cheerio';
|
import cheerio from 'cheerio';
|
||||||
|
import connect from 'connect';
|
||||||
import del from 'del';
|
import del from 'del';
|
||||||
import eslexer from 'es-module-lexer';
|
import * as eslexer from 'es-module-lexer';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import { bold, green, red, underline, yellow } from 'kleur/colors';
|
import { bold, green, red, underline, yellow } from 'kleur/colors';
|
||||||
import mime from 'mime';
|
import mime from 'mime';
|
||||||
|
@ -13,6 +15,7 @@ import glob from 'tiny-glob';
|
||||||
import hash from 'shorthash';
|
import hash from 'shorthash';
|
||||||
import srcsetParse from 'srcset-parse';
|
import srcsetParse from 'srcset-parse';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
|
import fetch from 'node-fetch';
|
||||||
|
|
||||||
import { bundleCSS } from './bundle/css.js';
|
import { bundleCSS } from './bundle/css.js';
|
||||||
import { bundleJS, bundleHoistedJS, collectJSImports } from './bundle/js.js';
|
import { bundleJS, bundleHoistedJS, collectJSImports } from './bundle/js.js';
|
||||||
|
@ -20,7 +23,6 @@ import { buildStaticPage, getStaticPathsForPage } from './page.js';
|
||||||
import { generateSitemap } from './sitemap.js';
|
import { generateSitemap } from './sitemap.js';
|
||||||
import { collectBundleStats, logURLStats, mapBundleStatsToURLStats } from './stats.js';
|
import { collectBundleStats, logURLStats, mapBundleStatsToURLStats } from './stats.js';
|
||||||
import { getDistPath, stopTimer } from './util.js';
|
import { getDistPath, stopTimer } from './util.js';
|
||||||
import type { LogOptions } from '../logger';
|
|
||||||
import { debug, defaultLogDestination, defaultLogLevel, error, info, warn } from '../logger.js';
|
import { debug, defaultLogDestination, defaultLogLevel, error, info, warn } from '../logger.js';
|
||||||
import { createVite } from '../create-vite.js';
|
import { createVite } from '../create-vite.js';
|
||||||
import vite, { ViteDevServer } from '../vite.js';
|
import vite, { ViteDevServer } from '../vite.js';
|
||||||
|
@ -39,17 +41,18 @@ function isRemoteOrEmbedded(url: string) {
|
||||||
return url.startsWith('http://') || url.startsWith('https://') || url.startsWith('//') || url.startsWith('data:');
|
return url.startsWith('http://') || url.startsWith('https://') || url.startsWith('//') || url.startsWith('data:');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface BuildOptions {
|
||||||
|
logging: LogOptions;
|
||||||
|
}
|
||||||
|
|
||||||
/** The primary build action */
|
/** The primary build action */
|
||||||
export async function build(astroConfig: AstroConfig, logging: LogOptions = defaultLogging): Promise<0 | 1> {
|
export default async function build(astroConfig: AstroConfig, options: BuildOptions = { logging: defaultLogging }): Promise<0 | 1> {
|
||||||
const { projectRoot } = astroConfig;
|
const { projectRoot } = astroConfig;
|
||||||
|
const { logging } = options;
|
||||||
const buildState: BuildOutput = {};
|
const buildState: BuildOutput = {};
|
||||||
const depTree: BundleMap = {};
|
const depTree: BundleMap = {};
|
||||||
const timer: Record<string, number> = {};
|
const timer: Record<string, number> = {};
|
||||||
|
const routeCache: RouteCache = {};
|
||||||
const runtimeLogging: LogOptions = {
|
|
||||||
level: 'error',
|
|
||||||
dest: defaultLogDestination,
|
|
||||||
};
|
|
||||||
|
|
||||||
// warn users if missing config item in build that may result in broken SEO (can’t disable, as they should provide this)
|
// warn users if missing config item in build that may result in broken SEO (can’t disable, as they should provide this)
|
||||||
if (!astroConfig.buildOptions.site) {
|
if (!astroConfig.buildOptions.site) {
|
||||||
|
@ -69,7 +72,17 @@ export async function build(astroConfig: AstroConfig, logging: LogOptions = defa
|
||||||
},
|
},
|
||||||
{ astroConfig, logging }
|
{ astroConfig, logging }
|
||||||
);
|
);
|
||||||
|
const app = connect();
|
||||||
const viteServer = await vite.createServer(viteConfig);
|
const viteServer = await vite.createServer(viteConfig);
|
||||||
|
app.use(viteServer.middlewares);
|
||||||
|
const port = astroConfig.devOptions.port;
|
||||||
|
const origin = astroConfig.buildOptions.site ? new URL(astroConfig.buildOptions.site).origin : `http://localhost:${port}`;
|
||||||
|
await new Promise<void>(resolve => {
|
||||||
|
app.listen(port, () => {
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const fetchPath: ServerFetch = (pathName: string) => fetch(new URL(pathName, `http://localhost:${port}`).toString());
|
||||||
|
|
||||||
const manifest = createRouteManifest({ config: astroConfig });
|
const manifest = createRouteManifest({ config: astroConfig });
|
||||||
|
|
||||||
|
@ -120,9 +133,12 @@ export async function build(astroConfig: AstroConfig, logging: LogOptions = defa
|
||||||
await buildStaticPage({
|
await buildStaticPage({
|
||||||
astroConfig,
|
astroConfig,
|
||||||
buildState,
|
buildState,
|
||||||
|
logging,
|
||||||
|
origin,
|
||||||
route,
|
route,
|
||||||
path: p,
|
path: p,
|
||||||
astroRuntime,
|
routeCache,
|
||||||
|
viteServer
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -146,6 +162,7 @@ ${stack}
|
||||||
} else {
|
} else {
|
||||||
error(logging, 'build', e.message);
|
error(logging, 'build', e.message);
|
||||||
}
|
}
|
||||||
|
console.error(e); // TODO REMOVE
|
||||||
error(logging, 'build', red('✕ building pages failed!'));
|
error(logging, 'build', red('✕ building pages failed!'));
|
||||||
|
|
||||||
await viteServer.close();
|
await viteServer.close();
|
||||||
|
@ -172,22 +189,24 @@ ${stack}
|
||||||
for (const url of [...pageDeps.js, ...pageDeps.css, ...pageDeps.images]) {
|
for (const url of [...pageDeps.js, ...pageDeps.css, ...pageDeps.images]) {
|
||||||
if (!buildState[url])
|
if (!buildState[url])
|
||||||
scanPromises.push(
|
scanPromises.push(
|
||||||
astroRuntime.load(url).then((result: LoadResult) => {
|
fetchPath(url).then(async (result) => {
|
||||||
if (result.statusCode === 404) {
|
if (result.status === 404) {
|
||||||
if (url.startsWith('/_astro/')) {
|
if (url.startsWith('/_astro/')) {
|
||||||
throw new Error(`${buildState[id].srcPath.href}: could not find file "${url}".`);
|
throw new Error(`${buildState[id].srcPath.href}: could not find file "${url}".`);
|
||||||
}
|
}
|
||||||
warn(logging, 'build', `${buildState[id].srcPath.href}: could not find file "${url}". Marked as external.`);
|
warn(logging, 'build', `${buildState[id].srcPath.href}: could not find file "${url}". Marked as external.`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (result.statusCode !== 200) {
|
if (result.status !== 200) {
|
||||||
// there shouldn’t be a build error here
|
// there shouldn’t be a build error here
|
||||||
throw (result as any).error || new Error(`unexpected ${result.statusCode} response from "${url}".`);
|
throw (result as any).error || new Error(`unexpected ${result.status} response from "${url}".`);
|
||||||
}
|
}
|
||||||
|
let contentType = result.headers.get('content-type');
|
||||||
|
let buffer = Buffer.from(await result.arrayBuffer());
|
||||||
buildState[url] = {
|
buildState[url] = {
|
||||||
srcPath: new URL(url, projectRoot),
|
srcPath: new URL(url, projectRoot),
|
||||||
contents: result.contents,
|
contents: buffer,
|
||||||
contentType: result.contentType || mime.getType(url) || '',
|
contentType: contentType || mime.getType(url) || '',
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
@ -206,7 +225,7 @@ ${stack}
|
||||||
bundleCSS({ buildState, astroConfig, logging, depTree }).then(() => {
|
bundleCSS({ buildState, astroConfig, logging, depTree }).then(() => {
|
||||||
debug(logging, 'build', `bundled CSS [${stopTimer(timer.prebundleCSS)}]`);
|
debug(logging, 'build', `bundled CSS [${stopTimer(timer.prebundleCSS)}]`);
|
||||||
}),
|
}),
|
||||||
bundleHoistedJS({ buildState, astroConfig, logging, depTree, runtime: astroRuntime, dist: astroConfig.dist }),
|
bundleHoistedJS({ buildState, depTree, fetchPath, dist: astroConfig.dist }),
|
||||||
// TODO: optimize images?
|
// TODO: optimize images?
|
||||||
]);
|
]);
|
||||||
// TODO: minify HTML?
|
// TODO: minify HTML?
|
||||||
|
@ -284,7 +303,7 @@ ${stack}
|
||||||
info(logging, 'build', yellow(`! bundling...`));
|
info(logging, 'build', yellow(`! bundling...`));
|
||||||
if (jsImports.size > 0) {
|
if (jsImports.size > 0) {
|
||||||
timer.bundleJS = performance.now();
|
timer.bundleJS = performance.now();
|
||||||
const jsStats = await bundleJS(jsImports, { dist: astroConfig.dist, astroRuntime });
|
const jsStats = await bundleJS(jsImports, { dist: astroConfig.dist, fetchPath, viteServer });
|
||||||
mapBundleStatsToURLStats({ urlStats, depTree, bundleStats: jsStats });
|
mapBundleStatsToURLStats({ urlStats, depTree, bundleStats: jsStats });
|
||||||
debug(logging, 'build', `bundled JS [${stopTimer(timer.bundleJS)}]`);
|
debug(logging, 'build', `bundled JS [${stopTimer(timer.bundleJS)}]`);
|
||||||
info(logging, 'build', green(`✔`), 'bundling complete.');
|
info(logging, 'build', green(`✔`), 'bundling complete.');
|
||||||
|
@ -294,12 +313,12 @@ ${stack}
|
||||||
* 6. Print stats
|
* 6. Print stats
|
||||||
*/
|
*/
|
||||||
logURLStats(logging, urlStats);
|
logURLStats(logging, urlStats);
|
||||||
await astroRuntime.shutdown();
|
await viteServer.close();
|
||||||
info(logging, 'build', bold(green('▶ Build Complete!')));
|
info(logging, 'build', bold(green('▶ Build Complete!')));
|
||||||
return 0;
|
return 0;
|
||||||
} catch (err) {
|
} catch (err: any) {
|
||||||
error(logging, 'build', err.message);
|
error(logging, 'build', err.message);
|
||||||
await astroRuntime.shutdown();
|
await viteServer.close();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import type { AstroConfig, RouteData } from '../../@types/astro-core';
|
import type { AstroConfig, RouteCache, RouteData } from '../../@types/astro-core';
|
||||||
import type { BuildOutput } from '../../@types/astro-build';
|
import type { BuildOutput } from '../../@types/astro-build';
|
||||||
import type { ViteDevServer } from '../vite';
|
import type { ViteDevServer } from '../vite';
|
||||||
|
import type { LogOptions } from '../logger';
|
||||||
import _path from 'path';
|
import _path from 'path';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import { LogOptions } from '../logger';
|
|
||||||
import { loadModule, ssr } from '../ssr/index.js';
|
import { loadModule, ssr } from '../ssr/index.js';
|
||||||
import { validateGetStaticPathsModule, validateGetStaticPathsResult } from '../ssr/routing.js';
|
import { validateGetStaticPathsModule, validateGetStaticPathsResult } from '../ssr/routing.js';
|
||||||
import { generatePaginateFunction } from './paginate.js';
|
import { generatePaginateFunction } from './paginate.js';
|
||||||
|
@ -18,15 +18,19 @@ function convertMatchToLocation(routeMatch: RouteData, astroConfig: AstroConfig)
|
||||||
const url = new URL(`./${routeMatch.component}`, astroConfig.projectRoot);
|
const url = new URL(`./${routeMatch.component}`, astroConfig.projectRoot);
|
||||||
return {
|
return {
|
||||||
fileURL: url,
|
fileURL: url,
|
||||||
snowpackURL: `/_astro/${routeMatch.component}.js`,
|
snowpackURL: `/_astro/${routeMatch.component}.js`, // TODO remove
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PageBuildOptions {
|
interface PageBuildOptions {
|
||||||
astroConfig: AstroConfig;
|
astroConfig: AstroConfig;
|
||||||
buildState: BuildOutput;
|
buildState: BuildOutput;
|
||||||
|
logging: LogOptions;
|
||||||
|
origin: string;
|
||||||
path: string;
|
path: string;
|
||||||
route: RouteData;
|
route: RouteData;
|
||||||
|
routeCache: RouteCache;
|
||||||
|
viteServer: ViteDevServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Build dynamic page */
|
/** Build dynamic page */
|
||||||
|
@ -70,11 +74,11 @@ function formatOutFile(path: string, pageUrlFormat: AstroConfig['buildOptions'][
|
||||||
return `${path}.html`;
|
return `${path}.html`;
|
||||||
}
|
}
|
||||||
/** Build static page */
|
/** Build static page */
|
||||||
export async function buildStaticPage({ astroConfig, buildState, path, route }: PageBuildOptions): Promise<void> {
|
export async function buildStaticPage({ astroConfig, buildState, logging, origin, path, route, routeCache, viteServer }: PageBuildOptions): Promise<void> {
|
||||||
const location = convertMatchToLocation(route, astroConfig);
|
const location = convertMatchToLocation(route, astroConfig);
|
||||||
const normalizedPath = astroConfig.devOptions.trailingSlash === 'never' ? path : path.endsWith('/') ? path : `${path}/`;
|
//const normalizedPath = astroConfig.devOptions.trailingSlash === 'never' ? path : path.endsWith('/') ? path : `${path}/`;
|
||||||
|
|
||||||
const r = ssr({
|
const html = await ssr({
|
||||||
astroConfig,
|
astroConfig,
|
||||||
filePath: location.fileURL,
|
filePath: location.fileURL,
|
||||||
logging,
|
logging,
|
||||||
|
@ -84,18 +88,11 @@ export async function buildStaticPage({ astroConfig, buildState, path, route }:
|
||||||
route,
|
route,
|
||||||
routeCache,
|
routeCache,
|
||||||
viteServer
|
viteServer
|
||||||
})
|
});
|
||||||
|
|
||||||
const result = await astroRuntime.load(normalizedPath);
|
|
||||||
if (result.statusCode !== 200) {
|
|
||||||
let err = (result as any).error;
|
|
||||||
if (!(err instanceof Error)) err = new Error(err);
|
|
||||||
err.filename = fileURLToPath(location.fileURL);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
buildState[formatOutFile(path, astroConfig.buildOptions.pageUrlFormat)] = {
|
buildState[formatOutFile(path, astroConfig.buildOptions.pageUrlFormat)] = {
|
||||||
srcPath: location.fileURL,
|
srcPath: location.fileURL,
|
||||||
contents: result.contents,
|
contents: html,
|
||||||
contentType: 'text/html',
|
contentType: 'text/html',
|
||||||
encoding: 'utf8',
|
encoding: 'utf8',
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { GetStaticPathsResult, PaginatedCollectionProp, PaginateFunction, Params, Props, RouteData } from '../@types/astro';
|
import { GetStaticPathsResult, PaginatedCollectionProp, PaginateFunction, Params, Props, RouteData } from '../../@types/astro-core';
|
||||||
|
|
||||||
// return filters.map((filter) => {
|
// return filters.map((filter) => {
|
||||||
// const filteredRecipes = allRecipes.filter((recipe) =>
|
// const filteredRecipes = allRecipes.filter((recipe) =>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { RSSFunctionArgs, RouteData } from '../@types/astro';
|
import type { RSSFunctionArgs, RouteData } from '../../@types/astro-core';
|
||||||
import parser from 'fast-xml-parser';
|
import parser from 'fast-xml-parser';
|
||||||
import { canonicalURL } from './util.js';
|
import { canonicalURL } from './util.js';
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { BuildOutput } from '../@types/astro';
|
import type { BuildOutput } from '../../@types/astro-build';
|
||||||
import { canonicalURL } from './util.js';
|
import { canonicalURL } from './util.js';
|
||||||
|
|
||||||
/** Construct sitemap.xml given a set of URLs */
|
/** Construct sitemap.xml given a set of URLs */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { BuildOutput, BundleMap } from '../@types/astro';
|
import type { BuildOutput, BundleMap } from '../../@types/astro-build';
|
||||||
import type { LogOptions } from '../logger';
|
import type { LogOptions } from '../logger';
|
||||||
|
|
||||||
import { info, table } from '../logger.js';
|
import { info, table } from '../logger.js';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { AstroConfig } from '../@types/astro';
|
import type { AstroConfig } from '../../@types/astro-core';
|
||||||
import { performance } from 'perf_hooks';
|
import { performance } from 'perf_hooks';
|
||||||
|
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
|
|
@ -192,9 +192,9 @@ export async function ssr({ astroConfig, filePath, logging, mode, origin, pathna
|
||||||
html = injectTags(html, tags);
|
html = injectTags(html, tags);
|
||||||
|
|
||||||
// run transformIndexHtml() in dev to run Vite dev transformations
|
// run transformIndexHtml() in dev to run Vite dev transformations
|
||||||
if (mode === 'development') {
|
//if (mode === 'development') {
|
||||||
html = await viteServer.transformIndexHtml(filePath.pathname, html, pathname);
|
html = await viteServer.transformIndexHtml(filePath.pathname, html, pathname);
|
||||||
}
|
//}
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
|
|
51
yarn.lock
51
yarn.lock
|
@ -3929,7 +3929,7 @@ dotenv@^8.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
||||||
integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
|
integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
|
||||||
|
|
||||||
duplexer@^0.1.1, duplexer@~0.1.1:
|
duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
|
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
|
||||||
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
|
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
|
||||||
|
@ -5285,6 +5285,13 @@ growl@1.10.5:
|
||||||
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
|
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
|
||||||
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
|
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
|
||||||
|
|
||||||
|
gzip-size@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
|
||||||
|
integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
|
||||||
|
dependencies:
|
||||||
|
duplexer "^0.1.2"
|
||||||
|
|
||||||
handlebars@^4.7.6:
|
handlebars@^4.7.6:
|
||||||
version "4.7.7"
|
version "4.7.7"
|
||||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
|
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
|
||||||
|
@ -6254,6 +6261,15 @@ isstream@~0.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||||
|
|
||||||
|
jest-worker@^26.2.1:
|
||||||
|
version "26.6.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
|
||||||
|
integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
merge-stream "^2.0.0"
|
||||||
|
supports-color "^7.0.0"
|
||||||
|
|
||||||
joi@^17.4.0:
|
joi@^17.4.0:
|
||||||
version "17.4.2"
|
version "17.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7"
|
resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7"
|
||||||
|
@ -8740,6 +8756,11 @@ prettier@^2.4.1:
|
||||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c"
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c"
|
||||||
integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==
|
integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==
|
||||||
|
|
||||||
|
pretty-bytes@^5.6.0:
|
||||||
|
version "5.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
|
||||||
|
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
|
||||||
|
|
||||||
pretty-format@^3.8.0:
|
pretty-format@^3.8.0:
|
||||||
version "3.8.0"
|
version "3.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"
|
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"
|
||||||
|
@ -9504,6 +9525,16 @@ robots-txt-parse@~0.0.4:
|
||||||
stream-combiner "^0.2.1"
|
stream-combiner "^0.2.1"
|
||||||
through "^2.3.4"
|
through "^2.3.4"
|
||||||
|
|
||||||
|
rollup-plugin-terser@^7.0.2:
|
||||||
|
version "7.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
|
||||||
|
integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/code-frame" "^7.10.4"
|
||||||
|
jest-worker "^26.2.1"
|
||||||
|
serialize-javascript "^4.0.0"
|
||||||
|
terser "^5.0.0"
|
||||||
|
|
||||||
rollup@^2.57.0:
|
rollup@^2.57.0:
|
||||||
version "2.58.0"
|
version "2.58.0"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb"
|
||||||
|
@ -9625,6 +9656,13 @@ serialize-javascript@6.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
randombytes "^2.1.0"
|
randombytes "^2.1.0"
|
||||||
|
|
||||||
|
serialize-javascript@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
|
||||||
|
integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
|
||||||
|
dependencies:
|
||||||
|
randombytes "^2.1.0"
|
||||||
|
|
||||||
set-blocking@^2.0.0, set-blocking@~2.0.0:
|
set-blocking@^2.0.0, set-blocking@~2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||||
|
@ -10205,7 +10243,7 @@ supports-color@^5.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
has-flag "^3.0.0"
|
has-flag "^3.0.0"
|
||||||
|
|
||||||
supports-color@^7.1.0:
|
supports-color@^7.0.0, supports-color@^7.1.0:
|
||||||
version "7.2.0"
|
version "7.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||||
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
||||||
|
@ -10320,6 +10358,15 @@ term-size@^2.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
|
resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
|
||||||
integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
|
integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
|
||||||
|
|
||||||
|
terser@^5.0.0:
|
||||||
|
version "5.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351"
|
||||||
|
integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==
|
||||||
|
dependencies:
|
||||||
|
commander "^2.20.0"
|
||||||
|
source-map "~0.7.2"
|
||||||
|
source-map-support "~0.5.20"
|
||||||
|
|
||||||
terser@^5.7.2:
|
terser@^5.7.2:
|
||||||
version "5.8.0"
|
version "5.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.8.0.tgz#c6d352f91aed85cc6171ccb5e84655b77521d947"
|
resolved "https://registry.yarnpkg.com/terser/-/terser-5.8.0.tgz#c6d352f91aed85cc6171ccb5e84655b77521d947"
|
||||||
|
|
Loading…
Reference in a new issue