summaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/src
diff options
context:
space:
mode:
authorGravatar Ben Holmes <hey@bholmes.dev> 2023-06-27 10:46:59 -0400
committerGravatar GitHub <noreply@github.com> 2023-06-27 10:46:59 -0400
commitf6feff7a2991fb94e11ee1b70ac606e4c053062b (patch)
tree0986f15fdf5009940ac3aa724b51b0996501391d /packages/integrations/markdoc/src
parent2726098bc82f910edda4198b9fb94f2bfd048976 (diff)
downloadastro-f6feff7a2991fb94e11ee1b70ac606e4c053062b.tar.gz
astro-f6feff7a2991fb94e11ee1b70ac606e4c053062b.tar.zst
astro-f6feff7a2991fb94e11ee1b70ac606e4c053062b.zip
feat: restart server on markdoc config change (#7467)
* deps: vite-plugin-restart * feat: restart on markdoc config change * chore: changeset * chore: roll our own restarter! * deps: remove vite-plugin-restart * refactor: use good enough option
Diffstat (limited to 'packages/integrations/markdoc/src')
-rw-r--r--packages/integrations/markdoc/src/index.ts32
-rw-r--r--packages/integrations/markdoc/src/load-config.ts2
2 files changed, 15 insertions, 19 deletions
diff --git a/packages/integrations/markdoc/src/index.ts b/packages/integrations/markdoc/src/index.ts
index 5274d3682..8f48dec41 100644
--- a/packages/integrations/markdoc/src/index.ts
+++ b/packages/integrations/markdoc/src/index.ts
@@ -4,7 +4,7 @@ import Markdoc from '@markdoc/markdoc';
import type { AstroConfig, AstroIntegration, ContentEntryType, HookParameters } from 'astro';
import crypto from 'node:crypto';
import fs from 'node:fs';
-import { fileURLToPath, pathToFileURL } from 'node:url';
+import { fileURLToPath } from 'node:url';
import {
hasContentFlag,
isValidUrl,
@@ -15,11 +15,15 @@ import {
} from './utils.js';
// @ts-expect-error Cannot find module 'astro/assets' or its corresponding type declarations.
import { emitESMImage } from 'astro/assets';
-import { bold, red, yellow } from 'kleur/colors';
+import { bold, red } from 'kleur/colors';
import path from 'node:path';
import type * as rollup from 'rollup';
import { normalizePath } from 'vite';
-import { loadMarkdocConfig, type MarkdocConfigResult } from './load-config.js';
+import {
+ loadMarkdocConfig,
+ SUPPORTED_MARKDOC_CONFIG_FILES,
+ type MarkdocConfigResult,
+} from './load-config.js';
import { setupConfig } from './runtime.js';
type SetupHookParams = HookParameters<'astro:config:setup'> & {
@@ -45,15 +49,13 @@ export default function markdocIntegration(legacyConfig?: any): AstroIntegration
}
let markdocConfigResult: MarkdocConfigResult | undefined;
let markdocConfigResultId = '';
+ let astroConfig: AstroConfig;
return {
name: '@astrojs/markdoc',
hooks: {
'astro:config:setup': async (params) => {
- const {
- config: astroConfig,
- updateConfig,
- addContentEntryType,
- } = params as SetupHookParams;
+ const { updateConfig, addContentEntryType } = params as SetupHookParams;
+ astroConfig = params.config;
markdocConfigResult = await loadMarkdocConfig(astroConfig);
if (markdocConfigResult) {
@@ -204,10 +206,8 @@ export const Content = createComponent({
updateConfig({
vite: {
- vite: {
- ssr: {
- external: ['@astrojs/markdoc/prism', '@astrojs/markdoc/shiki'],
- },
+ ssr: {
+ external: ['@astrojs/markdoc/prism', '@astrojs/markdoc/shiki'],
},
build: {
rollupOptions,
@@ -233,12 +233,8 @@ export const Content = createComponent({
},
'astro:server:setup': async ({ server }) => {
server.watcher.on('all', (event, entry) => {
- if (prependForwardSlash(pathToFileURL(entry).pathname) === markdocConfigResultId) {
- console.log(
- yellow(
- `${bold('[Markdoc]')} Restart the dev server for config changes to take effect.`
- )
- );
+ if (SUPPORTED_MARKDOC_CONFIG_FILES.some((f) => entry.endsWith(f))) {
+ server.restart();
}
});
},
diff --git a/packages/integrations/markdoc/src/load-config.ts b/packages/integrations/markdoc/src/load-config.ts
index e04cc441b..a912051b5 100644
--- a/packages/integrations/markdoc/src/load-config.ts
+++ b/packages/integrations/markdoc/src/load-config.ts
@@ -4,7 +4,7 @@ import * as fs from 'node:fs';
import { fileURLToPath } from 'node:url';
import type { AstroMarkdocConfig } from './config.js';
-const SUPPORTED_MARKDOC_CONFIG_FILES = [
+export const SUPPORTED_MARKDOC_CONFIG_FILES = [
'markdoc.config.js',
'markdoc.config.mjs',
'markdoc.config.mts',