wip: add ?astro-asset-ssr flag
This commit is contained in:
parent
6c4ba5e8b5
commit
ff93d376d3
4 changed files with 17 additions and 4 deletions
|
@ -4,6 +4,7 @@ import npath from 'path';
|
||||||
import { normalizePath } from 'vite';
|
import { normalizePath } from 'vite';
|
||||||
import { resolveJsToTs } from '../core/util.js';
|
import { resolveJsToTs } from '../core/util.js';
|
||||||
import { HydrationDirectiveProps } from '../runtime/server/hydration.js';
|
import { HydrationDirectiveProps } from '../runtime/server/hydration.js';
|
||||||
|
import { FLAG } from '../vite-plugin-asset-ssr/index.js';
|
||||||
import type { PluginMetadata } from '../vite-plugin-astro/types';
|
import type { PluginMetadata } from '../vite-plugin-astro/types';
|
||||||
|
|
||||||
const ClientOnlyPlaceholder = 'astro-client-only';
|
const ClientOnlyPlaceholder = 'astro-client-only';
|
||||||
|
@ -184,7 +185,7 @@ export default function astroJSX(): PluginObj {
|
||||||
const node = path.node;
|
const node = path.node;
|
||||||
// Skip automatic `_components` in MDX files
|
// Skip automatic `_components` in MDX files
|
||||||
if (
|
if (
|
||||||
state.filename?.endsWith('.mdx') &&
|
(state.filename?.endsWith('.mdx') || state.filename?.endsWith('.mdx' + FLAG)) &&
|
||||||
t.isJSXIdentifier(node.object) &&
|
t.isJSXIdentifier(node.object) &&
|
||||||
node.object.name === '_components'
|
node.object.name === '_components'
|
||||||
) {
|
) {
|
||||||
|
|
1
packages/astro/src/vite-plugin-asset-ssr/index.ts
Normal file
1
packages/astro/src/vite-plugin-asset-ssr/index.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export const FLAG = '?astro-asset-ssr';
|
|
@ -13,6 +13,7 @@ import path from 'path';
|
||||||
import { error } from '../core/logger/core.js';
|
import { error } from '../core/logger/core.js';
|
||||||
import { parseNpmName } from '../core/util.js';
|
import { parseNpmName } from '../core/util.js';
|
||||||
import tagExportsPlugin from './tag.js';
|
import tagExportsPlugin from './tag.js';
|
||||||
|
import { FLAG } from '../vite-plugin-asset-ssr/index.js';
|
||||||
|
|
||||||
type FixedCompilerOptions = TsConfigJson.CompilerOptions & {
|
type FixedCompilerOptions = TsConfigJson.CompilerOptions & {
|
||||||
jsxImportSource?: string;
|
jsxImportSource?: string;
|
||||||
|
@ -185,7 +186,9 @@ export default function jsx({ settings, logging }: AstroPluginJSXOptions): Plugi
|
||||||
}
|
}
|
||||||
defaultJSXRendererEntry = [...jsxRenderersIntegrationOnly.entries()][0];
|
defaultJSXRendererEntry = [...jsxRenderersIntegrationOnly.entries()][0];
|
||||||
},
|
},
|
||||||
async transform(code, id, opts) {
|
async transform(code, unresolvedId, opts) {
|
||||||
|
let id = unresolvedId.endsWith(`.mdx${FLAG}`) ? unresolvedId.replace(FLAG, '') : unresolvedId;
|
||||||
|
|
||||||
const ssr = Boolean(opts?.ssr);
|
const ssr = Boolean(opts?.ssr);
|
||||||
if (!JSX_EXTENSIONS.has(path.extname(id))) {
|
if (!JSX_EXTENSIONS.has(path.extname(id))) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -15,6 +15,8 @@ import {
|
||||||
} from './plugins.js';
|
} from './plugins.js';
|
||||||
import { getFileInfo, handleExtendsNotSupported, parseFrontmatter } from './utils.js';
|
import { getFileInfo, handleExtendsNotSupported, parseFrontmatter } from './utils.js';
|
||||||
|
|
||||||
|
const FLAG = '?astro-asset-ssr';
|
||||||
|
|
||||||
const RAW_CONTENT_ERROR =
|
const RAW_CONTENT_ERROR =
|
||||||
'MDX does not support rawContent()! If you need to read the Markdown contents to calculate values (ex. reading time), we suggest injecting frontmatter via remark plugins. Learn more on our docs: https://docs.astro.build/en/guides/integrations-guide/mdx/#inject-frontmatter-via-remark-or-rehype-plugins';
|
'MDX does not support rawContent()! If you need to read the Markdown contents to calculate values (ex. reading time), we suggest injecting frontmatter via remark plugins. Learn more on our docs: https://docs.astro.build/en/guides/integrations-guide/mdx/#inject-frontmatter-via-remark-or-rehype-plugins';
|
||||||
|
|
||||||
|
@ -86,7 +88,10 @@ export default function mdx(mdxOptions: MdxOptions = {}): AstroIntegration {
|
||||||
},
|
},
|
||||||
// Override transform to alter code before MDX compilation
|
// Override transform to alter code before MDX compilation
|
||||||
// ex. inject layouts
|
// ex. inject layouts
|
||||||
async transform(_, id) {
|
async transform(_, unresolvedId) {
|
||||||
|
let id = unresolvedId.endsWith(`.mdx${FLAG}`)
|
||||||
|
? unresolvedId.replace(FLAG, '')
|
||||||
|
: unresolvedId;
|
||||||
if (!id.endsWith('mdx')) return;
|
if (!id.endsWith('mdx')) return;
|
||||||
|
|
||||||
// Read code from file manually to prevent Vite from parsing `import.meta.env` expressions
|
// Read code from file manually to prevent Vite from parsing `import.meta.env` expressions
|
||||||
|
@ -112,7 +117,10 @@ export default function mdx(mdxOptions: MdxOptions = {}): AstroIntegration {
|
||||||
{
|
{
|
||||||
name: '@astrojs/mdx-postprocess',
|
name: '@astrojs/mdx-postprocess',
|
||||||
// These transforms must happen *after* JSX runtime transformations
|
// These transforms must happen *after* JSX runtime transformations
|
||||||
transform(code, id) {
|
transform(code, unresolvedId) {
|
||||||
|
let id = unresolvedId.endsWith(`.mdx${FLAG}`)
|
||||||
|
? unresolvedId.replace(FLAG, '')
|
||||||
|
: unresolvedId;
|
||||||
if (!id.endsWith('.mdx')) return;
|
if (!id.endsWith('.mdx')) return;
|
||||||
|
|
||||||
// Ensures styles and scripts are injected into a `<head>`
|
// Ensures styles and scripts are injected into a `<head>`
|
||||||
|
|
Loading…
Add table
Reference in a new issue