From d6acc8dded3dea96543b5cce77d1190d199cdb4c Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Thu, 7 Oct 2021 20:27:41 +0800 Subject: [PATCH] chore: add plugin declaration generator script --- .gitignore | 2 ++ web/package.json | 5 ++++- web/scripts/plugin-declaration.ts | 22 ++++++++++++++++++++++ yarn.lock | 26 ++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 web/scripts/plugin-declaration.ts diff --git a/.gitignore b/.gitignore index ceda7a4f..946d5a10 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +web/tailchat.d.ts + locales .vercel .DS_Store diff --git a/web/package.json b/web/package.json index f3b97d61..61bc481a 100644 --- a/web/package.json +++ b/web/package.json @@ -13,7 +13,8 @@ "postinstall": "node plugins/install.js", "plugins:new": "ministar createPlugin", "plugins:all": "ministar buildPlugin all", - "plugins:watch": "ministar watchPlugin all" + "plugins:watch": "ministar watchPlugin all", + "plugins:declaration": "cross-env TS_NODE_PROJECT='tsconfig.node.json' ts-node ./scripts/plugin-declaration.ts" }, "dependencies": { "@iconify/iconify": "^2.0.2", @@ -46,6 +47,7 @@ "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^7.0.1", "@types/copy-webpack-plugin": "^8.0.0", + "@types/dts-generator": "^2.1.6", "@types/is-hotkey": "^0.1.3", "@types/mini-css-extract-plugin": "^1.4.3", "@types/node": "^15.12.5", @@ -63,6 +65,7 @@ "cross-env": "^7.0.3", "css-loader": "^5.2.6", "dotenv": "^10.0.0", + "dts-generator": "^3.0.0", "esbuild-loader": "^2.13.1", "execa": "^5.1.1", "file-loader": "^6.2.0", diff --git a/web/scripts/plugin-declaration.ts b/web/scripts/plugin-declaration.ts new file mode 100644 index 00000000..beef0474 --- /dev/null +++ b/web/scripts/plugin-declaration.ts @@ -0,0 +1,22 @@ +import dtsgen from 'dts-generator'; +import path from 'path'; + +/** + * :WIP: + * TODO: tailchat.d.ts的路径尚未完善 + * 等完善后再追踪改文件的变更 + */ + +declare module 'dts-generator' { + interface DtsGeneratorOptions { + prefix?: string; + } +} + +dtsgen({ + name: '', // 这个是为了跳过类型问题,其实移除该项也是可以的 + out: 'tailchat.d.ts', + prefix: '@capital', + baseDir: path.resolve(__dirname, '../src/plugin'), + files: [path.resolve(__dirname, '../src/plugin/common/index.ts')], +}); diff --git a/yarn.lock b/yarn.lock index 6e499ede..a5ca7763 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1787,6 +1787,11 @@ dependencies: "@babel/types" "^7.3.0" +"@types/bluebird@*": + version "3.5.36" + resolved "https://registry.nlark.com/@types/bluebird/download/@types/bluebird-3.5.36.tgz#00d9301d4dc35c2f6465a8aec634bb533674c652" + integrity sha1-ANkwHU3DXC9kZaiuxjS7UzZ0xlI= + "@types/body-parser@*": version "1.19.0" resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" @@ -1838,6 +1843,14 @@ dependencies: postcss "5 - 7" +"@types/dts-generator@^2.1.6": + version "2.1.6" + resolved "https://registry.nlark.com/@types/dts-generator/download/@types/dts-generator-2.1.6.tgz#9700aedad079ba8f28a6ca74f73daf154ce96b9d" + integrity sha1-lwCu2tB5uo8opsp09z2vFUzpa50= + dependencies: + "@types/bluebird" "*" + typescript "*" + "@types/eslint-scope@^3.7.0": version "3.7.0" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" @@ -4541,6 +4554,14 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dts-generator@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/dts-generator/download/dts-generator-3.0.0.tgz#70ed00dc1067bc66f68ad550bbeb894873d45f77" + integrity sha1-cO0A3BBnvGb2itVQu+uJSHPUX3c= + dependencies: + glob "^7.1.3" + mkdirp "^0.5.1" + duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -11354,6 +11375,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typescript@*: + version "4.4.3" + resolved "https://registry.npmmirror.com/typescript/download/typescript-4.4.3.tgz?cache=0&sync_timestamp=1633159321526&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ftypescript%2Fdownload%2Ftypescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" + integrity sha1-vcVAfKorEJ79T4L+EwZW+XeikyQ= + typescript@^4.3.4: version "4.3.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"