@@ -92,6 +92,21 @@ const OPTIONAL_PACKAGE_STUBS: Record<string, string> = {
9292 ] . join ( '\n' ) ,
9393} ;
9494
95+ const LESSJS_PACKAGE_SRC_BASE_RE = / \/ @ l e s s j s \/ ( [ ^ / ] + ) \/ ( [ ^ / ] + ) \/ s r c \/ .* $ / ;
96+
97+ function getLessPackageSrcBase ( metaUrl : string , packageName : string ) : string {
98+ const match = metaUrl . match ( LESSJS_PACKAGE_SRC_BASE_RE ) ;
99+ if ( match ) {
100+ return metaUrl . replace (
101+ LESSJS_PACKAGE_SRC_BASE_RE ,
102+ `/@lessjs/${ packageName } /${ match [ 2 ] } /src/` ,
103+ ) ;
104+ }
105+ return metaUrl
106+ . replace ( / \/ @ l e s s j s \/ [ ^ / ] + @ ( [ ^ / ] + ) \/ s r c \/ .* $ / , `/@lessjs/${ packageName } /$1/src/` )
107+ . replace ( / \/ s r c \/ .* $ / , '/src/' ) ;
108+ }
109+
95110function optionalPackageStubsPlugin ( ) : Plugin {
96111 return {
97112 name : 'less:optional-package-stubs' ,
@@ -144,10 +159,7 @@ function createCoreResolvePlugin(metaUrl: string): Plugin {
144159 // Compute JSR base URL for source fetching.
145160 let jsrSrcBase = '' ;
146161 if ( isRemote ) {
147- // Handle both @version and /version URL formats
148- jsrSrcBase = metaUrl
149- . replace ( / \/ s r c \/ i n d e x \. t s $ / , '/src/' )
150- . replace ( / @ ( \d + \. \d + \. \d + ) \/ s r c \/ $ / , '/$1/src/' ) ;
162+ jsrSrcBase = getLessPackageSrcBase ( metaUrl , 'core' ) ;
151163 }
152164
153165 return {
@@ -442,6 +454,8 @@ export function less(
442454
443455 const VIRTUAL_ENTRY_ID = 'virtual:less-hono-entry' ;
444456 const RESOLVED_ENTRY_ID = '\0' + VIRTUAL_ENTRY_ID ;
457+ const VIRTUAL_BUILD_TRIGGER_ID = 'virtual:less-build-trigger' ;
458+ const RESOLVED_BUILD_TRIGGER_ID = '\0' + VIRTUAL_BUILD_TRIGGER_ID ;
445459
446460 // v0.19.1 Phase 6: Discover client-only tags from Hub registry data (ADR-0035 A1)
447461 // Reads _hub-data-full.ts at build time and extracts tagNames where
@@ -542,7 +556,7 @@ export function less(
542556 // Keep the budget explicit so Vite does not report it as an unexpected warning.
543557 chunkSizeWarningLimit : 1500 ,
544558 rollupOptions : {
545- input : [ VIRTUAL_ENTRY_ID ] ,
559+ input : [ VIRTUAL_BUILD_TRIGGER_ID ] ,
546560 } ,
547561 } ,
548562 } ;
@@ -680,9 +694,13 @@ export function less(
680694
681695 resolveId ( id ) {
682696 if ( id === VIRTUAL_ENTRY_ID ) return RESOLVED_ENTRY_ID ;
697+ if ( id === VIRTUAL_BUILD_TRIGGER_ID ) return RESOLVED_BUILD_TRIGGER_ID ;
683698 } ,
684699
685700 load ( id ) {
701+ if ( id === RESOLVED_BUILD_TRIGGER_ID ) {
702+ return 'export default null;' ;
703+ }
686704 if ( id === RESOLVED_ENTRY_ID ) {
687705 // Always regenerate to pick up late-settled ctx fields (e.g., blogOptions
688706 // from lessContent() buildStart() which runs after less:core buildStart()).
0 commit comments