From 193e6a77fc7271df881ebbc84621fe30d1ea924c Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 6 Oct 2026 23:05:29 +0200 Subject: [PATCH] chore: do not inject css and build pure esm all other libraries also already switched to esm only, so as this library also has some of them as a dependency an app does not work if they cannot bundle esm. Meaning there is no reason to not also go esm only and drop additional complexity of having a second cjs bundle. Moreover the bundled CSS might be a good case for libraries apps that cannot handle CSS imports, but if your app uses nextcloud-vue it already has to handle that. More important injecting CSS will make the app always include the viewer CSS within their JS bundles which has a performance impact. Especially when the app opts for split CSS and JS to reduce browsers JS parsing time. Signed-off-by: Ferdinand Thiessen --- package-lock.json | 107 ++++++++++++++++++++-------------------------- package.json | 4 +- vite.config.ts | 11 +---- 3 files changed, 48 insertions(+), 74 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94b5c41..5ca702f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,6 @@ "typedoc": "^0.28.20", "typescript": "^5.9.3", "vite": "^7.1.11", - "vite-plugin-css-injected-by-js": "^3.5.2", "vitest": "^3.2.4", "vue": "^3.5.42", "vue-tsc": "^3.3.11" @@ -2791,19 +2790,19 @@ "license": "Apache-2.0" }, "node_modules/@microsoft/api-extractor": { - "version": "7.59.1", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.59.1.tgz", - "integrity": "sha512-GjRUqx1MTY7xuH36urwASkfBPzrdxYG+irVeV7C9JEdRtn509AgMmwit/BhvztQzIoFk9vhFDTVYOp2cjw+9Uw==", + "version": "7.59.4", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.59.4.tgz", + "integrity": "sha512-XqseDKIw736qlhQwS9SOpbY4veOiP2Nc7YiWmgXXBmeA3kY9qGXw+Tu7DFpU9FvXywE1z8SvLJKUVxFpcX0kig==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.33.12", - "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.1", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/rig-package": "0.7.3", - "@rushstack/terminal": "0.24.4", - "@rushstack/ts-command-line": "5.3.14", + "@microsoft/api-extractor-model": "7.33.15", + "@microsoft/tsdoc": "~0.17.0", + "@microsoft/tsdoc-config": "~0.18.2", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/rig-package": "0.7.4", + "@rushstack/terminal": "0.24.7", + "@rushstack/ts-command-line": "5.3.17", "diff": "~8.0.2", "minimatch": "10.2.3", "resolve": "~1.22.1", @@ -2819,15 +2818,15 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.33.12", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.12.tgz", - "integrity": "sha512-TdKOYgwf98xLjNW+y3iXIiCf4ZLQbilGAlqkMTTAqqAWfgRXAn9YCSGMsaiB1U7OPRvslUWg6n08EqQPbP93tA==", + "version": "7.33.15", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.15.tgz", + "integrity": "sha512-UpCnItIJwu03iNTWtJVKv8Qbf0MXN7WLQZUail9cpAQmnZiIX36YPRRoRxz0pocwytzUpmJhstsLkyW5tsaHBA==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.1", - "@rushstack/node-core-library": "5.24.1" + "@microsoft/tsdoc": "~0.17.0", + "@microsoft/tsdoc-config": "~0.18.2", + "@rushstack/node-core-library": "5.25.1" }, "engines": { "node": ">=20.9.0" @@ -2863,32 +2862,25 @@ } }, "node_modules/@microsoft/tsdoc": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", - "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.17.1.tgz", + "integrity": "sha512-VHyYyyoH63jFoO3shpw9Zfijk5v/9p/VrClW35z0/q6ooK7sSmxpzOkS4iZPxs3vO4XtBW4H38HRAKkAMIK7DA==", "dev": true, "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.2.tgz", - "integrity": "sha512-4ymuLTQ9lFwJXK15f41iPcNHflymjk02Ltq5f5wo3fA02O1nHIGSc1TIZwzTSQZep+jXHM644jobt4Q8O3vtqg==", + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.3.tgz", + "integrity": "sha512-0I0rGXo1eJziw3EEErkDS9p/0RzBcyOiV+zbSDqOZTeURmhtut+WIvpih0LM5g+ZpZ9SyFxDfkhAcl/r8e2zGw==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "0.17.0", + "@microsoft/tsdoc": "0.17.1", "ajv": "~8.18.0", "jju": "~1.4.0", "resolve": "~1.22.2" } }, - "node_modules/@microsoft/tsdoc-config/node_modules/@microsoft/tsdoc": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.17.0.tgz", - "integrity": "sha512-p68VexhnH7ojf3U27RdryUDqnKJgKaWUbCL96vJR7N0mqDuhKG5OIECk3sCPPdynxjk+yoVhRkScqtv5KQjzsw==", - "dev": true, - "license": "MIT" - }, "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", @@ -4110,9 +4102,9 @@ ] }, "node_modules/@rushstack/node-core-library": { - "version": "5.24.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.24.1.tgz", - "integrity": "sha512-ZlOrzv92MwnsCXA45qWfDj4L/kTasKghXezu+M2WmdtkbnXyPnZSCovfeBZx1Yc5qm+LkElbLw6IeSSWZDhZUg==", + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.25.1.tgz", + "integrity": "sha512-ozoRDwIx3jStOYpx86rFyXH4SaUR+DVT6HubQ59avLplJkWXSm5InztYH7RrOzzq9PJXTdq9/+lKX06SfkLVsA==", "dev": true, "license": "MIT", "dependencies": { @@ -4205,24 +4197,27 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.3.tgz", - "integrity": "sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.4.tgz", + "integrity": "sha512-SHZdzc9b2ptUb5uvRWALtAceD/QKZ4UAnZjcaKviTMPmHBnW14gs7XDocn6sDv2EqgnxxFPFkpV7/I3cUijCbw==", "dev": true, "license": "MIT", "dependencies": { "jju": "~1.4.0", "resolve": "~1.22.1" + }, + "engines": { + "node": ">=20.9.0" } }, "node_modules/@rushstack/terminal": { - "version": "0.24.4", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.24.4.tgz", - "integrity": "sha512-3fRBWK0IMY293lBx5ycgit1DTMUi+nhOjALHlrIad9hQsqzM9Ak+XdBI1gJ/tZPxW+LraeAc4SsmMdcOflBmAQ==", + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.24.7.tgz", + "integrity": "sha512-o8J9nHOIwfYb0s0eG2WYhx7ed3YIvBXQHVFxYdXCmVdBOkTkdArJcgVzRS8ewUepmlic4nGgJPjKIVaNKSqEnA==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.24.1", + "@rushstack/node-core-library": "5.25.1", "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, @@ -4255,13 +4250,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.14.tgz", - "integrity": "sha512-lT2JKZk2dukBMp4GFOh4RaDfVzpZehGgQOGpzpSliUn317NgEmOOCXyd7/d0eU46HHsbRxizP83GAm39s0lAlg==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.17.tgz", + "integrity": "sha512-pIwhWawZXAT0nTXwvcE/InQ7uaVAgSeIzILMb2mBrI01Hz1yEvxrhV2+DE2Fzux8aZY9OJTdLsI+sk9kZDuAJw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.24.4", + "@rushstack/terminal": "0.24.7", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -12145,9 +12140,9 @@ } }, "node_modules/pbkdf2": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.6.tgz", - "integrity": "sha512-BT6eelPB1EyGHo8pC0o9Bl6k6SYVhKO1jEbd3lcTrtr7XHdjP8BW1YpfCV3G9Kwkxgattk+S5q2/RvuttCsS1g==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.7.tgz", + "integrity": "sha512-nS4mvFgVwUrecPTRdpdseM2fwpdfnX0/HibA8DgBRQtihUAzHQYJFU2l+OlEtiXtpqkrMvCPDwyXMUnASDt6Qw==", "dev": true, "license": "MIT", "dependencies": { @@ -13404,9 +13399,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15052,16 +15047,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-plugin-css-injected-by-js": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.5.2.tgz", - "integrity": "sha512-2MpU/Y+SCZyWUB6ua3HbJCrgnF0KACAsmzOQt1UvRVJCGF6S8xdA3ZUhWcWdM9ivG4I5az8PnQmwwrkC2CAQrQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vite": ">2.0.0-0" - } - }, "node_modules/vite-plugin-dts": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.5.4.tgz", diff --git a/package.json b/package.json index 0e6260e..8c6b26a 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,7 @@ "type": "module", "exports": { "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": "./dist/index.mjs" }, "files": [ "dist" @@ -93,7 +92,6 @@ "typedoc": "^0.28.20", "typescript": "^5.9.3", "vite": "^7.1.11", - "vite-plugin-css-injected-by-js": "^3.5.2", "vitest": "^3.2.4", "vue": "^3.5.42", "vue-tsc": "^3.3.11" diff --git a/vite.config.ts b/vite.config.ts index 53294b4..570d6f1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,7 +9,6 @@ import { createLibConfig } from '@nextcloud/vite-config' import { po as poParser } from 'gettext-parser' import { readdirSync, readFileSync } from 'node:fs' import { defineConfig } from 'vite' -import injectCSS from 'vite-plugin-css-injected-by-js' import { videojsElements } from './build/videojsElements.ts' const { version } = JSON.parse(readFileSync('./package.json', 'utf8')) @@ -67,7 +66,6 @@ export default defineConfig((env) => { return createLibConfig({ index: 'lib/index.ts', }, { - libraryFormats: ['es', 'cjs'], nodeExternalsOptions: { // for subpath imports like '@nextcloud/l10n/gettext' include: [/^@nextcloud\//], @@ -77,15 +75,8 @@ export default defineConfig((env) => { // not survive into what we publish. exclude: [/^vue-material-design-icons\//, /^@mdi\/svg\//], }, - // The styles are carried inside the javascript and injected as it - // runs, each chunk bringing its own. Emitting stylesheets instead - // leaves it to the consuming bundler to link a chunk's CSS when - // that chunk loads, which is not something a library can count on: - // in the server it did not happen, and the lazily loaded viewer - // rendered with none of its styles. - inlineCSS: false, config: { - plugins: [injectCSS({ relativeCSSInjection: true }), videojsElements], + plugins: [videojsElements], }, replace: {