Fix npm install (#1407)
This commit is contained in:
parent
91cb38f451
commit
15bef35226
5 changed files with 60 additions and 58 deletions
|
@ -48,7 +48,7 @@
|
|||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||
"@typescript-eslint/parser": "^4.18.0",
|
||||
"autoprefixer": "^10.2.6",
|
||||
"cheerio": "^1.0.0-rc.6",
|
||||
"cheerio": "^1.0.0-rc.10",
|
||||
"cheerio-select-tmp": "^0.1.1",
|
||||
"del": "^6.0.0",
|
||||
"esbuild": "^0.11.17",
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
"@types/rimraf": "^3.0.2",
|
||||
"@web/rollup-plugin-html": "^1.9.1",
|
||||
"astring": "^1.7.5",
|
||||
"cheerio": "^1.0.0-rc.10",
|
||||
"ci-info": "^3.2.0",
|
||||
"connect": "^3.7.0",
|
||||
"es-module-lexer": "^0.7.1",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import '/@vite/client';
|
||||
import '@vite/client';
|
||||
|
||||
if (import.meta.hot) {
|
||||
const parser = new DOMParser();
|
||||
|
|
|
@ -169,66 +169,67 @@ export async function ssr({ astroConfig, filePath, logging, mode, origin, pathna
|
|||
pageProps = { ...matchedStaticPath.props } || {};
|
||||
}
|
||||
|
||||
// 3. render page
|
||||
if (!browserHash && (viteServer as any)._optimizeDepsMetadata?.browserHash) browserHash = (viteServer as any)._optimizeDepsMetadata.browserHash; // note: this is "private" and may change over time
|
||||
const fullURL = new URL(pathname, origin);
|
||||
// 3. render page
|
||||
if (!browserHash && (viteServer as any)._optimizeDepsMetadata?.browserHash) browserHash = (viteServer as any)._optimizeDepsMetadata.browserHash; // note: this is "private" and may change over time
|
||||
const fullURL = new URL(pathname, origin);
|
||||
|
||||
const Component = await mod.default;
|
||||
const ext = path.posix.extname(filePath.pathname);
|
||||
if (!Component)
|
||||
throw new Error(`Expected an exported Astro component but received typeof ${typeof Component}`);
|
||||
|
||||
if (!Component.isAstroComponentFactory) throw new Error(`Unable to SSR non-Astro component (${route?.component})`);
|
||||
const Component = await mod.default;
|
||||
const ext = path.posix.extname(filePath.pathname);
|
||||
if (!Component) throw new Error(`Expected an exported Astro component but received typeof ${typeof Component}`);
|
||||
|
||||
const result = {
|
||||
styles: new Set(),
|
||||
scripts: new Set(),
|
||||
/** This function returns the `Astro` faux-global */
|
||||
createAstro: (props: any) => {
|
||||
const site = new URL(origin);
|
||||
const url = new URL('.' + pathname, site);
|
||||
const canonicalURL = getCanonicalURL(pathname, astroConfig.buildOptions.site || origin)
|
||||
const fetchContent = createFetchContent(fileURLToPath(filePath));
|
||||
return {
|
||||
isPage: true,
|
||||
site,
|
||||
request: { url, canonicalURL },
|
||||
props,
|
||||
fetchContent
|
||||
if (!Component.isAstroComponentFactory) throw new Error(`Unable to SSR non-Astro component (${route?.component})`);
|
||||
|
||||
const result = {
|
||||
styles: new Set(),
|
||||
scripts: new Set(),
|
||||
/** This function returns the `Astro` faux-global */
|
||||
createAstro: (props: any) => {
|
||||
const site = new URL(origin);
|
||||
const url = new URL('.' + pathname, site);
|
||||
const canonicalURL = getCanonicalURL(pathname, astroConfig.buildOptions.site || origin);
|
||||
const fetchContent = createFetchContent(fileURLToPath(filePath));
|
||||
return {
|
||||
isPage: true,
|
||||
site,
|
||||
request: { url, canonicalURL },
|
||||
props,
|
||||
fetchContent,
|
||||
};
|
||||
},
|
||||
_metadata: { importedModules, renderers },
|
||||
};
|
||||
|
||||
const createFetchContent = (currentFilePath: string) => {
|
||||
const fetchContentCache = new Map<string, any>();
|
||||
return async (pattern: string) => {
|
||||
const cwd = path.dirname(currentFilePath);
|
||||
const cacheKey = `${cwd}:${pattern}`;
|
||||
if (fetchContentCache.has(cacheKey)) {
|
||||
return fetchContentCache.get(cacheKey);
|
||||
}
|
||||
const files = await glob(pattern, { cwd, absolute: true });
|
||||
const contents = await Promise.all(
|
||||
files.map(async (file) => {
|
||||
const { metadata: astro = {}, frontmatter = {} } = (await viteServer.ssrLoadModule(file)) as any;
|
||||
return { ...frontmatter, astro };
|
||||
})
|
||||
);
|
||||
fetchContentCache.set(cacheKey, contents);
|
||||
return contents;
|
||||
};
|
||||
},
|
||||
_metadata: { importedModules, renderers },
|
||||
}
|
||||
};
|
||||
|
||||
const createFetchContent = (currentFilePath: string) => {
|
||||
const fetchContentCache = new Map<string, any>();
|
||||
return async (pattern: string) => {
|
||||
const cwd = path.dirname(currentFilePath);
|
||||
const cacheKey = `${cwd}:${pattern}`;
|
||||
if (fetchContentCache.has(cacheKey)) {
|
||||
return fetchContentCache.get(cacheKey);
|
||||
}
|
||||
const files = await glob(pattern, { cwd, absolute: true });
|
||||
const contents = await Promise.all(files.map(async file => {
|
||||
const { metadata: astro = {}, frontmatter = {} } = (await viteServer.ssrLoadModule(file)) as any;
|
||||
return { ...frontmatter, astro };
|
||||
}))
|
||||
fetchContentCache.set(cacheKey, contents);
|
||||
return contents;
|
||||
let html = await renderPage(result, Component, {}, null);
|
||||
|
||||
// 4. modify response
|
||||
if (mode === 'development') {
|
||||
// inject Astro HMR code
|
||||
html = injectAstroHMR(html);
|
||||
// inject Vite HMR code
|
||||
html = injectViteClient(html);
|
||||
// replace client hydration scripts
|
||||
html = resolveNpmImports(html);
|
||||
}
|
||||
}
|
||||
|
||||
let html = await renderPage(result, Component, {}, null);
|
||||
|
||||
// 4. modify response
|
||||
if (mode === 'development') {
|
||||
// inject Astro HMR code
|
||||
html = injectAstroHMR(html);
|
||||
// inject Vite HMR code
|
||||
html = injectViteClient(html);
|
||||
// replace client hydration scripts
|
||||
html = resolveNpmImports(html);
|
||||
}
|
||||
|
||||
// 5. finish
|
||||
return html;
|
||||
|
|
|
@ -3389,7 +3389,7 @@ cheerio-select@^1.5.0:
|
|||
domhandler "^4.2.0"
|
||||
domutils "^2.7.0"
|
||||
|
||||
cheerio@^1.0.0-rc.6, cheerio@~1.0.0-rc.3:
|
||||
cheerio@^1.0.0-rc.10, cheerio@~1.0.0-rc.3:
|
||||
version "1.0.0-rc.10"
|
||||
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e"
|
||||
integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==
|
||||
|
|
Loading…
Reference in a new issue