From f1a7cbb80f2426fc21866000f737e9d6f5ca497e Mon Sep 17 00:00:00 2001 From: Jan Stuhlmann Date: Thu, 13 Jan 2022 11:17:46 +0100 Subject: [PATCH] Hybrid build for ESM and CommonJS - Credits to https://www.sensedeep.com/blog/posts/2021/how-to-create-single-source-npm-module.html --- package-lock.json | 6 +++--- package.json | 16 +++++++++++----- scripts/fixup | 13 +++++++++++++ tsconfig-base.json | 27 +++++++++++++++++++++++++++ tsconfig-cjs.json | 8 ++++++++ tsconfig.json | 34 +++++++--------------------------- 6 files changed, 69 insertions(+), 35 deletions(-) create mode 100755 scripts/fixup create mode 100755 tsconfig-base.json create mode 100644 tsconfig-cjs.json mode change 100755 => 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index f94210ac..bcd2ec00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1596,9 +1596,9 @@ "dev": true }, "typescript": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", - "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index dfaf01e4..c35584fc 100755 --- a/package.json +++ b/package.json @@ -2,15 +2,21 @@ "name": "@gridscale/gsclient-js", "version": "1.2.11", "description": "gridscale API Wrapper", - "type": "module", - "main": "dist/src/index.js", - "types": "dist/src/index.d.ts", + "main": "dist/cjs/index.js", + "module": "dist/mjs/index.js", + "exports": { + ".": { + "import": "./dist/mjs/index.js", + "require": "./dist/cjs/index.js" + } + }, + "types": "dist/cjs/index.d.ts", "files": [ "dist/**/*" ], "private": false, "scripts": { - "build": "node ./scripts/clean_dist.js && tsc", + "build": "node ./scripts/clean_dist.js && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && ./scripts/fixup", "build-browser": "npm run build && webpack", "updateFromSpec": "node ./scripts/types_from_apispec.js" }, @@ -43,7 +49,7 @@ "merge2": "^1.0.2", "openapi-typescript-codegen": "^0.7.2", "ts-loader": "^8.0.14", - "typescript": "^4.1.5", + "typescript": "~4.3.5", "webpack": "^5.15.0", "webpack-cli": "^4.3.1" } diff --git a/scripts/fixup b/scripts/fixup new file mode 100755 index 00000000..0c54a658 --- /dev/null +++ b/scripts/fixup @@ -0,0 +1,13 @@ +#!/bin/sh +# credits: https://www.sensedeep.com/blog/posts/2021/how-to-create-single-source-npm-module.html +cat >dist/cjs/package.json <dist/mjs/package.json <