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