@vitus-labs/tools-rolldown 2.3.0 → 2.3.1
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/lib/scripts/build.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { cpSync, mkdirSync, readdirSync, renameSync, statSync } from 'node:fs';
|
|
1
|
+
import { cpSync, mkdirSync, readdirSync, renameSync, rmSync, statSync, } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
-
import { rimraf } from 'rimraf';
|
|
5
4
|
import { rolldown } from 'rolldown';
|
|
6
5
|
import { CONFIG, PKG } from "../config/index.js";
|
|
7
6
|
import { buildAllDts, createBuildPipeline, config as rolldownConfig, } from "../rolldown/index.js";
|
|
@@ -67,35 +66,40 @@ const buildDtsIsolated = async (dtsConfig) => {
|
|
|
67
66
|
const finalDir = output.dir;
|
|
68
67
|
const entryName = output.entryFileNames;
|
|
69
68
|
const tempDir = join(finalDir, `__dts_tmp_${entryName.replace(/\W/g, '_')}`);
|
|
70
|
-
// Build into isolated temp directory
|
|
71
|
-
const tempOutput = { ...output, dir: tempDir };
|
|
72
|
-
await build({ inputOptions: input, outputOptions: tempOutput });
|
|
73
|
-
// Find the largest .d.ts file — that's the real declarations
|
|
74
69
|
const absTempDir = join(process.cwd(), tempDir);
|
|
75
|
-
const dtsFiles = readdirSync(absTempDir).filter((f) => f.endsWith('.d.ts'));
|
|
76
|
-
let bestFile = dtsFiles[0] || entryName;
|
|
77
|
-
let bestSize = 0;
|
|
78
|
-
for (const f of dtsFiles) {
|
|
79
|
-
const size = statSync(join(absTempDir, f)).size;
|
|
80
|
-
if (size > bestSize) {
|
|
81
|
-
bestSize = size;
|
|
82
|
-
bestFile = f;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
// Move the best file to the final location
|
|
86
|
-
const absFinalDir = join(process.cwd(), finalDir);
|
|
87
|
-
mkdirSync(absFinalDir, { recursive: true });
|
|
88
|
-
renameSync(join(absTempDir, bestFile), join(absFinalDir, entryName));
|
|
89
|
-
// Move sourcemap if it exists
|
|
90
|
-
const mapName = `${bestFile}.map`;
|
|
91
70
|
try {
|
|
92
|
-
|
|
71
|
+
// Build into isolated temp directory
|
|
72
|
+
const tempOutput = { ...output, dir: tempDir };
|
|
73
|
+
await build({ inputOptions: input, outputOptions: tempOutput });
|
|
74
|
+
// Find the largest .d.ts file — that's the real declarations
|
|
75
|
+
const dtsFiles = readdirSync(absTempDir).filter((f) => f.endsWith('.d.ts'));
|
|
76
|
+
let bestFile = dtsFiles[0] || entryName;
|
|
77
|
+
let bestSize = 0;
|
|
78
|
+
for (const f of dtsFiles) {
|
|
79
|
+
const size = statSync(join(absTempDir, f)).size;
|
|
80
|
+
if (size > bestSize) {
|
|
81
|
+
bestSize = size;
|
|
82
|
+
bestFile = f;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Move the best file to the final location
|
|
86
|
+
const absFinalDir = join(process.cwd(), finalDir);
|
|
87
|
+
mkdirSync(absFinalDir, { recursive: true });
|
|
88
|
+
renameSync(join(absTempDir, bestFile), join(absFinalDir, entryName));
|
|
89
|
+
// Move sourcemap if it exists
|
|
90
|
+
const mapName = `${bestFile}.map`;
|
|
91
|
+
try {
|
|
92
|
+
renameSync(join(absTempDir, mapName), join(absFinalDir, `${entryName}.map`));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// sourcemap may not exist
|
|
96
|
+
}
|
|
93
97
|
}
|
|
94
|
-
|
|
95
|
-
//
|
|
98
|
+
finally {
|
|
99
|
+
// Always remove the temp dir — even if the build or a post-step
|
|
100
|
+
// throws — so a partial failure can't leak __dts_tmp_* into lib/.
|
|
101
|
+
rmSync(absTempDir, { recursive: true, force: true });
|
|
96
102
|
}
|
|
97
|
-
// Clean up temp directory
|
|
98
|
-
rimraf.sync(absTempDir);
|
|
99
103
|
};
|
|
100
104
|
const generateDeclarations = async () => {
|
|
101
105
|
const dtsConfigs = buildAllDts();
|
|
@@ -113,7 +117,10 @@ const runBuild = async () => {
|
|
|
113
117
|
const start = performance.now();
|
|
114
118
|
log(`\n${label('rolldown')} ${bold(PKG.name || '')} ${dim(`v${PKG.version || '0.0.0'}`)}\n`);
|
|
115
119
|
log(`${dim('Cleaning')} ${CONFIG.outputDir}/`);
|
|
116
|
-
|
|
120
|
+
rmSync(`${process.cwd()}/${CONFIG.outputDir}`, {
|
|
121
|
+
recursive: true,
|
|
122
|
+
force: true,
|
|
123
|
+
});
|
|
117
124
|
log(`${dim('Building')} ${bold(String(allBuildsCount))} bundle${allBuildsCount > 1 ? 's' : ''}...\n`);
|
|
118
125
|
await createBuilds();
|
|
119
126
|
copyStaticFiles();
|
package/lib/scripts/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/scripts/build.ts"],"names":[],"mappings":"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","sourcesContent":["import { cpSync, mkdirSync, readdirSync, renameSync, statSync } from 'node:fs'\nimport { join } from 'node:path'\nimport chalk from 'chalk'\nimport { rimraf } from 'rimraf'\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\nconst createBuilds = async () => {\n let p = Promise.resolve()\n\n allBuilds.forEach((item: Record<string, any>) => {\n const { output, ...input } = rolldownConfig(item)\n const format = FORMAT_LABEL[output.format] || output.format\n p = p.then(() => {\n const start = performance.now()\n\n return build({ inputOptions: input, outputOptions: output })\n .then(() => {\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 .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 })\n })\n\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\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 absTempDir = join(process.cwd(), tempDir)\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(join(absTempDir, mapName), join(absFinalDir, `${entryName}.map`))\n } catch {\n // sourcemap may not exist\n }\n\n // Clean up temp directory\n rimraf.sync(absTempDir)\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 rimraf.sync(`${process.cwd()}/${CONFIG.outputDir}`)\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 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\nconst createBuilds = async () => {\n let p = Promise.resolve()\n\n allBuilds.forEach((item: Record<string, any>) => {\n const { output, ...input } = rolldownConfig(item)\n const format = FORMAT_LABEL[output.format] || output.format\n p = p.then(() => {\n const start = performance.now()\n\n return build({ inputOptions: input, outputOptions: output })\n .then(() => {\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 .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 })\n })\n\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/scripts/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/scripts/build.ts"],"names":[],"mappings":"AAiKA,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.3.
|
|
3
|
+
"version": "2.3.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -41,17 +41,16 @@
|
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@vitus-labs/tools-core": "^2.
|
|
44
|
+
"@vitus-labs/tools-core": "^2.3.0",
|
|
45
45
|
"chalk": "^5.6.2",
|
|
46
|
-
"
|
|
47
|
-
"rolldown": "^
|
|
48
|
-
"rolldown-plugin-dts": "^0.23.2",
|
|
46
|
+
"rolldown": "^1.0.1",
|
|
47
|
+
"rolldown-plugin-dts": "^0.25.1",
|
|
49
48
|
"rollup-plugin-filesize": "^10.0.0",
|
|
50
49
|
"rollup-plugin-visualizer": "^7.0.1"
|
|
51
50
|
},
|
|
52
51
|
"devDependencies": {
|
|
53
|
-
"@types/node": "^25.
|
|
54
|
-
"@vitus-labs/tools-typescript": "^2.
|
|
52
|
+
"@types/node": "^25.8.0",
|
|
53
|
+
"@vitus-labs/tools-typescript": "^2.3.0",
|
|
55
54
|
"typescript": "^6.0.3"
|
|
56
55
|
}
|
|
57
56
|
}
|