UNPKG

@winter-love/vite-plugin-monorepo-alias

Version:

vite monorepo alias plugin

75 lines (74 loc) 2.06 kB
import z from "node:path"; const i = (e, t) => e.replace(/\\?\/*$/u, t), A = (e, t) => e.replace(/^\\?\/*/u, t), g = (e) => { const t = i(A(e, "/"), "/[-._a-zA-Z0-9]+/"); return new RegExp(`${t}`, "u"); }, $ = (e) => g(typeof e == "string" ? e : e.source), x = (e) => e.map($), v = (e, t, r) => { console.log("root", e); for (const s of t) { const o = r.match(s); if (o) { const [n] = o, [a, c] = r.split(n); if (typeof c == "string" && a === i(e, "")) return { relativePath: c, relativeWorkspaceRoot: n, root: e, workspaceRoot: `${a}${i(n, "")}` }; } } }, w = (e, t = []) => { for (const [r, s] of t) { const o = e.replace(r, ""); if (o !== e) return `${s}${o}`; } return e; }, E = (e) => new RegExp(`^${e}`, "u"), L = (e) => Object.entries(e).map(([t, r]) => [E(t), r]), W = (e) => i(A(e, "/"), "/"), y = (e) => Object.fromEntries( Object.entries(e).map(([t, r]) => [W(t), L(r)]) ), h = (e, t) => e.replaceAll(t, "/"), I = (e, t) => e.replaceAll("/", t), P = (e) => { const { workspacePaths: t = [], alias: r = { DEFAULT: { src: "src" } }, root: s = process.cwd(), separator: o = z.sep } = e, n = y({ DEFAULT: { src: "src" }, ...r }), a = x(t), c = h(s, o); return { name: "monorepo-alias", resolveId(l, p, d) { if (!p) return l; const k = h(p, o), u = v(c, a, k); if (!u) return l; const R = n[u.relativeWorkspaceRoot] ?? n["/DEFAULT/"], m = I(`${u.workspaceRoot}/${w(l, R)}`, o); return this.resolve(m, p, { skipSelf: !0, ...d }).then((f) => f || { id: m }); } }; }, F = P; export { P as createAlias, w as getAliasId, $ as getWorkspaceRegex, x as getWorkspaceRegexList, g as getWorkspaceRegexString, v as matchWorkspace, F as monorepoAlias, L as normalizeAlias, E as normalizeAliasKey, y as normalizeAliasTree, W as normalizeAliasTreeKey, A as trimFirstSlash, i as trimLastSlash };