From bf18e08acbc42bc054adcd0805a09a5f3fa089dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E6=99=BA=E5=AD=90=20Kevin=20Deng?= Date: Sun, 19 Nov 2023 23:21:34 +0800 Subject: [PATCH] refactor: generate dts by vite plugin --- api-extractor.json | 56 ------------------------------ package.json | 27 ++++++++++----- pnpm-lock.yaml | 84 +++++++++++++++++++++++++++++++++++++++++++-- scripts/cleanup.js | 6 ---- tsconfig.build.json | 25 -------------- vite.config.ts | 8 ++++- 6 files changed, 106 insertions(+), 100 deletions(-) delete mode 100644 api-extractor.json delete mode 100644 scripts/cleanup.js delete mode 100644 tsconfig.build.json diff --git a/api-extractor.json b/api-extractor.json deleted file mode 100644 index 211f23b2..00000000 --- a/api-extractor.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", - - "projectFolder": ".", - - "mainEntryPointFilePath": "./dist/src/index.d.ts", - - "dtsRollup": { - "enabled": true - }, - - "apiReport": { - "enabled": false - }, - - "docModel": { - "enabled": false - }, - - "tsdocMetadata": { - "enabled": false - }, - - "messages": { - "compilerMessageReporting": { - "default": { - "logLevel": "warning" - } - }, - - "extractorMessageReporting": { - "default": { - "logLevel": "warning", - "addToApiReportFile": true - }, - - "ae-forgotten-export": { - "logLevel": "none" - }, - - "ae-missing-release-tag": { - "logLevel": "none" - } - }, - - "tsdocMessageReporting": { - "default": { - "logLevel": "warning" - }, - - "tsdoc-undefined-tag": { - "logLevel": "none" - } - } - } -} diff --git a/package.json b/package.json index a61b5817..35dc20cf 100644 --- a/package.json +++ b/package.json @@ -9,34 +9,43 @@ "files": [ "dist" ], - "types": "dist/repl.d.ts", + "types": "dist/vue-repl.d.ts", "exports": { ".": { - "types": "./dist/repl.d.ts", + "types": "./dist/vue-repl.d.ts", "import": "./dist/vue-repl.js", "require": "./dist/ssr-stub.js" }, "./monaco-editor": { - "types": "./dist/editor-types.d.ts", + "types": "./dist/monaco-editor.d.ts", "import": "./dist/monaco-editor.js", "require": null }, "./codemirror-editor": { - "types": "./dist/editor-types.d.ts", + "types": "./dist/codemirror-editor.d.ts", "import": "./dist/codemirror-editor.js", "require": null }, - "./style.css": "./dist/style.css", - "./dist/style.css": "./dist/style.css" + "./*": [ + "./*", + "./*.d.ts" + ] + }, + "typesVersions": { + "*": { + "*": [ + "./dist/*", + "./*" + ] + } }, "scripts": { "dev": "vite", "build": "vite build", - "build-types": "vue-tsc -p tsconfig.build.json && api-extractor run -c api-extractor.json && node scripts/cleanup.js", "build-preview": "vite build -c vite.preview.config.ts", "format": "prettier --write .", "release": "bumpp -r", - "prepublishOnly": "npm run build && npm run build-types" + "prepublishOnly": "npm run build" }, "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged --concurrent false" @@ -58,7 +67,6 @@ "homepage": "https://github.com/vuejs/repl#readme", "devDependencies": { "@babel/types": "^7.23.3", - "@microsoft/api-extractor": "^7.38.3", "@rollup/plugin-replace": "^5.0.5", "@types/codemirror": "^5.60.13", "@types/node": "^20.9.0", @@ -82,6 +90,7 @@ "sucrase": "^3.34.0", "typescript": "^5.2.2", "vite": "^4.5.0", + "vite-plugin-dts": "^3.6.3", "vue": "^3.3.8", "vue-tsc": "1.9.0-alpha.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 978a36d4..b16ce2fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ devDependencies: '@babel/types': specifier: ^7.23.3 version: 7.23.3 - '@microsoft/api-extractor': - specifier: ^7.38.3 - version: 7.38.3(@types/node@20.9.0) '@rollup/plugin-replace': specifier: ^5.0.5 version: 5.0.5 @@ -80,6 +77,9 @@ devDependencies: vite: specifier: ^4.5.0 version: 4.5.0(@types/node@20.9.0) + vite-plugin-dts: + specifier: ^3.6.3 + version: 3.6.3(@types/node@20.9.0)(typescript@5.2.2)(vite@4.5.0) vue: specifier: ^3.3.8 version: 3.3.8(typescript@5.2.2) @@ -542,6 +542,12 @@ packages: '@volar/language-service': 1.11.1 dev: true + /@volar/language-core@1.10.10: + resolution: {integrity: sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==} + dependencies: + '@volar/source-map': 1.10.10 + dev: true + /@volar/language-core@1.11.1: resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: @@ -565,12 +571,25 @@ packages: vscode-uri: 3.0.8 dev: true + /@volar/source-map@1.10.10: + resolution: {integrity: sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==} + dependencies: + muggle-string: 0.3.1 + dev: true + /@volar/source-map@1.11.1: resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} dependencies: muggle-string: 0.3.1 dev: true + /@volar/typescript@1.10.10: + resolution: {integrity: sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==} + dependencies: + '@volar/language-core': 1.10.10 + path-browserify: 1.0.1 + dev: true + /@volar/typescript@1.11.1: resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} dependencies: @@ -646,6 +665,25 @@ packages: '@vue/shared': 3.3.8 dev: true + /@vue/language-core@1.8.22(typescript@5.2.2): + resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.10.10 + '@volar/source-map': 1.10.10 + '@vue/compiler-dom': 3.3.8 + '@vue/shared': 3.3.8 + computeds: 0.0.1 + minimatch: 9.0.3 + muggle-string: 0.3.1 + typescript: 5.2.2 + vue-template-compiler: 2.7.15 + dev: true + /@vue/language-core@1.9.0-alpha.3(typescript@5.2.2): resolution: {integrity: sha512-CtNlwQNP4qVdcwYFrMYsOBNrpkeWew6bpDYXODKTMVpmkDQY+8CFnThmVx21XYMuSdW1AOlVXOIY0zHKpLmZwg==} peerDependencies: @@ -1382,6 +1420,10 @@ packages: engines: {node: '>=6'} dev: true + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -2041,6 +2083,30 @@ packages: engines: {node: '>= 0.10'} dev: true + /vite-plugin-dts@3.6.3(@types/node@20.9.0)(typescript@5.2.2)(vite@4.5.0): + resolution: {integrity: sha512-NyRvgobl15rYj65coi/gH7UAEH+CpSjh539DbGb40DfOTZSvDLNYTzc8CK4460W+LqXuMK7+U3JAxRB3ksrNPw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@microsoft/api-extractor': 7.38.3(@types/node@20.9.0) + '@rollup/pluginutils': 5.0.5 + '@vue/language-core': 1.8.22(typescript@5.2.2) + debug: 4.3.4 + kolorist: 1.8.0 + typescript: 5.2.2 + vite: 4.5.0(@types/node@20.9.0) + vue-tsc: 1.8.22(typescript@5.2.2) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + dev: true + /vite@4.5.0(@types/node@20.9.0): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -2251,6 +2317,18 @@ packages: he: 1.2.0 dev: true + /vue-tsc@1.8.22(typescript@5.2.2): + resolution: {integrity: sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.10.10 + '@vue/language-core': 1.8.22(typescript@5.2.2) + semver: 7.5.4 + typescript: 5.2.2 + dev: true + /vue-tsc@1.9.0-alpha.3(typescript@5.2.2): resolution: {integrity: sha512-cQQnj8wBdDgvNlD+KOCpDNM4LVJdRYUXrDp7PsPpZQHTdOJDTa04PE/qqvAVOWNH7X7mkrLmcFFYXiVNmV7OqA==} hasBin: true diff --git a/scripts/cleanup.js b/scripts/cleanup.js deleted file mode 100644 index cc88bdb9..00000000 --- a/scripts/cleanup.js +++ /dev/null @@ -1,6 +0,0 @@ -// This file is executed from npm script with project root as cwd. -import fs from 'node:fs' - -fs.renameSync('dist/src/editor/types.d.ts', 'dist/editor-types.d.ts') - -fs.rmSync('dist/src', { recursive: true }) diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index 62edd565..00000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "outDir": "dist", - "sourceMap": false, - "target": "es2016", - "useDefineForClassFields": false, - "module": "esnext", - "moduleResolution": "node", - "allowJs": false, - "strict": true, - "noUnusedLocals": true, - "experimentalDecorators": true, - "resolveJsonModule": true, - "esModuleInterop": true, - "removeComments": false, - "lib": ["esnext", "dom"], - "rootDir": ".", - "declaration": true, - "skipLibCheck": true, - "emitDeclarationOnly": true, - "jsx": "preserve" - }, - "include": ["src"] -} diff --git a/vite.config.ts b/vite.config.ts index 5e16107d..dee1fe56 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,4 +1,5 @@ import { Plugin, mergeConfig } from 'vite' +import dts from 'vite-plugin-dts' import base from './vite.preview.config' const genStub: Plugin = { @@ -14,7 +15,12 @@ const genStub: Plugin = { } export default mergeConfig(base, { - plugins: [genStub], + plugins: [ + dts({ + rollupTypes: true, + }), + genStub, + ], optimizeDeps: { // avoid late discovered deps include: [