From d80b3f0b87a65a9c2d247fb2c721f00449f790d6 Mon Sep 17 00:00:00 2001 From: Ezra Brooks Date: Tue, 11 Nov 2025 17:12:22 -0700 Subject: [PATCH] Stop bundling dependencies, UMD file Allow users' package managers to satisfy our dependencies, instead of bundling them all in our compiled output. (this is like dynamic linking as opposed to static linking for JS) --- package-lock.json | 15 ++++++++++++++- package.json | 5 ++--- vite.config.ts | 13 +++---------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index afa221a77..28ae1a2cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,7 @@ "vite": "^7.0.0", "vite-plugin-checker": "^0.11.0", "vite-plugin-dts": "^4.0.2", + "vite-plugin-externalize-deps": "^0.10.0", "vitest": "^4.0.3", "vitest-fail-on-console": "^0.10.1" }, @@ -4473,7 +4474,6 @@ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -5816,6 +5816,19 @@ } } }, + "node_modules/vite-plugin-externalize-deps": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/vite-plugin-externalize-deps/-/vite-plugin-externalize-deps-0.10.0.tgz", + "integrity": "sha512-eQrtpT/Do7AvDn76l1yL6ZHyXJ+UWH2LaHVqhAes9go54qaAnPZuMbgxcroQ/7WY3ZyetZzYW2quQnDF0DV5qg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/voracious" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, "node_modules/vitest": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.3.tgz", diff --git a/package.json b/package.json index b49d48897..efe22c77f 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,10 @@ "files": [ "dist" ], - "main": "./dist/RosLib.umd.cjs", "module": "./dist/RosLib.js", "exports": { ".": { - "import": "./dist/RosLib.js", - "require": "./dist/RosLib.umd.cjs" + "import": "./dist/RosLib.js" } }, "type": "module", @@ -36,6 +34,7 @@ "vite": "^7.0.0", "vite-plugin-checker": "^0.11.0", "vite-plugin-dts": "^4.0.2", + "vite-plugin-externalize-deps": "^0.10.0", "vitest": "^4.0.3", "vitest-fail-on-console": "^0.10.1" }, diff --git a/vite.config.ts b/vite.config.ts index a7f9b9777..a565a48f0 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,6 +2,7 @@ import { resolve } from "path"; import { defineConfig } from "vitest/config"; import dts from "vite-plugin-dts"; import checker from "vite-plugin-checker"; +import { externalizeDeps } from "vite-plugin-externalize-deps"; export default defineConfig({ plugins: [ @@ -20,6 +21,7 @@ export default defineConfig({ useFlatConfig: true, }, }), + externalizeDeps(), ], build: { lib: { @@ -28,16 +30,7 @@ export default defineConfig({ name: "ROSLIB", // the proper extensions will be added fileName: "RosLib", - }, - rollupOptions: { - /* - * make sure to externalize deps that shouldn't be bundled - * into your library - */ - external: ["eventemitter3", "ws", "src/util/decompressPng.js"], - output: { - globals: { eventemitter3: "EventEmitter3" }, - }, + formats: ["es"], }, // Keep synchronized with minimum engine specified in CI & package.json target: "node18",