From 48dcdefee1bf1328cefaee0f28cca9128a25b4a7 Mon Sep 17 00:00:00 2001 From: Miel Truyen Date: Sat, 20 May 2023 23:39:14 +0200 Subject: [PATCH] 0.0.5: fix, try to resolve sensible entrynames even if files were imported with an absolute path --- package.json | 2 +- src/index.ts | 22 +++++++++++++++------- test/multi-entry/snapshots/test.js.md | 14 +++++++------- test/multi-entry/snapshots/test.js.snap | Bin 1713 -> 1703 bytes test/multi-entry/test.js | 4 ++-- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 98f550f..f6b23cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rollup-plugin-html-entry2", - "version": "0.0.4", + "version": "0.0.5", "description": "Teaches rollup how to deal with HTML, allows to use HTML-files as entry-points.", "license": "MIT", "repository": { diff --git a/src/index.ts b/src/index.ts index d79d421..b43502c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -66,11 +66,17 @@ export default function html(opts: RollupHtmlOptions = {}): Plugin { let htmlModules = new Map();// todo clean this per new build? let virtualSources = new Map(); let addedEntries = new Map(); + let entryNames = new Map(); const pluginName = 'html2'; return { name: pluginName,// TODO: Need a better name, original plugin was just named `html` and might still make sense to use in conjunction with this one + buildStart(options){ + entryNames = new Map(Object.entries(typeof(options.input)==='object'?options.input:{[options.input]:[options.input]}) + .map(([k,v])=>[v,k]) + ); + }, resolveId: { async handler(specifier: string, importer: string | undefined, @@ -146,12 +152,6 @@ export default function html(opts: RollupHtmlOptions = {}): Plugin { if(source){ virtualSources.set(sourceId, source); } - let entryName: string|undefined = undefined; - if(type==='entryChunk'){ - entryName= posix.join(posix.dirname(htmlModule.name),sourceId); - entryName = entryName.slice(0,-(posix.extname(entryName).length)); // Cut off the extension (TODO, is this wise?) - } - const resolved = await this.resolve(sourceId, id, { isEntry: type==='entryChunk', }); @@ -160,8 +160,16 @@ export default function html(opts: RollupHtmlOptions = {}): Plugin { } const selfInfo = this.getModuleInfo(id); + + let entryName: string|undefined = undefined; + const parentName = entryNames.get(id)??selfInfo?.meta[pluginName].name; + if(type==='entryChunk'){ + entryName= posix.join(posix.dirname(parentName),sourceId); + entryName = entryName.slice(0,-(posix.extname(entryName).length)); // Cut off the extension (TODO, is this wise?) + } + const importName = (source && selfInfo?.meta[pluginName].name) - ? makeInlineId(selfInfo?.meta[pluginName].name, node, extname(sourceId)) + ? makeInlineId(parentName, node, extname(sourceId)) : entryName; const htmlImport: HtmlImport = { diff --git a/test/multi-entry/snapshots/test.js.md b/test/multi-entry/snapshots/test.js.md index d84adc4..462b5cb 100644 --- a/test/multi-entry/snapshots/test.js.md +++ b/test/multi-entry/snapshots/test.js.md @@ -39,6 +39,12 @@ Generated by [AVA](https://avajs.dev). map: undefined, source: '{"version":3,"file":"batman-c7fa228c.js","sources":["../../admin/batman.js"],"sourcesContent":["export const b = ()=>\'batman\';\\nconsole.log(b());\\n"],"names":[],"mappings":"AAAY,MAAC,CAAC,GAAG,IAAI,SAAS;AAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;;;;"}', }, + { + code: undefined, + fileName: 'admin/index.body.script0.js-15dfaff3.js.map', + map: undefined, + source: '{"version":3,"file":"index.body.script0.js-15dfaff3.js","sources":["../../app/admin-deps.js","../../admin/index.html.body.script0.js"],"sourcesContent":["export function adminDeps(){\\n return \\"robin!\\";\\n}\\n","\\n import {bootstrap} from \\"../app/app.js\\"\\n import {adminDeps} from \\"../app/admin-deps.js\\";\\n bootstrap(document.getElementById(\'root\'), adminDeps());\\n "],"names":[],"mappings":";;AAAO,SAAS,SAAS,EAAE;AAC3B,IAAI,OAAO,QAAQ,CAAC;AACpB;;ACCY,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC"}', + }, { code: undefined, fileName: 'admin/index.html', @@ -54,19 +60,13 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ bootstrap(document.getElementById('root'), adminDeps());␊ - //# sourceMappingURL=index.html.body.script0.js-15dfaff3.js.map␊ + //# sourceMappingURL=index.body.script0.js-15dfaff3.js.map␊ ␊ ␊ ␊ ␊ `, }, - { - code: undefined, - fileName: 'admin/index.html.body.script0.js-15dfaff3.js.map', - map: undefined, - source: '{"version":3,"file":"index.html.body.script0.js-15dfaff3.js","sources":["../../app/admin-deps.js","../../admin/index.html.body.script0.js"],"sourcesContent":["export function adminDeps(){\\n return \\"robin!\\";\\n}\\n","\\n import {bootstrap} from \\"../app/app.js\\"\\n import {adminDeps} from \\"../app/admin-deps.js\\";\\n bootstrap(document.getElementById(\'root\'), adminDeps());\\n "],"names":[],"mappings":";;AAAO,SAAS,SAAS,EAAE;AAC3B,IAAI,OAAO,QAAQ,CAAC;AACpB;;ACCY,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC"}', - }, { code: `const bootstrap = (el,deps = [])=>{␊ el.innerHtml = \`␊ diff --git a/test/multi-entry/snapshots/test.js.snap b/test/multi-entry/snapshots/test.js.snap index d43ca7961b06c5cb775af484acf960b0856d3f35..c12e1c9e80d282bd250580e09cdb329371e2392e 100644 GIT binary patch literal 1703 zcmV;Y23Yw)RzV{!Q5`9fNFa&^ zABdWusIMJ|ApK0fDO;SNK#bU8k%%LsD zeTd*^fX9HRfRVV*WISNGUOj@Aw0pN4MkAOe?CW(MaehMKT zAOJoBJecyCBm*W-6A1kYppyu_3(%52lj&ZQNjrTB(22~FoJOaqQAw9^=K)K)W?D>z zDKP0wp_r^cVx9KQAYN5!_^hb9vv^UIRYl7Mtr0avQNK?k)X^LP zcRp`p&MfT5*yIjNCJKY+@=CwCWP?MK*@V0GPAWPb`3r5cx3FOU15WR zupH}Hn(WFIHk-}C+dCnma@Ex->6!&Q2T^S&r%yTsEs#$^BaSp!IT;E>)kz~fu{_UT z=FaeZi7SzhlRSTt+vNF8?jp}$%tOD0OQAVllsXRIZBE>e3$blZ%ArXU8!^(^aoKDVvvZ-E@?^iFBN9S!&Ji zd0=L%4NbCOevIwqEpVOAYzrC#F9TZ*Lt_Ni&?}1es=z{WTaaIlb^1FmMRk6_6&*^9 zWr+0_Q#EuI3_H`V*I^n$A2WC0fSGr-_UK-7ceJ#uOAQrPmA!_o^%^GPT60rQrwmX@ zWjOEBG9EAeiJAv80u2c*oex4jLeQl(hp;wF&-46whmnB#8W@#ImmPhZv2H&n@x0_n z!2UBHKD*BCwtZlA(ocrxrS5%dm6#V-x3DM|X%es1oJS@cb42@5R&FthTwqDa+2U#r zo;|$|7a6Nr#|2i^SbQS|s=ZyiA%$%l z*EsS^0`baK*utHV;aXPFG;C~uW9TXOV$QW;j%G`$JyXPLv>uyHYxXkz9zW;Bdt z#?l!J!$?9I#sMXv%wSUzNxZUbE6Z$PO~Q<|rI-vMDkG#o4VyxWSSp%SYsi=pYc&G> zHaM*6hH5f;l}Ra9%FiP5L=vg0dWQUTw z;-qhKA*6IP%I%6d#EHnR1l=Q#TN9jmV|UnXL?ZR({dP}RvDbrBlepzIo?l*bv`#?# ziIUrUe4SIFS8ey&-a37YYu#tJ@$5dGyy(4Gr}V#Hox+OKF3JtNs_7aovV&`l|2RkL z&GONug{A63HN4*JvRv$(t<2CfdER7Rq6VCjcNjOYFZHzw-=>B>$qqQk?jq|#JM98H z{6TbmmuE^>h5S_GRICD}X$x>45Sc;fCBPBDg_-t${PBw&@=+uHn}OI((7Fxyl6=o1 zbPwq9l&h2Y)9=B*v*l-ZgZ?n z8oMLq>6q$elW*#=Hlyw5QSz}~9)YEss@8I=A2yusc9ZdR_PJzNZKBX!DO)G_{ x17yK&Jmy00a>8{N2Vdrd+|7mind~|Kh3Z6}q2UjJ|HHo`^xsSQ4Ec~30037cJ-+|| literal 1713 zcmV;i22S}wRzVg3?yj4L$P$$hCj=4)4yYW80C7P=J#g;cn|O)V3J8pFmc{A#chUZQ{&^~ zh+#noVn!I|Q&%BSKhS^1Ax9V>V-8uSXse=@F0!;=uakUTzm}+H{<@V{MS~4kFjQ0ONx`4KXYlYKHj_$E!%CNgFPxrDVAD)_86Rp;7RD2@#C)(j|5z|t1ja!`0adc8{ zkqb}4f5&H5)PqWo|Ch=`>~K7FOgEXX?7mm6r<8_KjMS zsTel4w+&L_R9$X>L(7WloejnQ#5cB*Gyf-Y3fYFn3 znq)&{U}vE(62r=5cbu6_VmC|;g9%kddxk5rO_uevW@KGzsNnwmHDa&S2_=`eSLIBa zTAa@2{Q9yz4s2&v^K|)ncUiMw+05JtxhB?X^X)^tRB#8wn_!tzDJqr&yVI?J1%=Lz zgAb@z4jm`6!8qA#MF)+eg;?Za?r-AA18x}ZA)k@KSuT_R==avVYc7b4D?#%Gme7hU zfrE6=gp82m-0}9O9nfCTwIW&I+GZODm?88K^Ck|7`B&@A?iW93hq^YE$ zN%e+Iuvo8C=v$z$rkkpT^%_nqb~>0UX^XmO5lo?LY5Ev8Ag6Ve7T(%v0_|C61hQyf zMaFnQ$f+&nkN%Uj#bkut2hBo-=qwbNA(U=9hqj+OVz)?iPg^h)J7>^~MZpV3fkvay zI~=`u^arF68IkRf+*eEnjEe|Lmt&)q4*MvOoMYapfV>0mCKG4C>7x`)CU3MxI*i>K z+=P=`SmybKWtZzT^q;PHqo-DKDvYYFQAb;QY;L*J_Bt;-rb3K8dg5P+saO6`iK~E>m`? zQug6>q2+dg>%Yoa*=NDvvCyMB#3XORqiGB98DL@(p$vcrh?A{X{^85*;9~}Y7X`^T zf$MF+efmFz&_{r;0N+i8rAI<{28m$cQQx*3N2A`;yMwX474435kME7ry%Lz}JhtPG z3!LtW=}vdD6*SJkN#DR&cQge|Pqrf3X%Et$y|yD+)3 { const bundle = await rollup({ input: { ['index']: 'index.html', - ['admin/index']: 'admin/index.html' + ['admin/index']: resolve(__dirname,'fixtures','admin/index.html'), }, plugins: [ html({