From cbe419a6789be49bd92c85a6a5382cf799d3998d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Sch=C3=B6nb=C3=A4chler?= <42278642+schoero@users.noreply.github.com> Date: Fri, 17 Nov 2023 20:55:42 +0100 Subject: [PATCH] fix: type definitions for common js imports --- .eslintrc.json | 2 +- package.json | 47 +++++++++++++++++++++++++++++++------------ tsconfig.json | 2 ++ tsconfig.vite.json | 7 ------- vite.config.bundle.ts | 5 +++-- vite.config.cjs.ts | 32 +++++++++++++++++++++++++++++ vite.config.ts | 11 +++++----- 7 files changed, 78 insertions(+), 28 deletions(-) delete mode 100644 tsconfig.vite.json create mode 100644 vite.config.cjs.ts diff --git a/.eslintrc.json b/.eslintrc.json index 63bf1f3..19c1a93 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -14,7 +14,7 @@ } }, { - "files": ["vite.config.ts", "vite.config.bundle.ts"], + "files": ["vite.config.ts", "vite.config.cjs.ts", "vite.config.bundle.ts"], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": "latest", diff --git a/package.json b/package.json index 1ab26b3..3d5080a 100644 --- a/package.json +++ b/package.json @@ -16,32 +16,53 @@ "sideEffects": false, "exports": { "./bundle": { - "import": "./lib/bundle/index.js", - "require": "./lib/bundle/index.js" + "import": "./lib/esm/bundle/index.js", + "require": { + "require": "./lib/cjs/bundle/index.js", + "types": "./lib/cjs/bundle/index.d.ts" + } }, "./errors": { - "import": "./lib/shared/errors.js", - "require": "./lib/shared/errors.cjs" + "import": "./lib/esm/shared/errors.js", + "require": { + "require": "./lib/cjs/shared/errors.cjs", + "types": "./lib/cjs/shared/errors.d.ts" + } }, "./pdf": { - "import": "./lib/pdf/index.js", - "require": "./lib/pdf/index.cjs" + "import": "./lib/esm/pdf/index.js", + "require": { + "require": "./lib/cjs/pdf/index.cjs", + "types": "./lib/cjs/pdf/index.d.ts" + } }, "./svg": { - "import": "./lib/svg/index.js", - "require": "./lib/svg/index.cjs" + "import": "./lib/esm/svg/index.js", + "require": { + "require": "./lib/cjs/svg/index.cjs", + "types": "./lib/cjs/svg/index.d.ts" + } }, "./types": { - "import": "./lib/shared/types.js", - "require": "./lib/shared/types.cjs" + "import": "./lib/esm/shared/types.js", + "require": { + "require": "./lib/cjs/shared/types.cjs", + "types": "./lib/cjs/shared/types.d.ts" + } }, "./utils": { - "import": "./lib/shared/utils.js", - "require": "./lib/shared/utils.cjs" + "import": "./lib/esm/shared/utils.js", + "require": { + "require": "./lib/cjs/shared/utils.cjs", + "types": "./lib/cjs/shared/utils.d.ts" + } } }, "scripts": { - "build": "rm -r ./lib || true && vite build --config vite.config.ts && vite build --config vite.config.bundle.ts", + "build": "npm run build:bundle && npm run build:cjs && npm run build:esm", + "build:bundle": "vite build --config vite.config.bundle.ts", + "build:cjs": "vite build --config vite.config.cjs.ts && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "vite build --config vite.config.ts && echo '{ \"type\": \"module\" }' > lib/esm/package.json", "docs": "npm run docs:pdf && npm run docs:svg && npm run docs:shared && npm run docs:bundle", "docs:bundle": "unwritten src/bundle/index.ts -t tsconfig.docs.json -o docs/bundle/ ", "docs:pdf": "unwritten src/pdf/index.ts src/shared/types.ts -t tsconfig.docs.json -o docs/pdf/", diff --git a/tsconfig.json b/tsconfig.json index 6880c3f..0bd7e21 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,6 +5,8 @@ "declaration": false, "declarationMap": false, "lib": ["ESNext", "DOM"], + "module": "ESNext", + "moduleResolution": "Bundler", "noImplicitAny": false, "outDir": "lib", "paths": { diff --git a/tsconfig.vite.json b/tsconfig.vite.json deleted file mode 100644 index dd28984..0000000 --- a/tsconfig.vite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [ - "vite.config.ts", - "vite.config.bundle.ts" - ] -} diff --git a/vite.config.bundle.ts b/vite.config.bundle.ts index 3d64815..cfec93f 100644 --- a/vite.config.bundle.ts +++ b/vite.config.bundle.ts @@ -1,8 +1,9 @@ import { config, defineConfig } from "@schoero/vite-config"; +import type { UserConfig } from "vite"; -/** @type {import('vitest/config').UserConfig} */ -export default defineConfig({ + +export default defineConfig({ ...config, build: { emptyOutDir: false, diff --git a/vite.config.cjs.ts b/vite.config.cjs.ts new file mode 100644 index 0000000..35b3611 --- /dev/null +++ b/vite.config.cjs.ts @@ -0,0 +1,32 @@ +import { sync } from "glob"; +import dts from "vite-plugin-dts"; +import noBundlePlugin from "vite-plugin-no-bundle"; + +import { config, defineConfig } from "@schoero/vite-config"; + +import type { UserConfig } from "vite"; + + +export default defineConfig({ + ...config, + build: { + emptyOutDir: true, + lib: { + entry: sync("src/**/*.ts", { ignore: ["src/**/*.test.ts", "test/**", "src/bundle/*"] }), + formats: ["cjs"] + }, + minify: false, + outDir: "lib/cjs", + ssr: true, + target: "es6" + }, + plugins: [ + ...config.plugins ?? [], + noBundlePlugin(), + dts({ + entryRoot: "./src", + exclude: ["src/**/*.test.ts", "test/**", "src/bundle/*"], + pathsToAliases: true + }) + ] +}); diff --git a/vite.config.ts b/vite.config.ts index 44beb3c..61adaab 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,18 +4,19 @@ import noBundlePlugin from "vite-plugin-no-bundle"; import { config, defineConfig } from "@schoero/vite-config"; +import type { UserConfig } from "vite"; -/** @type {import('vitest/config').UserConfig} */ -export default defineConfig({ + +export default defineConfig({ ...config, build: { - emptyOutDir: false, + emptyOutDir: true, lib: { entry: sync("src/**/*.ts", { ignore: ["src/**/*.test.ts", "test/**", "src/bundle/*"] }), - formats: ["es", "cjs"] + formats: ["es"] }, minify: false, - outDir: "lib", + outDir: "lib/esm", ssr: true, target: "es6" },