Skip to content

Commit

Permalink
feat: vite 2.7 support
Browse files Browse the repository at this point in the history
  • Loading branch information
DylanPiercey committed Dec 6, 2021
1 parent d85e82c commit 25132b1
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 32 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

75 changes: 45 additions & 30 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -245,42 +245,47 @@ export default function markoPlugin(opts: Options = {}): vite.Plugin[] {
}
}
},
async resolveId(importee, importer, _importOpts, ssr) {
const importeeIsAbsolute = path.isAbsolute(importee);
let importeeQuery = getMarkoQuery(importee);

if (importeeIsAbsolute && !importee.startsWith(root)) {
importee = (await this.resolve(importee, importer, resolveOpts))!.id;
async resolveId(
importee,
importer,
importOpts,
ssr = (importOpts as any).ssr
) {
if (virtualFiles.has(importee)) {
return importee;
}

let importeeQuery = getMarkoQuery(importee);

if (importeeQuery) {
importee = importee.slice(0, -importeeQuery.length);
} else if (virtualFiles.has(importee)) {
return importee;
} else if (isMarkoFile(importee)) {
if (ssr) {
if (
linked &&
importer &&
!isMarkoFile(importer.replace(queryReg, ""))
) {
importeeQuery = serverEntryQuery;
}
} else if (!importer || this.getModuleInfo(importer)?.isEntry) {
importeeQuery = browserEntryQuery;
}
} else if (
ssr &&
linked &&
importer &&
isMarkoFile(importee) &&
!isMarkoFile(importer.replace(queryReg, ""))
) {
importeeQuery = serverEntryQuery;
} else if (
!ssr &&
isBuild &&
importer &&
isMarkoFile(importee) &&
this.getModuleInfo(importer)!.isEntry
) {
importeeQuery = browserEntryQuery;
}

if (importeeQuery) {
const resolved = importeeIsAbsolute
? { id: importee }
: importee[0] === "."
? {
id: importer
? path.resolve(importer, "..", importee)
: path.resolve(root, importee),
}
: await this.resolve(importee, importer, resolveOpts);
const resolved =
importee[0] === "."
? {
id: importer
? path.resolve(importer, "..", importee)
: path.resolve(root, importee),
}
: await this.resolve(importee, importer, resolveOpts);

if (resolved) {
resolved.id += importeeQuery;
Expand Down Expand Up @@ -340,6 +345,16 @@ export default function markoPlugin(opts: Options = {}): vite.Plugin[] {

return virtualFiles.get(id) || null;
},
async transformIndexHtml(html) {
if (isBuild) {
return html;
}

return html.replace(
/src\s*=\s*(['"])(\\.|(?!\1).)*\.marko\1/gim,
(m) => m.slice(0, -1) + browserEntryQuery + m.slice(-1)
);
},
async transform(source, id, ssr) {
const query = getMarkoQuery(id);

Expand All @@ -358,7 +373,7 @@ export default function markoPlugin(opts: Options = {}): vite.Plugin[] {
const compiled = await compiler.compile(
source,
id,
ssr
(typeof ssr === "object" ? (ssr as any).ssr : ssr)
? ssrConfig
: query === browserEntryQuery
? hydrateConfig
Expand Down

0 comments on commit 25132b1

Please sign in to comment.