From c7a483f0fa08113e745965169c508b0526f0164c Mon Sep 17 00:00:00 2001 From: 1ncounter <1ncounter.100@gmail.com> Date: Tue, 26 Mar 2024 10:48:30 +0800 Subject: [PATCH] build: change build type by api-extractor --- .gitignore | 1 + api-extractor.json | 54 +++++++++++++++++++ package.json | 4 +- packages/types/package.json | 8 ++- packages/types/src/event/index.ts | 2 +- packages/types/src/event/node.ts | 2 +- packages/types/tsconfig.declaration.json | 9 ++++ packages/types/tsconfig.json | 3 ++ packages/types/vite.config.ts | 9 ---- packages/utils/package.json | 7 ++- packages/utils/tsconfig.declaration.json | 10 ++++ packages/utils/tsconfig.json | 1 + packages/utils/vite.config.ts | 1 + runtime/renderer-core/package.json | 6 ++- .../renderer-core/tsconfig.declaration.json | 9 ++++ runtime/renderer-react/package.json | 4 +- .../renderer-react/tsconfig.declaration.json | 9 ++++ runtime/router/package.json | 6 ++- runtime/router/tsconfig.declaration.json | 9 ++++ scripts/rollup-dts.mjs | 43 +++++++++++++++ tsconfig.json | 1 - 21 files changed, 179 insertions(+), 19 deletions(-) create mode 100644 api-extractor.json create mode 100644 packages/types/tsconfig.declaration.json create mode 100644 packages/utils/tsconfig.declaration.json create mode 100644 runtime/renderer-core/tsconfig.declaration.json create mode 100644 runtime/renderer-react/tsconfig.declaration.json create mode 100644 runtime/router/tsconfig.declaration.json create mode 100644 scripts/rollup-dts.mjs diff --git a/.gitignore b/.gitignore index 6a19ae3e0..9bcfb4675 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ packages/*/lib/ packages/*/es/ packages/*/dist/ packages/*/output/ +packages/*/temp/ packages/demo/ package-lock.json yarn.lock diff --git a/api-extractor.json b/api-extractor.json new file mode 100644 index 000000000..630670429 --- /dev/null +++ b/api-extractor.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + "mainEntryPointFilePath": "/temp/index.d.ts", + + "compiler": { + "tsconfigFilePath": "/tsconfig.declaration.json" + }, + + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "", + "publicTrimmedFilePath": "/dist/index.d.ts" + }, + + "apiReport": { + "enabled": false + }, + + "docModel": { + "enabled": false + }, + "tsdocMetadata": { + "enabled": false + }, + + "messages": { + "compilerMessageReporting": { + "default": { + "logLevel": "warning" + } + }, + + "tsdocMessageReporting": { + "default": { + "logLevel": "none" + } + }, + + "extractorMessageReporting": { + "default": { + "logLevel": "warning" + }, + + "ae-missing-release-tag": { + "logLevel": "none" + }, + + "ae-extra-release-tag": { + "logLevel": "none" + } + } + } +} diff --git a/package.json b/package.json index cf3019752..cc54203b3 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@alilc/build-plugin-lce": "^0.0.5", "@alilc/lowcode-test-mate": "^1.0.1", "@changesets/cli": "^2.27.1", + "@microsoft/api-extractor": "^7.43.0", "@types/node": "^20.11.30", "@types/react-router": "5.1.18", "@vitejs/plugin-react": "^4.2.1", @@ -48,8 +49,7 @@ "rimraf": "^5.0.2", "rollup": "^4.13.0", "vite": "^5.1.6", - "vitest": "^1.3.1", - "vite-plugin-dts": "^3.7.3" + "vitest": "^1.3.1" }, "engines": { "node": ">=18" diff --git a/packages/types/package.json b/packages/types/package.json index 1580223de..1c11110f1 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -7,7 +7,12 @@ "module": "dist/lowcodeTypes.js", "types": "dist/index.d.ts", "exports": { - ".": "./dist/lowcodeTypes.js" + ".": { + "import": "./dist/lowcodeTypes.js", + "module": "./dist/lowcodeTypes.js", + "types": "./dist/index.d.ts" + }, + "./package.json": "./package.json" }, "files": [ "dist", @@ -16,6 +21,7 @@ ], "scripts": { "build": "vite build", + "build-dts": "tsc -p tsconfig.declaration.json && node ../../scripts/rollup-dts.mjs", "test": "vitest" }, "dependencies": { diff --git a/packages/types/src/event/index.ts b/packages/types/src/event/index.ts index 5cb6b6132..b0a322e13 100644 --- a/packages/types/src/event/index.ts +++ b/packages/types/src/event/index.ts @@ -6,4 +6,4 @@ export interface EventConfig { [eventName: string]: any; } -export type { Node }; +export { Node }; diff --git a/packages/types/src/event/node.ts b/packages/types/src/event/node.ts index ecc520428..34455a176 100644 --- a/packages/types/src/event/node.ts +++ b/packages/types/src/event/node.ts @@ -1,6 +1,6 @@ import * as Prop from './prop'; -export type { Prop }; +export { Prop }; export interface RerenderOptions { time: number; diff --git a/packages/types/tsconfig.declaration.json b/packages/types/tsconfig.declaration.json new file mode 100644 index 000000000..bccb9a3e5 --- /dev/null +++ b/packages/types/tsconfig.declaration.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "temp", + "stripInternal": true + } +} diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index 596e2cf72..039e0b4d1 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -1,4 +1,7 @@ { "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist" + }, "include": ["src"] } diff --git a/packages/types/vite.config.ts b/packages/types/vite.config.ts index 9e4b5ae12..4f3d97a95 100644 --- a/packages/types/vite.config.ts +++ b/packages/types/vite.config.ts @@ -1,6 +1,5 @@ import { defineConfig } from 'vite'; import { resolve } from 'node:path'; -import dts from 'vite-plugin-dts'; export default defineConfig({ build: { @@ -13,12 +12,4 @@ export default defineConfig({ fileName: 'lowcodeTypes', }, }, - plugins: [ - dts({ - rollupTypes: true, - compilerOptions: { - stripInternal: true, - }, - }), - ], }); diff --git a/packages/utils/package.json b/packages/utils/package.json index df926f90b..eee08b245 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -7,7 +7,11 @@ "module": "dist/index.js", "types": "dist/index.d.ts", "exports": { - ".": "./dist/lowCodeUtils.js" + ".": { + "import": "./dist/lowCodeUtils.js", + "types": "./dist/index.d.ts" + }, + "./package.json": "./package.json" }, "sideEffects": [ "*.css" @@ -19,6 +23,7 @@ ], "scripts": { "build": "vite build", + "build-dts": "tsc -p tsconfig.declaration.json && node ../../scripts/rollup-dts.mjs", "test": "vitest" }, "dependencies": { diff --git a/packages/utils/tsconfig.declaration.json b/packages/utils/tsconfig.declaration.json new file mode 100644 index 000000000..54e57efbd --- /dev/null +++ b/packages/utils/tsconfig.declaration.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "temp", + "stripInternal": true, + "paths": {} + } +} diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 48d45c7d2..f6366069d 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "outDir": "dist", "paths": { "@alilc/lowcode-*": ["packages/*"] } diff --git a/packages/utils/vite.config.ts b/packages/utils/vite.config.ts index 78e69645d..883602f85 100644 --- a/packages/utils/vite.config.ts +++ b/packages/utils/vite.config.ts @@ -22,6 +22,7 @@ export default defineConfig({ react(), dts({ rollupTypes: true, + tsconfigPath: resolve(import.meta.dirname, 'tsconfig.declaration.json'), compilerOptions: { stripInternal: true, paths: {}, diff --git a/runtime/renderer-core/package.json b/runtime/renderer-core/package.json index ef637000a..92fc8f98a 100644 --- a/runtime/renderer-core/package.json +++ b/runtime/renderer-core/package.json @@ -10,7 +10,10 @@ "module": "dist/rendererCore.js", "types": "dist/index.d.ts", "exports": { - ".": "./dist/rendererCore.js" + ".": { + "import": "./dist/rendererCore.js", + "types": "./dist/index.d.ts" + } }, "files": [ "dist", @@ -19,6 +22,7 @@ ], "scripts": { "build": "vite build", + "build-dts": "tsc -p tsconfig.declaration.json && node ../../scripts/rollup-dts.mjs", "test": "vitest --run", "test:watch": "vitest" }, diff --git a/runtime/renderer-core/tsconfig.declaration.json b/runtime/renderer-core/tsconfig.declaration.json new file mode 100644 index 000000000..bccb9a3e5 --- /dev/null +++ b/runtime/renderer-core/tsconfig.declaration.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "temp", + "stripInternal": true + } +} diff --git a/runtime/renderer-react/package.json b/runtime/renderer-react/package.json index dcbc32d7c..89d53cecf 100644 --- a/runtime/renderer-react/package.json +++ b/runtime/renderer-react/package.json @@ -12,11 +12,13 @@ "exports": { ".": { "import": "./dist/rendererReact.js", - "require": "./dist/rendererReact.cjs" + "require": "./dist/rendererReact.cjs", + "types": "./dist/index.d.ts" } }, "scripts": { "build": "vite build", + "build-dts": "tsc -p tsconfig.declaration.json && node ../../scripts/rollup-dts.mjs", "test": "vitest" }, "dependencies": { diff --git a/runtime/renderer-react/tsconfig.declaration.json b/runtime/renderer-react/tsconfig.declaration.json new file mode 100644 index 000000000..bccb9a3e5 --- /dev/null +++ b/runtime/renderer-react/tsconfig.declaration.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "temp", + "stripInternal": true + } +} diff --git a/runtime/router/package.json b/runtime/router/package.json index 533810939..38d30b12e 100644 --- a/runtime/router/package.json +++ b/runtime/router/package.json @@ -9,10 +9,14 @@ "module": "dist/runtimeRouter.js", "types": "dist/index.d.ts", "exports": { - ".": "./dist/runtimeRouter.js" + ".": { + "import": "./dist/runtimeRouter.js", + "types": "./dist/index.d.ts" + } }, "scripts": { "build": "vite build", + "build-dts": "tsc -p tsconfig.declaration.json && node ../../scripts/rollup-dts.mjs", "test": "vitest" }, "dependencies": { diff --git a/runtime/router/tsconfig.declaration.json b/runtime/router/tsconfig.declaration.json new file mode 100644 index 000000000..bccb9a3e5 --- /dev/null +++ b/runtime/router/tsconfig.declaration.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "temp", + "stripInternal": true + } +} diff --git a/scripts/rollup-dts.mjs b/scripts/rollup-dts.mjs new file mode 100644 index 000000000..eafee351a --- /dev/null +++ b/scripts/rollup-dts.mjs @@ -0,0 +1,43 @@ +import { join } from 'node:path'; +import { existsSync, readdirSync } from 'node:fs'; +import { Extractor, ExtractorConfig } from '@microsoft/api-extractor'; +import { rimraf } from 'rimraf'; + +const libPath = process.env.PWD; +const packages = readdirSync(join(libPath, 'temp/packages')); +const typeTempIndexPath = join(libPath, 'temp/packages', packages[0], 'src/index.d.ts'); + +if (!existsSync(typeTempIndexPath)) { + console.error('🚨类型入口路径错误'); + process.exit(1); +} + +async function run() { + const configObject = ExtractorConfig.loadFile('../../api-extractor.json'); + configObject.mainEntryPointFilePath = typeTempIndexPath; + + const extractorConfig = ExtractorConfig.prepare({ + configObject, + projectFolderLookupToken: libPath, + packageJsonFullPath: join(libPath, 'package.json'), + }); + + const extractorResult = Extractor.invoke(extractorConfig, { + localBuild: true, + showVerboseMessages: true, + }); + + if (extractorResult.succeeded) { + console.log(`🚀类型声明文件生成成功!!!`); + + await rimraf(join(libPath, 'temp')); + } else { + console.error( + '🚨类型声明文件生成失败:' + + +`\n\t${extractorResult.errorCount} errors``\n\tand ${extractorResult.warningCount} warnings`, + ); + process.exit(1); + } +} + +run(); diff --git a/tsconfig.json b/tsconfig.json index 0ec3a5f20..e5a6f4d96 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "declaration": true, "lib": ["DOM", "ESNext", "DOM.Iterable"], // Target latest version of ECMAScript. "target": "esnext",