@vitus-labs/tools-rolldown 2.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,9 +11,20 @@ export default {
11
11
  outputDir: 'analysis',
12
12
  },
13
13
  filesize: true,
14
+ // JS-bundle sourcemap. Mirrors rolldown's native output.sourcemap:
15
+ // true — separate .js.map file + sourceMappingURL comment (default)
16
+ // 'hidden' — separate .js.map file, NO comment (debugging without leak)
17
+ // 'inline' — base64 map embedded in the .js file
18
+ // false — no map emitted
19
+ // DTS output does not include sourcemaps (declarations don't need them).
20
+ sourcemap: true,
14
21
  extensions: ['.json', '.js', '.jsx', '.ts', '.tsx', '.es6', '.es', '.mjs'],
15
22
  include: ['src'],
16
- external: ['react/jsx-runtime'],
23
+ // node:* builtins are external by default — emits an UNRESOLVED_IMPORT
24
+ // warning on every package that imports `node:fs`, `node:path`, etc.
25
+ // without this. expandExternal in tools-core passes RegExp through
26
+ // unchanged, so this composes with the per-package string list.
27
+ external: ['react/jsx-runtime', /^node:/],
17
28
  exclude: [
18
29
  'lib',
19
30
  'node_modules/**',
@@ -1 +1 @@
1
- {"version":3,"file":"baseConfig.js","sourceRoot":"","sources":["../../src/config/baseConfig.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,UAAU;KACtB;IACD,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC1E,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC/B,OAAO,EAAE;QACP,KAAK;QACL,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,UAAU;QACV,UAAU;QACV,aAAa;QACb,WAAW;QACX,WAAW;KACZ;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,mBAAmB;KAC5B;IAED,yBAAyB;IACzB,OAAO,EAAE,SAQI;IACb,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,SAAuD;IAClE,MAAM,EAAE,SAA+B;IACvC,MAAM,EAAE,SAA+B;IACvC,KAAK,EAAE,SAA+C;IACtD,OAAO,EAAE,EAAe;CACzB,CAAA","sourcesContent":["export default {\n sourceDir: 'src',\n outputDir: 'lib',\n typesDir: 'lib/types',\n typescript: true,\n esModulesOnly: false,\n replaceGlobals: true,\n visualise: {\n template: 'network',\n gzipSize: true,\n outputDir: 'analysis',\n },\n filesize: true,\n extensions: ['.json', '.js', '.jsx', '.ts', '.tsx', '.es6', '.es', '.mjs'],\n include: ['src'],\n external: ['react/jsx-runtime'],\n exclude: [\n 'lib',\n 'node_modules/**',\n '**/__tests__/**',\n '**/__specs__/**',\n '**/__stories__/**',\n '*.test.*',\n '*.spec.*',\n '*.stories.*',\n 'stories.*',\n '*.story.*',\n ],\n globals: {\n react: 'React',\n ReactDOM: 'react-dom',\n styled: 'styled-components',\n },\n\n // Advanced build options\n entries: undefined as\n | {\n input: string\n file: string\n format?: string\n env?: string\n platform?: string\n }[]\n | undefined,\n bundleAll: false,\n copyFiles: undefined as { from: string; to: string }[] | undefined,\n banner: undefined as string | undefined,\n footer: undefined as string | undefined,\n alias: undefined as Record<string, string> | undefined,\n plugins: [] as unknown[],\n}\n"]}
1
+ {"version":3,"file":"baseConfig.js","sourceRoot":"","sources":["../../src/config/baseConfig.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,UAAU;KACtB;IACD,QAAQ,EAAE,IAAI;IACd,mEAAmE;IACnE,0EAA0E;IAC1E,0EAA0E;IAC1E,mDAAmD;IACnD,8BAA8B;IAC9B,yEAAyE;IACzE,SAAS,EAAE,IAAqC;IAChD,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC1E,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,uEAAuE;IACvE,qEAAqE;IACrE,mEAAmE;IACnE,gEAAgE;IAChE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAwB;IAChE,OAAO,EAAE;QACP,KAAK;QACL,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,UAAU;QACV,UAAU;QACV,aAAa;QACb,WAAW;QACX,WAAW;KACZ;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,mBAAmB;KAC5B;IAED,yBAAyB;IACzB,OAAO,EAAE,SAQI;IACb,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,SAAuD;IAClE,MAAM,EAAE,SAA+B;IACvC,MAAM,EAAE,SAA+B;IACvC,KAAK,EAAE,SAA+C;IACtD,OAAO,EAAE,EAAe;CACzB,CAAA","sourcesContent":["export default {\n sourceDir: 'src',\n outputDir: 'lib',\n typesDir: 'lib/types',\n typescript: true,\n esModulesOnly: false,\n replaceGlobals: true,\n visualise: {\n template: 'network',\n gzipSize: true,\n outputDir: 'analysis',\n },\n filesize: true,\n // JS-bundle sourcemap. Mirrors rolldown's native output.sourcemap:\n // true — separate .js.map file + sourceMappingURL comment (default)\n // 'hidden' — separate .js.map file, NO comment (debugging without leak)\n // 'inline' — base64 map embedded in the .js file\n // false — no map emitted\n // DTS output does not include sourcemaps (declarations don't need them).\n sourcemap: true as boolean | 'inline' | 'hidden',\n extensions: ['.json', '.js', '.jsx', '.ts', '.tsx', '.es6', '.es', '.mjs'],\n include: ['src'],\n // node:* builtins are external by default — emits an UNRESOLVED_IMPORT\n // warning on every package that imports `node:fs`, `node:path`, etc.\n // without this. expandExternal in tools-core passes RegExp through\n // unchanged, so this composes with the per-package string list.\n external: ['react/jsx-runtime', /^node:/] as (string | RegExp)[],\n exclude: [\n 'lib',\n 'node_modules/**',\n '**/__tests__/**',\n '**/__specs__/**',\n '**/__stories__/**',\n '*.test.*',\n '*.spec.*',\n '*.stories.*',\n 'stories.*',\n '*.story.*',\n ],\n globals: {\n react: 'React',\n ReactDOM: 'react-dom',\n styled: 'styled-components',\n },\n\n // Advanced build options\n entries: undefined as\n | {\n input: string\n file: string\n format?: string\n env?: string\n platform?: string\n }[]\n | undefined,\n bundleAll: false,\n copyFiles: undefined as { from: string; to: string }[] | undefined,\n banner: undefined as string | undefined,\n footer: undefined as string | undefined,\n alias: undefined as Record<string, string> | undefined,\n plugins: [] as unknown[],\n}\n"]}
@@ -83,7 +83,7 @@ const rolldownConfig = ({ file, format, env, platform, input: entryInput, }) =>
83
83
  entryFileNames: entryFileName,
84
84
  format,
85
85
  globals: swapGlobals(CONFIG.globals),
86
- sourcemap: true,
86
+ sourcemap: CONFIG.sourcemap,
87
87
  sourcemapIgnoreList: (relativeSourcePath) => relativeSourcePath.includes('node_modules'),
88
88
  exports: ['cjs', 'umd', 'iife'].includes(format)
89
89
  ? 'named'
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/rolldown/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport { expandExternal, swapGlobals } from '@vitus-labs/tools-core'\nimport type { RolldownPlugin } from 'rolldown'\nimport { dts } from 'rolldown-plugin-dts'\nimport { visualizer } from 'rollup-plugin-visualizer'\nimport { CONFIG, PKG, PLATFORMS } from '../config/index.ts'\n\nconst require = createRequire(import.meta.url)\nconst filesize: typeof import('rollup-plugin-filesize').default = require('rollup-plugin-filesize')\n\nconst resolveExternals = (): (string | RegExp)[] =>\n CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external].map(expandExternal)\n\nconst defineExtensions = (platform: string) => {\n const platformExtensions: string[] = []\n\n if ((PLATFORMS as readonly string[]).includes(platform)) {\n CONFIG.extensions.forEach((item: string) => {\n platformExtensions.push(`.${platform}${item}`)\n })\n }\n\n return platformExtensions.concat(CONFIG.extensions)\n}\n\nconst mapPlatform = (\n platform: string,\n): 'node' | 'browser' | 'neutral' | undefined => {\n if (platform === 'node') return 'node'\n if (platform === 'browser') return 'browser'\n return 'neutral'\n}\n\nconst loadPlugins = ({ file }: { file: string }) => {\n const plugins: RolldownPlugin[] = []\n\n // generate visualised graphs in dist folder\n if (CONFIG.visualise) {\n const filePath = file.split('/')\n const fileName = filePath.pop()\n\n const visualiserOptions = {\n title: `${PKG.name} - ${fileName}`,\n filename: `${filePath.join('/')}/${\n CONFIG.visualise.outputDir\n }/${fileName}.html`,\n template: CONFIG.visualise.template,\n gzipSize: CONFIG.visualise.gzipSize,\n }\n\n plugins.push(visualizer(visualiserOptions) as RolldownPlugin)\n }\n\n if (CONFIG.filesize) {\n plugins.push(filesize() as RolldownPlugin)\n }\n\n return plugins\n}\n\nconst buildDefineOptions = (env: string, platform: string) => {\n if (!CONFIG.replaceGlobals) return undefined\n\n const defineOptions: Record<string, string> = {\n __VERSION__: JSON.stringify(PKG.version),\n __NODE__: JSON.stringify(platform === 'node'),\n __WEB__: JSON.stringify(\n ['node', 'browser', 'universal'].includes(platform),\n ),\n __BROWSER__: JSON.stringify(platform === 'browser'),\n __NATIVE__: JSON.stringify(platform === 'native'),\n __CLIENT__: JSON.stringify(['native', 'browser'].includes(platform)),\n }\n\n if (env === 'production') {\n defineOptions['process.env.NODE_ENV'] = JSON.stringify(env)\n }\n\n return defineOptions\n}\n\nconst rolldownConfig = ({\n file,\n format,\n env,\n platform,\n input: entryInput,\n}: Record<string, any>) => {\n const extensions = defineExtensions(platform)\n const builtinPlugins = loadPlugins({ file })\n const userPlugins = (CONFIG.plugins || []) as RolldownPlugin[]\n const define = buildDefineOptions(env, platform)\n\n const lastSlash = file.lastIndexOf('/')\n const dir = lastSlash >= 0 ? file.substring(0, lastSlash) : '.'\n const entryFileName = lastSlash >= 0 ? file.substring(lastSlash + 1) : file\n\n const external = resolveExternals()\n\n const buildOutput = {\n input: entryInput || CONFIG.sourceDir,\n platform: mapPlatform(platform),\n tsconfig: CONFIG.typescript ? 'tsconfig.json' : undefined,\n resolve: {\n extensions,\n alias: CONFIG.alias || undefined,\n },\n transform: define ? { define } : undefined,\n output: {\n dir,\n entryFileNames: entryFileName,\n format,\n globals: swapGlobals(CONFIG.globals),\n sourcemap: true,\n sourcemapIgnoreList: (relativeSourcePath: string) =>\n relativeSourcePath.includes('node_modules'),\n exports: ['cjs', 'umd', 'iife'].includes(format)\n ? ('named' as const)\n : undefined,\n name: ['umd', 'iife'].includes(format) ? PKG.bundleName : undefined,\n esModule: true,\n minify: env === 'production',\n banner: CONFIG.banner || undefined,\n footer: CONFIG.footer || undefined,\n },\n external,\n treeshake: {\n moduleSideEffects: false,\n },\n plugins: [...builtinPlugins, ...userPlugins],\n }\n\n return buildOutput\n}\n\nconst createDtsConfig = (typesFilePath: string, inputFile: string) => {\n const lastSlash = typesFilePath.lastIndexOf('/')\n const dir = lastSlash >= 0 ? typesFilePath.substring(0, lastSlash) : '.'\n const entryFileName =\n lastSlash >= 0 ? typesFilePath.substring(lastSlash + 1) : typesFilePath\n\n return {\n file: typesFilePath,\n input: inputFile,\n tsconfig: 'tsconfig.json',\n resolve: {\n extensions: CONFIG.extensions,\n },\n external: resolveExternals(),\n plugins: [\n ...(dts({\n tsconfig: 'tsconfig.json',\n emitDtsOnly: true,\n }) as RolldownPlugin[]),\n ],\n output: {\n dir,\n entryFileNames: entryFileName,\n chunkFileNames: '[name].d.ts',\n format: 'es' as const,\n sourcemap: false,\n esModule: true,\n },\n }\n}\n\n/** Check if exports object uses subpath keys */\nconst isSubpathExports = (obj: Record<string, any>): boolean =>\n Object.keys(obj).some((k) => k === '.' || k.startsWith('./'))\n\n/** Resolve the actual source file extension (.ts, .tsx, etc.) */\nconst resolveWithExtension = (path: string): string => {\n for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {\n if (existsSync(`${path}${ext}`)) return `${path}${ext}`\n }\n return `${path}.ts`\n}\n\n/** Resolve input .ts file from a subpath export key using convention. */\nconst resolveSubpathInput = (exportPath: string): string => {\n if (exportPath === '.') return `${CONFIG.sourceDir}/index.ts`\n const subpath = exportPath.slice(2)\n return `${CONFIG.sourceDir}/${subpath}`\n}\n\nconst buildDts = (): ReturnType<typeof createDtsConfig> | null => {\n if (!CONFIG.typescript) return null\n\n // Simple case: no subpath exports\n const typesFilePath = PKG?.exports?.types || PKG.types || PKG.typings\n if (typesFilePath) {\n return createDtsConfig(typesFilePath, `${CONFIG.sourceDir}/index.ts`)\n }\n\n return null\n}\n\n/** Build DTS configs for all subpath exports that have a `types` field */\nconst buildAllDts = (): ReturnType<typeof createDtsConfig>[] => {\n if (!CONFIG.typescript) return []\n\n const exportsOptions = PKG.exports\n if (\n !exportsOptions ||\n typeof exportsOptions !== 'object' ||\n !isSubpathExports(exportsOptions)\n ) {\n const single = buildDts()\n return single ? [single] : []\n }\n\n const results: ReturnType<typeof createDtsConfig>[] = []\n for (const [exportPath, exportConfig] of Object.entries(exportsOptions)) {\n if (!exportConfig || typeof exportConfig !== 'object') continue\n const typesPath = (exportConfig as Record<string, string>).types\n if (!typesPath) continue\n const resolved = resolveSubpathInput(exportPath)\n const inputFile =\n resolved.endsWith('.ts') || resolved.endsWith('.tsx')\n ? resolved\n : resolveWithExtension(resolved)\n results.push(createDtsConfig(typesPath, inputFile))\n }\n\n return results\n}\n\nexport default rolldownConfig\nexport { buildAllDts, buildDts }\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/rolldown/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport { expandExternal, swapGlobals } from '@vitus-labs/tools-core'\nimport type { RolldownPlugin } from 'rolldown'\nimport { dts } from 'rolldown-plugin-dts'\nimport { visualizer } from 'rollup-plugin-visualizer'\nimport { CONFIG, PKG, PLATFORMS } from '../config/index.ts'\n\nconst require = createRequire(import.meta.url)\nconst filesize: typeof import('rollup-plugin-filesize').default = require('rollup-plugin-filesize')\n\nconst resolveExternals = (): (string | RegExp)[] =>\n CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external].map(expandExternal)\n\nconst defineExtensions = (platform: string) => {\n const platformExtensions: string[] = []\n\n if ((PLATFORMS as readonly string[]).includes(platform)) {\n CONFIG.extensions.forEach((item: string) => {\n platformExtensions.push(`.${platform}${item}`)\n })\n }\n\n return platformExtensions.concat(CONFIG.extensions)\n}\n\nconst mapPlatform = (\n platform: string,\n): 'node' | 'browser' | 'neutral' | undefined => {\n if (platform === 'node') return 'node'\n if (platform === 'browser') return 'browser'\n return 'neutral'\n}\n\nconst loadPlugins = ({ file }: { file: string }) => {\n const plugins: RolldownPlugin[] = []\n\n // generate visualised graphs in dist folder\n if (CONFIG.visualise) {\n const filePath = file.split('/')\n const fileName = filePath.pop()\n\n const visualiserOptions = {\n title: `${PKG.name} - ${fileName}`,\n filename: `${filePath.join('/')}/${\n CONFIG.visualise.outputDir\n }/${fileName}.html`,\n template: CONFIG.visualise.template,\n gzipSize: CONFIG.visualise.gzipSize,\n }\n\n plugins.push(visualizer(visualiserOptions) as RolldownPlugin)\n }\n\n if (CONFIG.filesize) {\n plugins.push(filesize() as RolldownPlugin)\n }\n\n return plugins\n}\n\nconst buildDefineOptions = (env: string, platform: string) => {\n if (!CONFIG.replaceGlobals) return undefined\n\n const defineOptions: Record<string, string> = {\n __VERSION__: JSON.stringify(PKG.version),\n __NODE__: JSON.stringify(platform === 'node'),\n __WEB__: JSON.stringify(\n ['node', 'browser', 'universal'].includes(platform),\n ),\n __BROWSER__: JSON.stringify(platform === 'browser'),\n __NATIVE__: JSON.stringify(platform === 'native'),\n __CLIENT__: JSON.stringify(['native', 'browser'].includes(platform)),\n }\n\n if (env === 'production') {\n defineOptions['process.env.NODE_ENV'] = JSON.stringify(env)\n }\n\n return defineOptions\n}\n\nconst rolldownConfig = ({\n file,\n format,\n env,\n platform,\n input: entryInput,\n}: Record<string, any>) => {\n const extensions = defineExtensions(platform)\n const builtinPlugins = loadPlugins({ file })\n const userPlugins = (CONFIG.plugins || []) as RolldownPlugin[]\n const define = buildDefineOptions(env, platform)\n\n const lastSlash = file.lastIndexOf('/')\n const dir = lastSlash >= 0 ? file.substring(0, lastSlash) : '.'\n const entryFileName = lastSlash >= 0 ? file.substring(lastSlash + 1) : file\n\n const external = resolveExternals()\n\n const buildOutput = {\n input: entryInput || CONFIG.sourceDir,\n platform: mapPlatform(platform),\n tsconfig: CONFIG.typescript ? 'tsconfig.json' : undefined,\n resolve: {\n extensions,\n alias: CONFIG.alias || undefined,\n },\n transform: define ? { define } : undefined,\n output: {\n dir,\n entryFileNames: entryFileName,\n format,\n globals: swapGlobals(CONFIG.globals),\n sourcemap: CONFIG.sourcemap,\n sourcemapIgnoreList: (relativeSourcePath: string) =>\n relativeSourcePath.includes('node_modules'),\n exports: ['cjs', 'umd', 'iife'].includes(format)\n ? ('named' as const)\n : undefined,\n name: ['umd', 'iife'].includes(format) ? PKG.bundleName : undefined,\n esModule: true,\n minify: env === 'production',\n banner: CONFIG.banner || undefined,\n footer: CONFIG.footer || undefined,\n },\n external,\n treeshake: {\n moduleSideEffects: false,\n },\n plugins: [...builtinPlugins, ...userPlugins],\n }\n\n return buildOutput\n}\n\nconst createDtsConfig = (typesFilePath: string, inputFile: string) => {\n const lastSlash = typesFilePath.lastIndexOf('/')\n const dir = lastSlash >= 0 ? typesFilePath.substring(0, lastSlash) : '.'\n const entryFileName =\n lastSlash >= 0 ? typesFilePath.substring(lastSlash + 1) : typesFilePath\n\n return {\n file: typesFilePath,\n input: inputFile,\n tsconfig: 'tsconfig.json',\n resolve: {\n extensions: CONFIG.extensions,\n },\n external: resolveExternals(),\n plugins: [\n ...(dts({\n tsconfig: 'tsconfig.json',\n emitDtsOnly: true,\n }) as RolldownPlugin[]),\n ],\n output: {\n dir,\n entryFileNames: entryFileName,\n chunkFileNames: '[name].d.ts',\n format: 'es' as const,\n sourcemap: false,\n esModule: true,\n },\n }\n}\n\n/** Check if exports object uses subpath keys */\nconst isSubpathExports = (obj: Record<string, any>): boolean =>\n Object.keys(obj).some((k) => k === '.' || k.startsWith('./'))\n\n/** Resolve the actual source file extension (.ts, .tsx, etc.) */\nconst resolveWithExtension = (path: string): string => {\n for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {\n if (existsSync(`${path}${ext}`)) return `${path}${ext}`\n }\n return `${path}.ts`\n}\n\n/** Resolve input .ts file from a subpath export key using convention. */\nconst resolveSubpathInput = (exportPath: string): string => {\n if (exportPath === '.') return `${CONFIG.sourceDir}/index.ts`\n const subpath = exportPath.slice(2)\n return `${CONFIG.sourceDir}/${subpath}`\n}\n\nconst buildDts = (): ReturnType<typeof createDtsConfig> | null => {\n if (!CONFIG.typescript) return null\n\n // Simple case: no subpath exports\n const typesFilePath = PKG?.exports?.types || PKG.types || PKG.typings\n if (typesFilePath) {\n return createDtsConfig(typesFilePath, `${CONFIG.sourceDir}/index.ts`)\n }\n\n return null\n}\n\n/** Build DTS configs for all subpath exports that have a `types` field */\nconst buildAllDts = (): ReturnType<typeof createDtsConfig>[] => {\n if (!CONFIG.typescript) return []\n\n const exportsOptions = PKG.exports\n if (\n !exportsOptions ||\n typeof exportsOptions !== 'object' ||\n !isSubpathExports(exportsOptions)\n ) {\n const single = buildDts()\n return single ? [single] : []\n }\n\n const results: ReturnType<typeof createDtsConfig>[] = []\n for (const [exportPath, exportConfig] of Object.entries(exportsOptions)) {\n if (!exportConfig || typeof exportConfig !== 'object') continue\n const typesPath = (exportConfig as Record<string, string>).types\n if (!typesPath) continue\n const resolved = resolveSubpathInput(exportPath)\n const inputFile =\n resolved.endsWith('.ts') || resolved.endsWith('.tsx')\n ? resolved\n : resolveWithExtension(resolved)\n results.push(createDtsConfig(typesPath, inputFile))\n }\n\n return results\n}\n\nexport default rolldownConfig\nexport { buildAllDts, buildDts }\n"]}
@@ -1,4 +1,4 @@
1
- import { cpSync, mkdirSync, readdirSync, renameSync, rmSync, statSync, } from 'node:fs';
1
+ import { cpSync, existsSync, mkdirSync, readdirSync, renameSync, rmSync, statSync, } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import chalk from 'chalk';
4
4
  import { rolldown } from 'rolldown';
@@ -202,17 +202,179 @@ const buildDtsIsolated = async (dtsConfig) => {
202
202
  rmSync(absTempDir, { recursive: true, force: true });
203
203
  }
204
204
  };
205
+ /**
206
+ * Build N DTS entries that share an output dir as a SINGLE rolldown call.
207
+ *
208
+ * Each per-entry rolldown call instantiates the slow rolldown-plugin-dts
209
+ * (and its embedded TS compiler) from scratch — that's the
210
+ * `[PLUGIN_TIMINGS] rolldown-plugin-dts:generate` warning rolldown
211
+ * itself surfaces. Doing the work in one call amortizes plugin/compiler
212
+ * setup AND lets common imports (e.g. a shared `types.ts`) emit as one
213
+ * `_chunks/*.d.ts` instead of being inlined into every entry's stub.
214
+ *
215
+ * Caveat the per-entry path also handles: rolldown-plugin-dts (0.25.2)
216
+ * emits `<name>.d.ts` (empty re-export stub) AND `<name>2.d.ts` (the real
217
+ * declarations). We pick the larger file per entry and move it to the
218
+ * intended path — same shape as `buildDtsIsolated`, batched.
219
+ */
220
+ const escapeRe = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
221
+ /** Build the rolldown invocation options for a grouped DTS build. */
222
+ const buildGroupedDtsInvocation = (head, inputMap, tempDir) => {
223
+ const inputOptions = { ...head, input: inputMap };
224
+ delete inputOptions.file;
225
+ const outputOptions = {
226
+ ...head.output,
227
+ dir: tempDir,
228
+ entryFileNames: '[name].d.ts',
229
+ chunkFileNames: '_chunks/[name]-[hash].d.ts',
230
+ };
231
+ return { inputOptions, outputOptions };
232
+ };
233
+ /** Pick the largest `<stem>NUMBER?.d.ts` file in `tempFiles` for an entry. */
234
+ const pickRealDtsFor = (stem, tempFiles, absTempDir) => {
235
+ const re = new RegExp(`^${escapeRe(stem)}\\d*\\.d\\.ts$`);
236
+ let best;
237
+ let bestSize = -1;
238
+ for (const f of tempFiles) {
239
+ if (!re.test(f))
240
+ continue;
241
+ const size = statSync(join(absTempDir, f)).size;
242
+ if (size > bestSize) {
243
+ bestSize = size;
244
+ best = f;
245
+ }
246
+ }
247
+ return best;
248
+ };
249
+ /**
250
+ * Move each entry's "real" .d.ts out of the temp dir to its final path.
251
+ * Returns the list of `oldStem -> newStem` renames the import-path
252
+ * repair step needs to know about.
253
+ */
254
+ const promoteEntries = (entryStems, absTempDir, absFinalDir) => {
255
+ const tempFiles = readdirSync(absTempDir);
256
+ const renamed = [];
257
+ for (const stem of entryStems) {
258
+ const best = pickRealDtsFor(stem, tempFiles, absTempDir);
259
+ if (!best)
260
+ continue;
261
+ const oldStem = best.replace(/\.d\.ts$/, '');
262
+ renameSync(join(absTempDir, best), join(absFinalDir, `${stem}.d.ts`));
263
+ if (oldStem !== stem)
264
+ renamed.push({ oldStem, newStem: stem });
265
+ }
266
+ return renamed;
267
+ };
268
+ /**
269
+ * Move the plugin's `_chunks/` dir (shared types) alongside the entries.
270
+ * The `import "./_chunks/shared-X.js"` references in entry files resolve
271
+ * to `_chunks/shared-X.d.ts` via TS's adjacent-`.d.ts`-to-`.js` rule.
272
+ */
273
+ const promoteChunksDir = (absTempDir, absFinalDir) => {
274
+ const tempChunksDir = join(absTempDir, '_chunks');
275
+ if (!existsSync(tempChunksDir))
276
+ return;
277
+ const finalChunksDir = join(absFinalDir, '_chunks');
278
+ rmSync(finalChunksDir, { recursive: true, force: true });
279
+ renameSync(tempChunksDir, finalChunksDir);
280
+ };
281
+ /**
282
+ * Repair stale import paths. When the plugin code-splits across entries,
283
+ * one entry's .d.ts may reference `./otherEntry2.js` — but after we rename
284
+ * `otherEntry2.d.ts -> otherEntry.d.ts`, that reference no longer resolves.
285
+ * Without this, real consumers fail typechecks with `TS2307: Cannot find
286
+ * module './otherEntry2.js'` (caught by skipLibCheck:false consumers).
287
+ */
288
+ const repairStaleImports = (entryStems, absFinalDir, renamed) => {
289
+ if (renamed.length === 0)
290
+ return;
291
+ const { readFileSync, writeFileSync } = require('node:fs');
292
+ for (const stem of entryStems) {
293
+ const filePath = join(absFinalDir, `${stem}.d.ts`);
294
+ let content = readFileSync(filePath, 'utf-8');
295
+ let changed = false;
296
+ for (const { oldStem, newStem } of renamed) {
297
+ const re = new RegExp(`(["'\\s/])\\./${escapeRe(oldStem)}\\.js(["'])`, 'g');
298
+ if (re.test(content)) {
299
+ content = content.replace(re, `$1./${newStem}.js$2`);
300
+ changed = true;
301
+ }
302
+ }
303
+ if (changed)
304
+ writeFileSync(filePath, content);
305
+ }
306
+ };
307
+ const buildDtsGrouped = async (group) => {
308
+ const head = group[0];
309
+ if (!head)
310
+ return;
311
+ const finalDir = head.output.dir;
312
+ const groupTag = group
313
+ .map((g) => g.output.entryFileNames.replace(/\W/g, '_'))
314
+ .join('_');
315
+ const tempDir = join(finalDir, `__dts_tmp_grp_${groupTag.substring(0, 60)}`);
316
+ const absTempDir = join(process.cwd(), tempDir);
317
+ const inputMap = {};
318
+ const entryStems = [];
319
+ for (const g of group) {
320
+ const stem = g.output.entryFileNames.replace(/\.d\.ts$/, '');
321
+ inputMap[stem] = g.input;
322
+ entryStems.push(stem);
323
+ }
324
+ try {
325
+ await build(buildGroupedDtsInvocation(head, inputMap, tempDir));
326
+ const absFinalDir = join(process.cwd(), finalDir);
327
+ mkdirSync(absFinalDir, { recursive: true });
328
+ const renamed = promoteEntries(entryStems, absTempDir, absFinalDir);
329
+ promoteChunksDir(absTempDir, absFinalDir);
330
+ repairStaleImports(entryStems, absFinalDir, renamed);
331
+ }
332
+ finally {
333
+ rmSync(absTempDir, { recursive: true, force: true });
334
+ }
335
+ };
336
+ /**
337
+ * Partition DTS configs into groupable buckets by output dir. A bucket
338
+ * of ≥2 entries goes through the single-pass `buildDtsGrouped`; singletons
339
+ * keep `buildDtsIsolated`. Same shape as the JS pipeline in `createBuilds`.
340
+ */
341
+ const partitionDts = (configs) => {
342
+ const buckets = new Map();
343
+ for (const c of configs) {
344
+ const k = c.output.dir;
345
+ const b = buckets.get(k) ?? [];
346
+ b.push(c);
347
+ buckets.set(k, b);
348
+ }
349
+ const groups = [];
350
+ const singles = [];
351
+ for (const b of buckets.values()) {
352
+ if (b.length <= 1)
353
+ singles.push(...b);
354
+ else
355
+ groups.push(b);
356
+ }
357
+ return { groups, singles };
358
+ };
205
359
  const generateDeclarations = async () => {
206
360
  const dtsConfigs = buildAllDts();
207
361
  if (dtsConfigs.length === 0)
208
362
  return;
209
363
  log(`\n${dim('Generating')} declarations...`);
210
- for (const dtsFile of dtsConfigs) {
364
+ const { groups, singles } = partitionDts(dtsConfigs);
365
+ for (const dtsFile of singles) {
211
366
  const tscStart = performance.now();
212
367
  await buildDtsIsolated(dtsFile);
213
368
  const tscDuration = Math.round(performance.now() - tscStart);
214
369
  log(` ${chalk.green('+')} ${bold('DTS')} ${dim('->')} ${dim(dtsFile.file)} ${dim(`(${tscDuration}ms)`)}`);
215
370
  }
371
+ for (const group of groups) {
372
+ const tscStart = performance.now();
373
+ await buildDtsGrouped(group);
374
+ const tscDuration = Math.round(performance.now() - tscStart);
375
+ const names = group.map((g) => g.output.entryFileNames).join(', ');
376
+ log(` ${chalk.green('+')} ${bold('DTS')} ${dim('->')} ${dim(`${group[0]?.output.dir}/{${names}}`)} ${dim(`(${tscDuration}ms, single-pass)`)}`);
377
+ }
216
378
  };
217
379
  const runBuild = async () => {
218
380
  const start = performance.now();
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/scripts/build.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n cpSync,\n mkdirSync,\n readdirSync,\n renameSync,\n rmSync,\n statSync,\n} from 'node:fs'\nimport { join } from 'node:path'\nimport chalk from 'chalk'\nimport { rolldown } from 'rolldown'\nimport { CONFIG, PKG } from '../config/index.ts'\nimport {\n buildAllDts,\n createBuildPipeline,\n config as rolldownConfig,\n} from '../rolldown/index.ts'\n\nconst { log } = console\nconst allBuilds = createBuildPipeline()\nconst allBuildsCount = allBuilds.length\n\nconst FORMAT_LABEL: Record<string, string> = {\n cjs: 'CJS',\n es: 'ESM',\n umd: 'UMD',\n iife: 'IIFE',\n}\n\nconst label = (text: string) => chalk.bold.bgCyan.black(` ${text} `)\nconst dim = chalk.dim\nconst bold = chalk.bold\n\nasync function build({\n inputOptions,\n outputOptions,\n}: {\n inputOptions: any\n outputOptions: any\n}) {\n const bundle = await rolldown(inputOptions)\n await bundle.write(outputOptions)\n await bundle.close()\n}\n\n/**\n * Longest common parent directory of a list of file paths.\n * '/lib/index.js' + '/lib/component.js' -> '/lib'\n * '/lib/index.js' + '/lib/sub/foo.js' -> '/lib'\n */\nconst commonParent = (files: string[]): string => {\n if (files.length === 0) return '.'\n const split = files.map((f) => {\n const i = f.lastIndexOf('/')\n return i >= 0 ? f.substring(0, i).split('/') : ['.']\n })\n const head = split[0] as string[]\n let common: string[] = head\n for (const s of split.slice(1)) {\n const next: string[] = []\n for (let i = 0; i < Math.min(common.length, s.length); i++) {\n if (common[i] === s[i]) next.push(common[i] as string)\n else break\n }\n common = next\n }\n return common.length === 0 ? '.' : common.join('/')\n}\n\nconst stripJsExt = (s: string): string => s.replace(/\\.(m?js|cjs)$/, '')\n\n/**\n * Partition variants into groups eligible for multi-entry shared-chunk\n * builds, and singletons that keep the per-entry path.\n *\n * Eligible: same (format, env, platform), explicit `input` set, and a\n * format that supports code-splitting (i.e. not umd/iife — those are\n * inherently standalone bundles).\n */\nconst partitionForSharedChunks = (variants: Record<string, any>[]) => {\n const buckets = new Map<string, Record<string, any>[]>()\n const singles: Record<string, any>[] = []\n for (const v of variants) {\n if (!v.input || ['umd', 'iife'].includes(v.format)) {\n singles.push(v)\n continue\n }\n const key = `${v.format}|${v.env}|${v.platform}`\n const bucket = buckets.get(key) ?? []\n bucket.push(v)\n buckets.set(key, bucket)\n }\n const groups: Record<string, any>[][] = []\n for (const bucket of buckets.values()) {\n if (bucket.length <= 1) singles.push(...bucket)\n else groups.push(bucket)\n }\n return { groups, singles }\n}\n\n/** Build one group of multi-entry variants as a single rolldown invocation. */\nconst buildGroup = async (group: Record<string, any>[]) => {\n // Use the first variant as the representative for format/env/platform —\n // they're identical across the group by construction.\n const head = group[0] as Record<string, any>\n const dir = commonParent(group.map((v) => v.file as string))\n // Entry name = file relative to common parent, with .js/.cjs/.mjs stripped.\n // rolldown preserves '/' in input keys, so nested entries map cleanly to\n // nested output paths via [name] in entryFileNames.\n const inputMap: Record<string, string> = {}\n for (const v of group) {\n const rel = (v.file as string).startsWith(`${dir}/`)\n ? (v.file as string).substring(dir.length + 1)\n : (v.file as string)\n inputMap[stripJsExt(rel)] = v.input as string\n }\n\n // Build via the per-variant config to inherit plugins/externals/etc.,\n // then override input + output for the group.\n const { output, ...inputOptions } = rolldownConfig(head)\n inputOptions.input = inputMap\n const outputOptions = {\n ...output,\n dir,\n entryFileNames: '[name].js',\n chunkFileNames: '_chunks/[name]-[hash].js',\n }\n\n const format = FORMAT_LABEL[head.format] || head.format\n const start = performance.now()\n try {\n await build({ inputOptions, outputOptions })\n } catch (e) {\n log(`\\n${chalk.bold.red('Build failed')}`)\n log(chalk.gray(` Format: ${format}`))\n log(chalk.gray(` Entries: ${Object.keys(inputMap).join(', ')}`))\n log(e)\n throw e\n }\n const duration = Math.round(performance.now() - start)\n log(\n ` ${chalk.green('+')} ${bold(format)} ${dim('->')} ${dim(`${dir}/{${Object.keys(inputMap).join(',')}}.js`)} ${dim(`(${duration}ms, shared chunks)`)}`,\n )\n}\n\nconst buildSingle = async (item: Record<string, any>) => {\n const { output, ...inputOptions } = rolldownConfig(item)\n const format = FORMAT_LABEL[output.format] || output.format\n const start = performance.now()\n try {\n await build({ inputOptions, outputOptions: output })\n } catch (e) {\n log(`\\n${chalk.bold.red('Build failed')}`)\n log(chalk.gray(` Format: ${format}`))\n log(chalk.gray(` File: ${output.dir}/${output.entryFileNames}`))\n log(e)\n throw e\n }\n const duration = Math.round(performance.now() - start)\n log(\n ` ${chalk.green('+')} ${bold(format)} ${dim('->')} ${dim(`${output.dir}/${output.entryFileNames}`)} ${dim(`(${duration}ms)`)}`,\n )\n}\n\nconst createBuilds = async () => {\n const { groups, singles } = partitionForSharedChunks(allBuilds)\n let p = Promise.resolve()\n for (const item of singles) p = p.then(() => buildSingle(item))\n for (const group of groups) p = p.then(() => buildGroup(group))\n return p\n}\n\nconst copyStaticFiles = () => {\n if (!Array.isArray(CONFIG.copyFiles) || CONFIG.copyFiles.length === 0) return\n\n log(`\\n${dim('Copying')} static files...\\n`)\n for (const { from, to } of CONFIG.copyFiles as {\n from: string\n to: string\n }[]) {\n cpSync(from, to, { recursive: true })\n log(` ${chalk.green('+')} ${dim(from)} ${dim('->')} ${dim(to)}`)\n }\n}\n\n/**\n * Build a single DTS entry in an isolated temp directory, then move the\n * largest .d.ts file (the real declarations) to the final output path.\n *\n * Rolldown code-splits DTS output: the entry file is a tiny re-export stub,\n * and the actual types go into a chunk. Building into a temp dir avoids\n * collisions when multiple DTS entries share the same output directory.\n */\nconst buildDtsIsolated = async (\n dtsConfig: ReturnType<typeof buildAllDts>[number],\n) => {\n const { output, file, ...input } = dtsConfig\n const finalDir = output.dir as string\n const entryName = output.entryFileNames as string\n const tempDir = join(finalDir, `__dts_tmp_${entryName.replace(/\\W/g, '_')}`)\n const absTempDir = join(process.cwd(), tempDir)\n\n try {\n // Build into isolated temp directory\n const tempOutput = { ...output, dir: tempDir }\n await build({ inputOptions: input, outputOptions: tempOutput })\n\n // Find the largest .d.ts file — that's the real declarations\n const dtsFiles = readdirSync(absTempDir).filter((f) => f.endsWith('.d.ts'))\n\n let bestFile = dtsFiles[0] || entryName\n let bestSize = 0\n for (const f of dtsFiles) {\n const size = statSync(join(absTempDir, f)).size\n if (size > bestSize) {\n bestSize = size\n bestFile = f\n }\n }\n\n // Move the best file to the final location\n const absFinalDir = join(process.cwd(), finalDir)\n mkdirSync(absFinalDir, { recursive: true })\n renameSync(join(absTempDir, bestFile), join(absFinalDir, entryName))\n\n // Move sourcemap if it exists\n const mapName = `${bestFile}.map`\n try {\n renameSync(\n join(absTempDir, mapName),\n join(absFinalDir, `${entryName}.map`),\n )\n } catch {\n // sourcemap may not exist\n }\n } finally {\n // Always remove the temp dir — even if the build or a post-step\n // throws — so a partial failure can't leak __dts_tmp_* into lib/.\n rmSync(absTempDir, { recursive: true, force: true })\n }\n}\n\nconst generateDeclarations = async () => {\n const dtsConfigs = buildAllDts()\n if (dtsConfigs.length === 0) return\n\n log(`\\n${dim('Generating')} declarations...`)\n\n for (const dtsFile of dtsConfigs) {\n const tscStart = performance.now()\n await buildDtsIsolated(dtsFile)\n\n const tscDuration = Math.round(performance.now() - tscStart)\n log(\n ` ${chalk.green('+')} ${bold('DTS')} ${dim('->')} ${dim(dtsFile.file)} ${dim(`(${tscDuration}ms)`)}`,\n )\n }\n}\n\nconst runBuild = async () => {\n const start = performance.now()\n\n log(\n `\\n${label('rolldown')} ${bold(PKG.name || '')} ${dim(`v${PKG.version || '0.0.0'}`)}\\n`,\n )\n\n log(`${dim('Cleaning')} ${CONFIG.outputDir}/`)\n rmSync(`${process.cwd()}/${CONFIG.outputDir}`, {\n recursive: true,\n force: true,\n })\n\n log(\n `${dim('Building')} ${bold(String(allBuildsCount))} bundle${allBuildsCount > 1 ? 's' : ''}...\\n`,\n )\n\n await createBuilds()\n copyStaticFiles()\n await generateDeclarations()\n\n const total = Math.round(performance.now() - start)\n log(`\\n${chalk.green('Done')} ${dim(`in ${total}ms`)}\\n`)\n}\n\nexport { runBuild }\n"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/scripts/build.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n cpSync,\n existsSync,\n mkdirSync,\n readdirSync,\n renameSync,\n rmSync,\n statSync,\n} from 'node:fs'\nimport { join } from 'node:path'\nimport chalk from 'chalk'\nimport { rolldown } from 'rolldown'\nimport { CONFIG, PKG } from '../config/index.ts'\nimport {\n buildAllDts,\n createBuildPipeline,\n config as rolldownConfig,\n} from '../rolldown/index.ts'\n\nconst { log } = console\nconst allBuilds = createBuildPipeline()\nconst allBuildsCount = allBuilds.length\n\nconst FORMAT_LABEL: Record<string, string> = {\n cjs: 'CJS',\n es: 'ESM',\n umd: 'UMD',\n iife: 'IIFE',\n}\n\nconst label = (text: string) => chalk.bold.bgCyan.black(` ${text} `)\nconst dim = chalk.dim\nconst bold = chalk.bold\n\nasync function build({\n inputOptions,\n outputOptions,\n}: {\n inputOptions: any\n outputOptions: any\n}) {\n const bundle = await rolldown(inputOptions)\n await bundle.write(outputOptions)\n await bundle.close()\n}\n\n/**\n * Longest common parent directory of a list of file paths.\n * '/lib/index.js' + '/lib/component.js' -> '/lib'\n * '/lib/index.js' + '/lib/sub/foo.js' -> '/lib'\n */\nconst commonParent = (files: string[]): string => {\n if (files.length === 0) return '.'\n const split = files.map((f) => {\n const i = f.lastIndexOf('/')\n return i >= 0 ? f.substring(0, i).split('/') : ['.']\n })\n const head = split[0] as string[]\n let common: string[] = head\n for (const s of split.slice(1)) {\n const next: string[] = []\n for (let i = 0; i < Math.min(common.length, s.length); i++) {\n if (common[i] === s[i]) next.push(common[i] as string)\n else break\n }\n common = next\n }\n return common.length === 0 ? '.' : common.join('/')\n}\n\nconst stripJsExt = (s: string): string => s.replace(/\\.(m?js|cjs)$/, '')\n\n/**\n * Partition variants into groups eligible for multi-entry shared-chunk\n * builds, and singletons that keep the per-entry path.\n *\n * Eligible: same (format, env, platform), explicit `input` set, and a\n * format that supports code-splitting (i.e. not umd/iife — those are\n * inherently standalone bundles).\n */\nconst partitionForSharedChunks = (variants: Record<string, any>[]) => {\n const buckets = new Map<string, Record<string, any>[]>()\n const singles: Record<string, any>[] = []\n for (const v of variants) {\n if (!v.input || ['umd', 'iife'].includes(v.format)) {\n singles.push(v)\n continue\n }\n const key = `${v.format}|${v.env}|${v.platform}`\n const bucket = buckets.get(key) ?? []\n bucket.push(v)\n buckets.set(key, bucket)\n }\n const groups: Record<string, any>[][] = []\n for (const bucket of buckets.values()) {\n if (bucket.length <= 1) singles.push(...bucket)\n else groups.push(bucket)\n }\n return { groups, singles }\n}\n\n/** Build one group of multi-entry variants as a single rolldown invocation. */\nconst buildGroup = async (group: Record<string, any>[]) => {\n // Use the first variant as the representative for format/env/platform —\n // they're identical across the group by construction.\n const head = group[0] as Record<string, any>\n const dir = commonParent(group.map((v) => v.file as string))\n // Entry name = file relative to common parent, with .js/.cjs/.mjs stripped.\n // rolldown preserves '/' in input keys, so nested entries map cleanly to\n // nested output paths via [name] in entryFileNames.\n const inputMap: Record<string, string> = {}\n for (const v of group) {\n const rel = (v.file as string).startsWith(`${dir}/`)\n ? (v.file as string).substring(dir.length + 1)\n : (v.file as string)\n inputMap[stripJsExt(rel)] = v.input as string\n }\n\n // Build via the per-variant config to inherit plugins/externals/etc.,\n // then override input + output for the group.\n const { output, ...inputOptions } = rolldownConfig(head)\n inputOptions.input = inputMap\n const outputOptions = {\n ...output,\n dir,\n entryFileNames: '[name].js',\n chunkFileNames: '_chunks/[name]-[hash].js',\n }\n\n const format = FORMAT_LABEL[head.format] || head.format\n const start = performance.now()\n try {\n await build({ inputOptions, outputOptions })\n } catch (e) {\n log(`\\n${chalk.bold.red('Build failed')}`)\n log(chalk.gray(` Format: ${format}`))\n log(chalk.gray(` Entries: ${Object.keys(inputMap).join(', ')}`))\n log(e)\n throw e\n }\n const duration = Math.round(performance.now() - start)\n log(\n ` ${chalk.green('+')} ${bold(format)} ${dim('->')} ${dim(`${dir}/{${Object.keys(inputMap).join(',')}}.js`)} ${dim(`(${duration}ms, shared chunks)`)}`,\n )\n}\n\nconst buildSingle = async (item: Record<string, any>) => {\n const { output, ...inputOptions } = rolldownConfig(item)\n const format = FORMAT_LABEL[output.format] || output.format\n const start = performance.now()\n try {\n await build({ inputOptions, outputOptions: output })\n } catch (e) {\n log(`\\n${chalk.bold.red('Build failed')}`)\n log(chalk.gray(` Format: ${format}`))\n log(chalk.gray(` File: ${output.dir}/${output.entryFileNames}`))\n log(e)\n throw e\n }\n const duration = Math.round(performance.now() - start)\n log(\n ` ${chalk.green('+')} ${bold(format)} ${dim('->')} ${dim(`${output.dir}/${output.entryFileNames}`)} ${dim(`(${duration}ms)`)}`,\n )\n}\n\nconst createBuilds = async () => {\n const { groups, singles } = partitionForSharedChunks(allBuilds)\n let p = Promise.resolve()\n for (const item of singles) p = p.then(() => buildSingle(item))\n for (const group of groups) p = p.then(() => buildGroup(group))\n return p\n}\n\nconst copyStaticFiles = () => {\n if (!Array.isArray(CONFIG.copyFiles) || CONFIG.copyFiles.length === 0) return\n\n log(`\\n${dim('Copying')} static files...\\n`)\n for (const { from, to } of CONFIG.copyFiles as {\n from: string\n to: string\n }[]) {\n cpSync(from, to, { recursive: true })\n log(` ${chalk.green('+')} ${dim(from)} ${dim('->')} ${dim(to)}`)\n }\n}\n\n/**\n * Build a single DTS entry in an isolated temp directory, then move the\n * largest .d.ts file (the real declarations) to the final output path.\n *\n * Rolldown code-splits DTS output: the entry file is a tiny re-export stub,\n * and the actual types go into a chunk. Building into a temp dir avoids\n * collisions when multiple DTS entries share the same output directory.\n */\nconst buildDtsIsolated = async (\n dtsConfig: ReturnType<typeof buildAllDts>[number],\n) => {\n const { output, file, ...input } = dtsConfig\n const finalDir = output.dir as string\n const entryName = output.entryFileNames as string\n const tempDir = join(finalDir, `__dts_tmp_${entryName.replace(/\\W/g, '_')}`)\n const absTempDir = join(process.cwd(), tempDir)\n\n try {\n // Build into isolated temp directory\n const tempOutput = { ...output, dir: tempDir }\n await build({ inputOptions: input, outputOptions: tempOutput })\n\n // Find the largest .d.ts file — that's the real declarations\n const dtsFiles = readdirSync(absTempDir).filter((f) => f.endsWith('.d.ts'))\n\n let bestFile = dtsFiles[0] || entryName\n let bestSize = 0\n for (const f of dtsFiles) {\n const size = statSync(join(absTempDir, f)).size\n if (size > bestSize) {\n bestSize = size\n bestFile = f\n }\n }\n\n // Move the best file to the final location\n const absFinalDir = join(process.cwd(), finalDir)\n mkdirSync(absFinalDir, { recursive: true })\n renameSync(join(absTempDir, bestFile), join(absFinalDir, entryName))\n\n // Move sourcemap if it exists\n const mapName = `${bestFile}.map`\n try {\n renameSync(\n join(absTempDir, mapName),\n join(absFinalDir, `${entryName}.map`),\n )\n } catch {\n // sourcemap may not exist\n }\n } finally {\n // Always remove the temp dir — even if the build or a post-step\n // throws — so a partial failure can't leak __dts_tmp_* into lib/.\n rmSync(absTempDir, { recursive: true, force: true })\n }\n}\n\n/**\n * Build N DTS entries that share an output dir as a SINGLE rolldown call.\n *\n * Each per-entry rolldown call instantiates the slow rolldown-plugin-dts\n * (and its embedded TS compiler) from scratch — that's the\n * `[PLUGIN_TIMINGS] rolldown-plugin-dts:generate` warning rolldown\n * itself surfaces. Doing the work in one call amortizes plugin/compiler\n * setup AND lets common imports (e.g. a shared `types.ts`) emit as one\n * `_chunks/*.d.ts` instead of being inlined into every entry's stub.\n *\n * Caveat the per-entry path also handles: rolldown-plugin-dts (0.25.2)\n * emits `<name>.d.ts` (empty re-export stub) AND `<name>2.d.ts` (the real\n * declarations). We pick the larger file per entry and move it to the\n * intended path — same shape as `buildDtsIsolated`, batched.\n */\nconst escapeRe = (s: string): string => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n/** Build the rolldown invocation options for a grouped DTS build. */\nconst buildGroupedDtsInvocation = (\n head: ReturnType<typeof buildAllDts>[number],\n inputMap: Record<string, string>,\n tempDir: string,\n) => {\n const inputOptions = { ...head, input: inputMap }\n delete (inputOptions as { file?: unknown }).file\n const outputOptions = {\n ...head.output,\n dir: tempDir,\n entryFileNames: '[name].d.ts',\n chunkFileNames: '_chunks/[name]-[hash].d.ts',\n }\n return { inputOptions, outputOptions }\n}\n\n/** Pick the largest `<stem>NUMBER?.d.ts` file in `tempFiles` for an entry. */\nconst pickRealDtsFor = (\n stem: string,\n tempFiles: string[],\n absTempDir: string,\n): string | undefined => {\n const re = new RegExp(`^${escapeRe(stem)}\\\\d*\\\\.d\\\\.ts$`)\n let best: string | undefined\n let bestSize = -1\n for (const f of tempFiles) {\n if (!re.test(f)) continue\n const size = statSync(join(absTempDir, f)).size\n if (size > bestSize) {\n bestSize = size\n best = f\n }\n }\n return best\n}\n\n/**\n * Move each entry's \"real\" .d.ts out of the temp dir to its final path.\n * Returns the list of `oldStem -> newStem` renames the import-path\n * repair step needs to know about.\n */\nconst promoteEntries = (\n entryStems: string[],\n absTempDir: string,\n absFinalDir: string,\n): { oldStem: string; newStem: string }[] => {\n const tempFiles = readdirSync(absTempDir)\n const renamed: { oldStem: string; newStem: string }[] = []\n for (const stem of entryStems) {\n const best = pickRealDtsFor(stem, tempFiles, absTempDir)\n if (!best) continue\n const oldStem = best.replace(/\\.d\\.ts$/, '')\n renameSync(join(absTempDir, best), join(absFinalDir, `${stem}.d.ts`))\n if (oldStem !== stem) renamed.push({ oldStem, newStem: stem })\n }\n return renamed\n}\n\n/**\n * Move the plugin's `_chunks/` dir (shared types) alongside the entries.\n * The `import \"./_chunks/shared-X.js\"` references in entry files resolve\n * to `_chunks/shared-X.d.ts` via TS's adjacent-`.d.ts`-to-`.js` rule.\n */\nconst promoteChunksDir = (absTempDir: string, absFinalDir: string) => {\n const tempChunksDir = join(absTempDir, '_chunks')\n if (!existsSync(tempChunksDir)) return\n const finalChunksDir = join(absFinalDir, '_chunks')\n rmSync(finalChunksDir, { recursive: true, force: true })\n renameSync(tempChunksDir, finalChunksDir)\n}\n\n/**\n * Repair stale import paths. When the plugin code-splits across entries,\n * one entry's .d.ts may reference `./otherEntry2.js` — but after we rename\n * `otherEntry2.d.ts -> otherEntry.d.ts`, that reference no longer resolves.\n * Without this, real consumers fail typechecks with `TS2307: Cannot find\n * module './otherEntry2.js'` (caught by skipLibCheck:false consumers).\n */\nconst repairStaleImports = (\n entryStems: string[],\n absFinalDir: string,\n renamed: { oldStem: string; newStem: string }[],\n) => {\n if (renamed.length === 0) return\n const { readFileSync, writeFileSync } =\n require('node:fs') as typeof import('node:fs')\n for (const stem of entryStems) {\n const filePath = join(absFinalDir, `${stem}.d.ts`)\n let content = readFileSync(filePath, 'utf-8')\n let changed = false\n for (const { oldStem, newStem } of renamed) {\n const re = new RegExp(\n `([\"'\\\\s/])\\\\./${escapeRe(oldStem)}\\\\.js([\"'])`,\n 'g',\n )\n if (re.test(content)) {\n content = content.replace(re, `$1./${newStem}.js$2`)\n changed = true\n }\n }\n if (changed) writeFileSync(filePath, content)\n }\n}\n\nconst buildDtsGrouped = async (\n group: ReturnType<typeof buildAllDts>,\n): Promise<void> => {\n const head = group[0]\n if (!head) return\n const finalDir = head.output.dir as string\n\n const groupTag = group\n .map((g) => (g.output.entryFileNames as string).replace(/\\W/g, '_'))\n .join('_')\n const tempDir = join(finalDir, `__dts_tmp_grp_${groupTag.substring(0, 60)}`)\n const absTempDir = join(process.cwd(), tempDir)\n\n const inputMap: Record<string, string> = {}\n const entryStems: string[] = []\n for (const g of group) {\n const stem = (g.output.entryFileNames as string).replace(/\\.d\\.ts$/, '')\n inputMap[stem] = g.input as string\n entryStems.push(stem)\n }\n\n try {\n await build(buildGroupedDtsInvocation(head, inputMap, tempDir))\n\n const absFinalDir = join(process.cwd(), finalDir)\n mkdirSync(absFinalDir, { recursive: true })\n\n const renamed = promoteEntries(entryStems, absTempDir, absFinalDir)\n promoteChunksDir(absTempDir, absFinalDir)\n repairStaleImports(entryStems, absFinalDir, renamed)\n } finally {\n rmSync(absTempDir, { recursive: true, force: true })\n }\n}\n\n/**\n * Partition DTS configs into groupable buckets by output dir. A bucket\n * of ≥2 entries goes through the single-pass `buildDtsGrouped`; singletons\n * keep `buildDtsIsolated`. Same shape as the JS pipeline in `createBuilds`.\n */\nconst partitionDts = (configs: ReturnType<typeof buildAllDts>) => {\n const buckets = new Map<string, ReturnType<typeof buildAllDts>>()\n for (const c of configs) {\n const k = c.output.dir as string\n const b = buckets.get(k) ?? []\n b.push(c)\n buckets.set(k, b)\n }\n const groups: ReturnType<typeof buildAllDts>[] = []\n const singles: ReturnType<typeof buildAllDts> = []\n for (const b of buckets.values()) {\n if (b.length <= 1) singles.push(...b)\n else groups.push(b)\n }\n return { groups, singles }\n}\n\nconst generateDeclarations = async () => {\n const dtsConfigs = buildAllDts()\n if (dtsConfigs.length === 0) return\n\n log(`\\n${dim('Generating')} declarations...`)\n\n const { groups, singles } = partitionDts(dtsConfigs)\n\n for (const dtsFile of singles) {\n const tscStart = performance.now()\n await buildDtsIsolated(dtsFile)\n const tscDuration = Math.round(performance.now() - tscStart)\n log(\n ` ${chalk.green('+')} ${bold('DTS')} ${dim('->')} ${dim(dtsFile.file)} ${dim(`(${tscDuration}ms)`)}`,\n )\n }\n\n for (const group of groups) {\n const tscStart = performance.now()\n await buildDtsGrouped(group)\n const tscDuration = Math.round(performance.now() - tscStart)\n const names = group.map((g) => g.output.entryFileNames as string).join(', ')\n log(\n ` ${chalk.green('+')} ${bold('DTS')} ${dim('->')} ${dim(\n `${group[0]?.output.dir}/{${names}}`,\n )} ${dim(`(${tscDuration}ms, single-pass)`)}`,\n )\n }\n}\n\nconst runBuild = async () => {\n const start = performance.now()\n\n log(\n `\\n${label('rolldown')} ${bold(PKG.name || '')} ${dim(`v${PKG.version || '0.0.0'}`)}\\n`,\n )\n\n log(`${dim('Cleaning')} ${CONFIG.outputDir}/`)\n rmSync(`${process.cwd()}/${CONFIG.outputDir}`, {\n recursive: true,\n force: true,\n })\n\n log(\n `${dim('Building')} ${bold(String(allBuildsCount))} bundle${allBuildsCount > 1 ? 's' : ''}...\\n`,\n )\n\n await createBuilds()\n copyStaticFiles()\n await generateDeclarations()\n\n const total = Math.round(performance.now() - start)\n log(`\\n${chalk.green('Done')} ${dim(`in ${total}ms`)}\\n`)\n}\n\nexport { runBuild }\n"]}
@@ -11,9 +11,10 @@ declare const _default: {
11
11
  outputDir: string;
12
12
  };
13
13
  filesize: boolean;
14
+ sourcemap: boolean | "inline" | "hidden";
14
15
  extensions: string[];
15
16
  include: string[];
16
- external: string[];
17
+ external: (string | RegExp)[];
17
18
  exclude: string[];
18
19
  globals: {
19
20
  react: string;
@@ -1 +1 @@
1
- {"version":3,"file":"baseConfig.d.ts","sourceRoot":"","sources":["../../../src/config/baseConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;aAoCM;QACE,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,EAAE,GACH,SAAS;;eAEW;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,SAAS;YAC7C,MAAM,GAAG,SAAS;YAClB,MAAM,GAAG,SAAS;WACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;aACvC,OAAO,EAAE;;AAjD1B,wBAkDC"}
1
+ {"version":3,"file":"baseConfig.d.ts","sourceRoot":"","sources":["../../../src/config/baseConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;eAmBqB,OAAO,GAAG,QAAQ,GAAG,QAAQ;;;cAOH,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;;;;;;;aAqB5D;QACE,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,EAAE,GACH,SAAS;;eAEW;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,SAAS;YAC7C,MAAM,GAAG,SAAS;YAClB,MAAM,GAAG,SAAS;WACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;aACvC,OAAO,EAAE;;AA5D1B,wBA6DC"}
@@ -15,7 +15,7 @@ declare const rolldownConfig: ({ file, format, env, platform, input: entryInput,
15
15
  entryFileNames: any;
16
16
  format: any;
17
17
  globals: Record<string, string>;
18
- sourcemap: boolean;
18
+ sourcemap: any;
19
19
  sourcemapIgnoreList: (relativeSourcePath: string) => boolean;
20
20
  exports: "named" | undefined;
21
21
  name: any;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/scripts/build.ts"],"names":[],"mappings":"AAmQA,QAAA,MAAM,QAAQ,qBAuBb,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/scripts/build.ts"],"names":[],"mappings":"AAocA,QAAA,MAAM,QAAQ,qBAuBb,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitus-labs/tools-rolldown",
3
- "version": "2.4.0",
3
+ "version": "2.6.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,16 +41,16 @@
41
41
  "access": "public"
42
42
  },
43
43
  "dependencies": {
44
- "@vitus-labs/tools-core": "^2.3.0",
44
+ "@vitus-labs/tools-core": "^2.5.0",
45
45
  "chalk": "^5.6.2",
46
- "rolldown": "^1.0.1",
47
- "rolldown-plugin-dts": "^0.25.1",
46
+ "rolldown": "^1.1.3",
47
+ "rolldown-plugin-dts": "^0.26.0",
48
48
  "rollup-plugin-filesize": "^10.0.0",
49
49
  "rollup-plugin-visualizer": "^7.0.1"
50
50
  },
51
51
  "devDependencies": {
52
- "@types/node": "^25.8.0",
53
- "@vitus-labs/tools-typescript": "^2.3.0",
52
+ "@types/node": "^26.0.1",
53
+ "@vitus-labs/tools-typescript": "^2.5.0",
54
54
  "typescript": "^6.0.3"
55
55
  }
56
56
  }