@longzai-intelligence-builder/cli 0.0.4 → 0.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,oCAAoC,CAAC;AA+DrF;;;;;GAKG;AACH,iBAAe,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DzF;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,oCAAoC,CAAC;AAgErF;;;;;GAKG;AACH,iBAAe,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFzF;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/build.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { rm } from 'node:fs/promises';
2
- import { resolve } from 'node:path';
2
+ import { dirname, resolve } from 'node:path';
3
3
  import process from 'node:process';
4
+ import { resolveTsconfig, readTsBuildInfoFile } from '@longzai-intelligence-builder/core';
4
5
  import { build } from 'rolldown';
5
6
  import { dts } from '@longzai-intelligence-tsdown/rolldown-plugin-dts';
6
7
  /**
@@ -62,11 +63,27 @@ async function runBuild(config, cwd = process.cwd()) {
62
63
  const formats = normalizeFormat(config.format);
63
64
  const outdir = config.outdir ?? 'dist';
64
65
  /**
65
- * 构建前清理输出目录
66
+ * 构建前清理产物
67
+ *
68
+ * 清理本次构建的全部产物:
69
+ * - outdir:rolldown 打包产物
70
+ * - tsBuildInfoFile:dts 经 tsgo 产生的增量缓存
71
+ *
72
+ * tsBuildInfoFile 路径相对 tsconfig 文件目录解析(非 cwd),
73
+ * 避免残留缓存导致 tsgo 跳过输出、dts 残缺
66
74
  */
67
75
  if (config.clean !== false) {
68
76
  const outPath = resolve(cwd, outdir);
69
77
  await rm(outPath, { recursive: true, force: true }).catch(() => { });
78
+ /**
79
+ * 读 tsconfig 的 tsBuildInfoFile,相对 tsconfig 文件目录解析后清理
80
+ */
81
+ const tsconfigPath = resolveTsconfig(cwd);
82
+ const tsBuildInfoFile = await readTsBuildInfoFile(tsconfigPath);
83
+ if (tsBuildInfoFile) {
84
+ const tsBuildInfoPath = resolve(dirname(tsconfigPath), tsBuildInfoFile);
85
+ await rm(tsBuildInfoPath, { recursive: true, force: true }).catch(() => { });
86
+ }
70
87
  }
71
88
  /**
72
89
  * 解析入口配置
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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","sourcesContent":["import { rm } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport process from 'node:process';\n\nimport type { BuilderConfig, BuildFormat } from '@longzai-intelligence-builder/core';\nimport { build, type InputOptions, type OutputOptions, type Plugin } from 'rolldown';\nimport { dts } from '@longzai-intelligence-tsdown/rolldown-plugin-dts';\n\n/**\n * 规范化 format 为数组\n *\n * @param format - 格式配置\n * @returns 格式数组\n */\nfunction normalizeFormat(format: BuilderConfig['format']): BuildFormat[] {\n if (!format) return ['es'];\n return Array.isArray(format) ? format : [format];\n}\n\n/**\n * 根据 format 和 outExtensions 计算输出文件扩展名\n *\n * @param format - 输出格式\n * @param outExtensions - 自定义扩展名函数\n * @returns 文件扩展名对象\n */\nfunction resolveExtensions(\n format: BuildFormat,\n outExtensions?: BuilderConfig['outExtensions'],\n): { js: string; dts: string } {\n const custom = outExtensions?.();\n if (custom?.js) {\n return { js: custom.js, dts: custom.dts ?? '.d.ts' };\n }\n\n if (format === 'cjs') {\n return { js: '.cjs', dts: '.d.cts' };\n }\n\n return { js: '.js', dts: '.d.ts' };\n}\n\n/**\n * 构建 dts 插件配置\n *\n * @param config - 构建配置\n * @returns dts 插件选项或 null\n */\nfunction resolveDtsOptions(config: BuilderConfig): { tsconfig?: string; sourcemap?: boolean } | null {\n if (config.dts === false || config.dts === undefined) {\n return null;\n }\n\n if (config.dts === true) {\n return {};\n }\n\n if (config.dts.enabled === false) {\n return null;\n }\n\n return {\n tsconfig: config.dts.tsconfig,\n sourcemap: config.dts.sourcemap,\n };\n}\n\n/**\n * 将 BuilderConfig 转换为 rolldown 的 RolldownOptions 并执行构建\n *\n * @param config - builder 构建配置\n * @param cwd - 当前工作目录\n */\nasync function runBuild(config: BuilderConfig, cwd: string = process.cwd()): Promise<void> {\n const formats = normalizeFormat(config.format);\n const outdir = config.outdir ?? 'dist';\n\n /**\n * 构建前清理输出目录\n */\n if (config.clean !== false) {\n const outPath = resolve(cwd, outdir);\n await rm(outPath, { recursive: true, force: true }).catch(() => {});\n }\n\n /**\n * 解析入口配置\n */\n const entry = config.entry ?? { index: 'src/index.ts' };\n const resolvedEntry = typeof entry === 'string' ? { index: entry } : entry;\n\n /**\n * 构建 dts 插件(仅在需要时)\n */\n const dtsOptions = resolveDtsOptions(config);\n const dtsPlugins: Plugin[] = dtsOptions\n ? dts({\n tsconfig: dtsOptions.tsconfig ?? config.tsconfig,\n sourcemap: dtsOptions.sourcemap,\n })\n : [];\n\n /**\n * 构建 rolldown 输入选项\n */\n const inputOptions: InputOptions = {\n input: resolvedEntry,\n external: config.external,\n plugins: [...dtsPlugins, ...(config.plugins ?? [])],\n ...config.inputOptions,\n };\n\n if (config.deps?.skipNodeModulesBundle !== false) {\n inputOptions.external = config.external;\n }\n\n /**\n * 为每种格式构建输出选项并执行\n */\n for (const format of formats) {\n const ext = resolveExtensions(format, config.outExtensions);\n\n const outputOptions: OutputOptions = {\n format: format === 'es' ? 'esm' : format,\n dir: outdir,\n entryFileNames: `[name]${ext.js}`,\n sourcemap: config.sourcemap,\n minify: config.minify,\n ...config.outputOptions,\n };\n\n await build({\n ...inputOptions,\n output: outputOptions,\n });\n }\n}\n\nexport { runBuild };\n"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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","sourcesContent":["import { rm } from 'node:fs/promises';\nimport { dirname, resolve } from 'node:path';\nimport process from 'node:process';\n\nimport type { BuilderConfig, BuildFormat } from '@longzai-intelligence-builder/core';\nimport { resolveTsconfig, readTsBuildInfoFile } from '@longzai-intelligence-builder/core';\nimport { build, type InputOptions, type OutputOptions, type Plugin } from 'rolldown';\nimport { dts } from '@longzai-intelligence-tsdown/rolldown-plugin-dts';\n\n/**\n * 规范化 format 为数组\n *\n * @param format - 格式配置\n * @returns 格式数组\n */\nfunction normalizeFormat(format: BuilderConfig['format']): BuildFormat[] {\n if (!format) return ['es'];\n return Array.isArray(format) ? format : [format];\n}\n\n/**\n * 根据 format 和 outExtensions 计算输出文件扩展名\n *\n * @param format - 输出格式\n * @param outExtensions - 自定义扩展名函数\n * @returns 文件扩展名对象\n */\nfunction resolveExtensions(\n format: BuildFormat,\n outExtensions?: BuilderConfig['outExtensions'],\n): { js: string; dts: string } {\n const custom = outExtensions?.();\n if (custom?.js) {\n return { js: custom.js, dts: custom.dts ?? '.d.ts' };\n }\n\n if (format === 'cjs') {\n return { js: '.cjs', dts: '.d.cts' };\n }\n\n return { js: '.js', dts: '.d.ts' };\n}\n\n/**\n * 构建 dts 插件配置\n *\n * @param config - 构建配置\n * @returns dts 插件选项或 null\n */\nfunction resolveDtsOptions(config: BuilderConfig): { tsconfig?: string; sourcemap?: boolean } | null {\n if (config.dts === false || config.dts === undefined) {\n return null;\n }\n\n if (config.dts === true) {\n return {};\n }\n\n if (config.dts.enabled === false) {\n return null;\n }\n\n return {\n tsconfig: config.dts.tsconfig,\n sourcemap: config.dts.sourcemap,\n };\n}\n\n/**\n * 将 BuilderConfig 转换为 rolldown 的 RolldownOptions 并执行构建\n *\n * @param config - builder 构建配置\n * @param cwd - 当前工作目录\n */\nasync function runBuild(config: BuilderConfig, cwd: string = process.cwd()): Promise<void> {\n const formats = normalizeFormat(config.format);\n const outdir = config.outdir ?? 'dist';\n\n /**\n * 构建前清理产物\n *\n * 清理本次构建的全部产物:\n * - outdir:rolldown 打包产物\n * - tsBuildInfoFile:dts 经 tsgo 产生的增量缓存\n *\n * tsBuildInfoFile 路径相对 tsconfig 文件目录解析(非 cwd),\n * 避免残留缓存导致 tsgo 跳过输出、dts 残缺\n */\n if (config.clean !== false) {\n const outPath = resolve(cwd, outdir);\n await rm(outPath, { recursive: true, force: true }).catch(() => {});\n\n /**\n * 读 tsconfig 的 tsBuildInfoFile,相对 tsconfig 文件目录解析后清理\n */\n const tsconfigPath = resolveTsconfig(cwd);\n const tsBuildInfoFile = await readTsBuildInfoFile(tsconfigPath);\n if (tsBuildInfoFile) {\n const tsBuildInfoPath = resolve(dirname(tsconfigPath), tsBuildInfoFile);\n await rm(tsBuildInfoPath, { recursive: true, force: true }).catch(() => {});\n }\n }\n\n /**\n * 解析入口配置\n */\n const entry = config.entry ?? { index: 'src/index.ts' };\n const resolvedEntry = typeof entry === 'string' ? { index: entry } : entry;\n\n /**\n * 构建 dts 插件(仅在需要时)\n */\n const dtsOptions = resolveDtsOptions(config);\n const dtsPlugins: Plugin[] = dtsOptions\n ? dts({\n tsconfig: dtsOptions.tsconfig ?? config.tsconfig,\n sourcemap: dtsOptions.sourcemap,\n })\n : [];\n\n /**\n * 构建 rolldown 输入选项\n */\n const inputOptions: InputOptions = {\n input: resolvedEntry,\n external: config.external,\n plugins: [...dtsPlugins, ...(config.plugins ?? [])],\n ...config.inputOptions,\n };\n\n if (config.deps?.skipNodeModulesBundle !== false) {\n inputOptions.external = config.external;\n }\n\n /**\n * 为每种格式构建输出选项并执行\n */\n for (const format of formats) {\n const ext = resolveExtensions(format, config.outExtensions);\n\n const outputOptions: OutputOptions = {\n format: format === 'es' ? 'esm' : format,\n dir: outdir,\n entryFileNames: `[name]${ext.js}`,\n sourcemap: config.sourcemap,\n minify: config.minify,\n ...config.outputOptions,\n };\n\n await build({\n ...inputOptions,\n output: outputOptions,\n });\n }\n}\n\nexport { runBuild };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longzai-intelligence-builder/cli",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -22,10 +22,10 @@
22
22
  "test": "bun test",
23
23
  "test:watch": "bun test --watch",
24
24
  "test:coverage": "bun test --coverage",
25
- "clean": "rimraf dist out .cache"
25
+ "clean": "lzi-dev-cli clean"
26
26
  },
27
27
  "dependencies": {
28
- "@longzai-intelligence-builder/core": "0.0.4",
28
+ "@longzai-intelligence-builder/core": "0.0.5",
29
29
  "@longzai-intelligence-shared-config/core": "^0.0.4",
30
30
  "@longzai-intelligence-tsdown/rolldown-plugin-dts": "^0.1.1",
31
31
  "rolldown": "^1.1.5"