@vitus-labs/tools-rolldown 1.15.3 → 1.15.5

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.15.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#98](https://github.com/vitus-labs/tools/pull/98) [`9ec732d`](https://github.com/vitus-labs/tools/commit/9ec732d7899c10e035cce253088eaa10bf63f1af) Thanks [@vitbokisch](https://github.com/vitbokisch)! - Resolve `.tsx`, `.js`, and `.jsx` extensions for DTS subpath export inputs instead of assuming `.ts`
8
+
9
+ - Updated dependencies []:
10
+ - @vitus-labs/tools-core@1.15.5
11
+
12
+ ## 1.15.4
13
+
14
+ ### Patch Changes
15
+
16
+ - [#85](https://github.com/vitus-labs/tools/pull/85) [`c0b6735`](https://github.com/vitus-labs/tools/commit/c0b6735c3255f0fa275d247b3dee6f95696e0fda) Thanks [@vitbokisch](https://github.com/vitbokisch)! - Pass `emitDtsOnly: true` to rolldown-plugin-dts to prevent JS output chunks in declaration builds
17
+
18
+ - Updated dependencies []:
19
+ - @vitus-labs/tools-core@1.15.4
20
+
3
21
  ## 1.15.3
4
22
 
5
23
  ### Patch Changes
@@ -1,3 +1,4 @@
1
+ import { existsSync } from 'node:fs';
1
2
  import { swapGlobals } from '@vitus-labs/tools-core';
2
3
  import { dts } from 'rolldown-plugin-dts';
3
4
  import filesize from 'rollup-plugin-filesize';
@@ -112,7 +113,12 @@ const createDtsConfig = (typesFilePath, inputFile) => {
112
113
  external: CONFIG.bundleAll
113
114
  ? []
114
115
  : [...PKG.externalDependencies, ...CONFIG.external],
115
- plugins: [...dts({ tsconfig: 'tsconfig.json' })],
116
+ plugins: [
117
+ ...dts({
118
+ tsconfig: 'tsconfig.json',
119
+ emitDtsOnly: true,
120
+ }),
121
+ ],
116
122
  output: {
117
123
  dir,
118
124
  entryFileNames: entryFileName,
@@ -125,6 +131,14 @@ const createDtsConfig = (typesFilePath, inputFile) => {
125
131
  };
126
132
  /** Check if exports object uses subpath keys */
127
133
  const isSubpathExports = (obj) => Object.keys(obj).some((k) => k === '.' || k.startsWith('./'));
134
+ /** Resolve the actual source file extension (.ts, .tsx, etc.) */
135
+ const resolveWithExtension = (path) => {
136
+ for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {
137
+ if (existsSync(`${path}${ext}`))
138
+ return `${path}${ext}`;
139
+ }
140
+ return `${path}.ts`;
141
+ };
128
142
  /** Resolve input .ts file from a subpath export key using convention. */
129
143
  const resolveSubpathInput = (exportPath) => {
130
144
  if (exportPath === '.')
@@ -161,8 +175,9 @@ const buildAllDts = () => {
161
175
  if (!typesPath)
162
176
  continue;
163
177
  const resolved = resolveSubpathInput(exportPath);
164
- // Ensure .ts extension — bun condition already has it, convention needs it
165
- const inputFile = resolved.endsWith('.ts') ? resolved : `${resolved}.ts`;
178
+ const inputFile = resolved.endsWith('.ts') || resolved.endsWith('.tsx')
179
+ ? resolved
180
+ : resolveWithExtension(resolved);
166
181
  results.push(createDtsConfig(typesPath, inputFile));
167
182
  }
168
183
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/rolldown/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { swapGlobals } from '@vitus-labs/tools-core'\nimport type { RolldownPlugin } from 'rolldown'\nimport { dts } from 'rolldown-plugin-dts'\nimport filesize from 'rollup-plugin-filesize'\nimport { visualizer } from 'rollup-plugin-visualizer'\nimport { CONFIG, PKG, PLATFORMS } from '../config/index.js'\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 = CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external]\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: CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external],\n plugins: [...(dts({ tsconfig: 'tsconfig.json' }) as RolldownPlugin[])],\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 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 // Ensure .ts extension — bun condition already has it, convention needs it\n const inputFile = resolved.endsWith('.ts') ? resolved : `${resolved}.ts`\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 { swapGlobals } from '@vitus-labs/tools-core'\nimport type { RolldownPlugin } from 'rolldown'\nimport { dts } from 'rolldown-plugin-dts'\nimport filesize from 'rollup-plugin-filesize'\nimport { visualizer } from 'rollup-plugin-visualizer'\nimport { CONFIG, PKG, PLATFORMS } from '../config/index.js'\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 = CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external]\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: CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external],\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 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/rolldown/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AA0E9C,QAAA,MAAM,cAAc,GAAI,qDAMrB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;kDA6B0B,MAAM;;;;;;;;;;;;;CAmBrD,CAAA;AAED,QAAA,MAAM,eAAe,GAAI,eAAe,MAAM,EAAE,WAAW,MAAM;;;;;;;;;;;;;;;;;CA0BhE,CAAA;AAaD,QAAA,MAAM,QAAQ,QAAO,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,IAUzD,CAAA;AAED,0EAA0E;AAC1E,QAAA,MAAM,WAAW,QAAO,UAAU,CAAC,OAAO,eAAe,CAAC,EAyBzD,CAAA;AAED,eAAe,cAAc,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/rolldown/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AA0E9C,QAAA,MAAM,cAAc,GAAI,qDAMrB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;kDA6B0B,MAAM;;;;;;;;;;;;;CAmBrD,CAAA;AAED,QAAA,MAAM,eAAe,GAAI,eAAe,MAAM,EAAE,WAAW,MAAM;;;;;;;;;;;;;;;;;CA+BhE,CAAA;AAqBD,QAAA,MAAM,QAAQ,QAAO,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,IAUzD,CAAA;AAED,0EAA0E;AAC1E,QAAA,MAAM,WAAW,QAAO,UAAU,CAAC,OAAO,eAAe,CAAC,EA2BzD,CAAA;AAED,eAAe,cAAc,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitus-labs/tools-rolldown",
3
- "version": "1.15.3",
3
+ "version": "1.15.5",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,3 +1,4 @@
1
+ import { existsSync } from 'node:fs'
1
2
  import { swapGlobals } from '@vitus-labs/tools-core'
2
3
  import type { RolldownPlugin } from 'rolldown'
3
4
  import { dts } from 'rolldown-plugin-dts'
@@ -145,7 +146,12 @@ const createDtsConfig = (typesFilePath: string, inputFile: string) => {
145
146
  external: CONFIG.bundleAll
146
147
  ? []
147
148
  : [...PKG.externalDependencies, ...CONFIG.external],
148
- plugins: [...(dts({ tsconfig: 'tsconfig.json' }) as RolldownPlugin[])],
149
+ plugins: [
150
+ ...(dts({
151
+ tsconfig: 'tsconfig.json',
152
+ emitDtsOnly: true,
153
+ }) as RolldownPlugin[]),
154
+ ],
149
155
  output: {
150
156
  dir,
151
157
  entryFileNames: entryFileName,
@@ -161,6 +167,14 @@ const createDtsConfig = (typesFilePath: string, inputFile: string) => {
161
167
  const isSubpathExports = (obj: Record<string, any>): boolean =>
162
168
  Object.keys(obj).some((k) => k === '.' || k.startsWith('./'))
163
169
 
170
+ /** Resolve the actual source file extension (.ts, .tsx, etc.) */
171
+ const resolveWithExtension = (path: string): string => {
172
+ for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {
173
+ if (existsSync(`${path}${ext}`)) return `${path}${ext}`
174
+ }
175
+ return `${path}.ts`
176
+ }
177
+
164
178
  /** Resolve input .ts file from a subpath export key using convention. */
165
179
  const resolveSubpathInput = (exportPath: string): string => {
166
180
  if (exportPath === '.') return `${CONFIG.sourceDir}/index.ts`
@@ -200,8 +214,10 @@ const buildAllDts = (): ReturnType<typeof createDtsConfig>[] => {
200
214
  const typesPath = (exportConfig as Record<string, string>).types
201
215
  if (!typesPath) continue
202
216
  const resolved = resolveSubpathInput(exportPath)
203
- // Ensure .ts extension — bun condition already has it, convention needs it
204
- const inputFile = resolved.endsWith('.ts') ? resolved : `${resolved}.ts`
217
+ const inputFile =
218
+ resolved.endsWith('.ts') || resolved.endsWith('.tsx')
219
+ ? resolved
220
+ : resolveWithExtension(resolved)
205
221
  results.push(createDtsConfig(typesPath, inputFile))
206
222
  }
207
223