From d41dd21ef53d5739a6177b326d63e3835bd2b7fb Mon Sep 17 00:00:00 2001 From: maslow Date: Mon, 20 Dec 2021 16:14:17 +0800 Subject: [PATCH] fix(node-modules-util): fix ts type parsing error for 'alipay-sdk' --- docker-compose.yml | 1 - packages/node-modules-utils/copy2app.sh | 4 ++++ packages/node-modules-utils/copy2sys.sh | 4 ++++ packages/node-modules-utils/package.json | 5 ++++- packages/node-modules-utils/src/declaration.ts | 13 ++++++++++--- packages/node-modules-utils/src/package.ts | 13 ++++++++++--- packages/node-modules-utils/tests/declare.test.js | 14 +++++++++++++- packages/node-modules-utils/tests/parse.test.js | 8 ++++++++ 8 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 packages/node-modules-utils/copy2app.sh create mode 100644 packages/node-modules-utils/copy2sys.sh diff --git a/docker-compose.yml b/docker-compose.yml index 0efe9ca59e..8db5718385 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,7 +42,6 @@ services: volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./packages/system-server:/app - - ./packages/cloud-function:/app/node_modules/cloud-function-engine:ro - ./packages/database-proxy:/app/node_modules/database-proxy:ro - ./packages/database-ql:/app/node_modules/database-ql:ro - ./packages/database-ql:/app/node_modules/database-proxy/node_modules/database-ql:ro diff --git a/packages/node-modules-utils/copy2app.sh b/packages/node-modules-utils/copy2app.sh new file mode 100644 index 0000000000..83510ff416 --- /dev/null +++ b/packages/node-modules-utils/copy2app.sh @@ -0,0 +1,4 @@ +rm -rf ../app-service/node_modules/node-modules-utils/dist +rm -rf ../app-service/node_modules/node-modules-utils/src +cp -r dist ../app-service/node_modules/node-modules-utils/dist +cp -r src ../app-service/node_modules/node-modules-utils/src \ No newline at end of file diff --git a/packages/node-modules-utils/copy2sys.sh b/packages/node-modules-utils/copy2sys.sh new file mode 100644 index 0000000000..4845b0a082 --- /dev/null +++ b/packages/node-modules-utils/copy2sys.sh @@ -0,0 +1,4 @@ +rm -rf ../system-server/node_modules/cloud-function-engine/dist +rm -rf ../system-server/node_modules/cloud-function-engine/src +cp -r dist ../system-server/node_modules/cloud-function-engine/dist +cp -r src ../system-server/node_modules/cloud-function-engine/src \ No newline at end of file diff --git a/packages/node-modules-utils/package.json b/packages/node-modules-utils/package.json index 675858856d..8f2fd75d4f 100644 --- a/packages/node-modules-utils/package.json +++ b/packages/node-modules-utils/package.json @@ -23,7 +23,10 @@ "build": "tsc", "watch": "tsc -w", "test": "npx mocha tests/**test.js", - "prepublishOnly": "npm run build" + "prepublishOnly": "npm run build", + "copy2app": "sh copy2app.sh", + "copy2sys": "sh copy2sys.sh", + "copy4dev": "sh copy2app.sh && sh copy2sys.sh" }, "bugs": { "url": "https://github.com/Maslow/less-framework/issues" diff --git a/packages/node-modules-utils/src/declaration.ts b/packages/node-modules-utils/src/declaration.ts index 0217784cfb..e967c31eef 100644 --- a/packages/node-modules-utils/src/declaration.ts +++ b/packages/node-modules-utils/src/declaration.ts @@ -100,14 +100,21 @@ export class PackageDeclaration extends PackageInfo { * 2. 如果未读取到,则指定 package.json#main 所在目录 下的 index.d.ts 为 typings */ async resolveTypingsEntryPath() { + + let defaultFilename = 'index.d.ts' + const entryStat = await this.exists(this.entryFile) + if (entryStat.isFile()) { + const { name } = path.parse(this.entryFile) + defaultFilename = `${name}.d.ts` + } + + const defaultTypings = path.join(this.entryPath, defaultFilename) const typings = this.info?.typings || this.info?.types - const defaultTypings = path.join(this.entryPath, 'index.d.ts') if (!typings) { return defaultTypings } - const typingFile = path.join(this.rootPath, typings) const stat = await this.exists(typingFile) if (!stat) { @@ -115,7 +122,7 @@ export class PackageDeclaration extends PackageInfo { } if (stat.isDirectory()) { - return path.join(typingFile, 'index.d.ts') + return path.join(typingFile, defaultFilename) } return typingFile diff --git a/packages/node-modules-utils/src/package.ts b/packages/node-modules-utils/src/package.ts index 1f1edc2c76..fd65538fe9 100644 --- a/packages/node-modules-utils/src/package.ts +++ b/packages/node-modules-utils/src/package.ts @@ -19,6 +19,12 @@ export class PackageInfo { */ rootPath: string + /** + * entry file + * 为 main / module 指定的入口文件 + */ + entryFile: string + /** * entry path * 为 main / module 指定的入口文件所在目录 @@ -38,10 +44,10 @@ export class PackageInfo { } get dependencyNames(): string[] { - if(!this.dependencies) return [] + if (!this.dependencies) return [] return Object.keys(this.dependencies) } - + /** * common entry file */ @@ -124,6 +130,7 @@ export class PackageInfo { entryPath = path.dirname(entryPath) } + this.entryFile = entryFile this.entryPath = entryPath } @@ -164,7 +171,7 @@ export class PackageInfo { * 文件或文件是否存在 * @param p */ - async exists(p: string) { + async exists(p: string) { try { const stat = await fse.stat(p) return stat diff --git a/packages/node-modules-utils/tests/declare.test.js b/packages/node-modules-utils/tests/declare.test.js index 79034de91f..4cd33d4de5 100644 --- a/packages/node-modules-utils/tests/declare.test.js +++ b/packages/node-modules-utils/tests/declare.test.js @@ -37,7 +37,7 @@ describe('npm-util(unit): Package Declaration Load', () => { }) /** - * load from self package: less-api-database + * load from self package: database-proxy */ it('load d.ts of database-proxy (typings)', async () => { const pkg = new PackageDeclaration('database-proxy', nmp) @@ -46,5 +46,17 @@ describe('npm-util(unit): Package Declaration Load', () => { assert.strictEqual(pkg.name, 'database-proxy') assert.ok(pkg.declarations.length > 0) + }) + + /** + * load from self package: alipay-sdk + */ + it('load d.ts of alipay-sdk (typings)', async () => { + const pkg = new PackageDeclaration('alipay-sdk', nmp) + await pkg.load() + // console.log(pkg) + + assert.strictEqual(pkg.name, 'alipay-sdk') + assert.ok(pkg.declarations.length > 0) }) }) \ No newline at end of file diff --git a/packages/node-modules-utils/tests/parse.test.js b/packages/node-modules-utils/tests/parse.test.js index ff743316c0..afb09e5781 100644 --- a/packages/node-modules-utils/tests/parse.test.js +++ b/packages/node-modules-utils/tests/parse.test.js @@ -49,4 +49,12 @@ describe('npm-util(unit): Package parse', () => { // console.log(pkg) assert.strictEqual(pkg.name, '@types/express') }) + + + it('get pkg dir: alipay-sdk', async () => { + const pkg = new PackageInfo('alipay-sdk', nmp) + await pkg.parsePackageInfo() + // console.log(pkg) + assert.strictEqual(pkg.name, 'alipay-sdk') + }) }) \ No newline at end of file