diff --git a/.changeset/famous-fireants-grin.md b/.changeset/famous-fireants-grin.md new file mode 100644 index 0000000..d6ecc16 --- /dev/null +++ b/.changeset/famous-fireants-grin.md @@ -0,0 +1,5 @@ +--- +"@marko/vite": patch +--- + +Temporarily disable hmr for tags api projects (hmr is pending implementation for tags api). diff --git a/src/index.ts b/src/index.ts index 8a40d24..64acab1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -152,7 +152,6 @@ export default function markoPlugin(opts: Options = {}): vite.Plugin[] { let serverManifest: ServerManifest | undefined; let basePath = "/"; let getMarkoAssetFns: undefined | API.getMarkoAssetCodeForEntry[]; - let tagsAPI: undefined | boolean; const entryIds = new Set(); const cachedSources = new Map(); const transformWatchFiles = new Map(); @@ -161,6 +160,34 @@ export default function markoPlugin(opts: Options = {}): vite.Plugin[] { `vite-marko${runtimeId ? `-${runtimeId}` : ""}`, ); + const isTagsApi = (() => { + let tagsAPI: undefined | boolean; + return () => { + if (tagsAPI === undefined) { + const translatorPackage = + opts.translator || + compiler.globalConfig?.translator || + "marko/translator"; + if ( + /^@marko\/translator-(?:default|interop-class-tags)$/.test( + translatorPackage, + ) + ) { + tagsAPI = false; + } else { + try { + const require = createRequire(import.meta.url); + tagsAPI = require(translatorPackage).preferAPI !== "class"; + } catch { + tagsAPI = true; + } + } + } + + return tagsAPI; + }; + })(); + return [ { name: "marko-vite:pre", @@ -654,33 +681,12 @@ export default function markoPlugin(opts: Options = {}): vite.Plugin[] { } } - if (tagsAPI === undefined) { - const translatorPackage = - opts.translator || - compiler.globalConfig?.translator || - "marko/translator"; - if ( - /^@marko\/translator-(?:default|interop-class-tags)$/.test( - translatorPackage, - ) - ) { - tagsAPI = false; - } else { - try { - const require = createRequire(import.meta.url); - tagsAPI = require(translatorPackage).preferAPI !== "class"; - } catch { - tagsAPI = true; - } - } - } - source = await getServerEntryTemplate({ fileName, entryData, runtimeId, basePathVar: isBuild ? basePathVar : undefined, - tagsAPI, + tagsAPI: isTagsApi(), }); } } @@ -750,7 +756,7 @@ export default function markoPlugin(opts: Options = {}): vite.Plugin[] { const { map, meta } = compiled; let { code } = compiled; - if (query !== browserEntryQuery && devServer) { + if (query !== browserEntryQuery && devServer && !isTagsApi()) { code += `\nif (import.meta.hot) import.meta.hot.accept(() => {});`; }