mirror of
https://github.com/langgenius/dify.git
synced 2026-05-23 18:38:26 +08:00
Replaces the hand-written src/commands/tree.ts with a build-time-generated
artifact derived from src/commands/**/index.ts. tree.ts becomes a one-line
re-export of tree.generated.ts. Determinism: lexicographic sort, LF pinned
via .gitattributes, atomic write (tmp + rename), CI-gated by `pnpm tree:check`.
Codegen script (cli/scripts/generate-command-tree.ts) walks the commands
tree, derives canonical PascalCase identifiers (with reserved-word + hyphen
handling), and emits a static ESM module with sorted default imports and a
nested literal of shape CommandTree. Shared exclusion predicate
(isExcludedCommandPath) consumed by both codegen and coverage.test.ts so
underscore-prefixed segments stay non-commands.
Wired pre* lifecycle hooks (prebuild/predev/pretest) and ci composite
gating `tree:check` first. Pack now emits .js outputs (fixedExtension:false)
to drop .mjs; bin/run.js stays on .js. Vitest test.include extended to
cover scripts/.
Framework additions bundled in:
- static hidden = true omits command from printTopLevelHelp listing
(still resolves and runs when invoked)
- static deprecated = '...' prints "deprecated: <msg>" to stderr before
constructing the command
Verified: pnpm ci green (tree:check ok, tsc clean, lint clean, 702 tests
pass, build complete). Smoke: node bin/run.js version + auth login --help,
add-a-command flow, loose-file error case all behave as expected.
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { defineConfig } from 'vite-plus'
|
|
import { resolveBuildInfo } from './scripts/lib/resolve-buildinfo.js'
|
|
|
|
const buildInfo = resolveBuildInfo()
|
|
|
|
export default defineConfig({
|
|
pack: {
|
|
entry: ['src/index.ts', 'src/commands/**/*.ts', 'src/framework/**/*.ts'],
|
|
format: ['esm'],
|
|
fixedExtension: false,
|
|
dts: true,
|
|
clean: true,
|
|
sourcemap: true,
|
|
treeshake: false,
|
|
outDir: 'dist',
|
|
target: 'node22',
|
|
define: {
|
|
__DIFYCTL_VERSION__: JSON.stringify(buildInfo.version),
|
|
__DIFYCTL_COMMIT__: JSON.stringify(buildInfo.commit),
|
|
__DIFYCTL_BUILD_DATE__: JSON.stringify(buildInfo.buildDate),
|
|
__DIFYCTL_CHANNEL__: JSON.stringify(buildInfo.channel),
|
|
__DIFYCTL_MIN_DIFY__: JSON.stringify(buildInfo.minDify),
|
|
__DIFYCTL_MAX_DIFY__: JSON.stringify(buildInfo.maxDify),
|
|
},
|
|
},
|
|
test: {
|
|
environment: 'node',
|
|
setupFiles: ['./test/setup.ts'],
|
|
include: ['test/**/*.test.ts', 'src/**/*.test.ts', 'scripts/**/*.test.ts'],
|
|
coverage: {
|
|
provider: 'v8',
|
|
reporter: ['text', 'text-summary', 'json'],
|
|
include: ['src/**/*.ts'],
|
|
exclude: ['src/**/*.test.ts', 'src/types/**'],
|
|
},
|
|
},
|
|
})
|