Revise build step and dist structure for better Webpack, CJS and pnpm support

This commit is contained in:
Vanilagy
2025-07-09 11:53:19 +02:00
parent 3e96184a6f
commit 84c9d37cb7
16 changed files with 52 additions and 63 deletions
+1
View File
@@ -2,6 +2,7 @@ name: Lint
on:
push:
pull_request:
jobs:
lint:
-1
View File
@@ -1,5 +1,4 @@
/node_modules
/build
/dist
/dist-docs
.DS_Store
+1 -1
View File
@@ -152,7 +152,7 @@ For development, clone this repository and install it using a modern version of
```bash
npm install # Install dependencies
npm run watch # Development build with watch mode
npm run watch # Build bundles on watch mode
npm run build # Production build with type definitions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"mainEntryPointFilePath": "build/index.d.ts",
"mainEntryPointFilePath": "dist/modules/index.d.ts",
"bundledPackages": [],
"compiler": {},
"apiReport": {
+4 -4
View File
@@ -37,20 +37,20 @@ const esmConfig = {
const ctxUmd = await esbuild.context({
...umdConfig,
outfile: 'dist/mediabunny.js',
outfile: 'dist/bundles/mediabunny.cjs',
});
const ctxEsm = await esbuild.context({
...esmConfig,
outfile: 'dist/mediabunny.mjs',
outfile: 'dist/bundles/mediabunny.mjs',
});
const ctxUmdMinified = await esbuild.context({
...umdConfig,
outfile: 'dist/mediabunny.min.js',
outfile: 'dist/bundles/mediabunny.min.cjs',
minify: true,
});
const ctxEsmMinified = await esbuild.context({
...esmConfig,
outfile: 'dist/mediabunny.min.mjs',
outfile: 'dist/bundles/mediabunny.min.mjs',
minify: true,
});
+1 -1
View File
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<script src="../dist/mediabunny.js"></script>
<script src="../dist/bundles/mediabunny.cjs"></script>
<script type="module">
const fileInput = document.createElement('input');
+1 -1
View File
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<script src="../dist/mediabunny.js"></script>
<script src="../dist/bundles/mediabunny.cjs"></script>
<script type="module">
const fileInput = document.createElement('input');
+1 -1
View File
@@ -1,6 +1,6 @@
<button>Go</button>
<script src="../dist/mediabunny.js"></script>
<script src="../dist/bundles/mediabunny.cjs"></script>
<script type="module">
function download(blob, filename) {
+1 -1
View File
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<script src="../dist/mediabunny.js"></script>
<script src="../dist/bundles/mediabunny.cjs"></script>
<script type="module">
function download(blob, filename) {
+1 -1
View File
@@ -15,7 +15,7 @@
</div>
</div>
<script src="../dist/mediabunny.js"></script>
<script src="../dist/bundles/mediabunny.cjs"></script>
<script type="module">
const fileInput = document.querySelector('input[type="file"]');
+22 -36
View File
@@ -319,9 +319,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -329,9 +329,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"dev": true,
"license": "MIT",
"engines": {
@@ -339,13 +339,13 @@
}
},
"node_modules/@babel/parser": {
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
"integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz",
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.0"
"@babel/types": "^7.28.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -355,14 +355,14 @@
}
},
"node_modules/@babel/types": {
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
"integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz",
"integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1238,18 +1238,14 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
"version": "0.3.12",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
"integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
@@ -1262,16 +1258,6 @@
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/set-array": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
@@ -1280,9 +1266,9 @@
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"version": "0.3.29",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz",
"integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==",
"dev": true,
"license": "MIT",
"dependencies": {
+13 -9
View File
@@ -4,22 +4,24 @@
"version": "1.0.3",
"description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.",
"type": "module",
"main": "./dist/mediabunny.js",
"module": "./dist/mediabunny.mjs",
"types": "./dist/mediabunny.d.ts",
"main": "./dist/bundles/mediabunny.cjs",
"module": "./dist/modules/index.js",
"types": "./dist/modules/index.d.ts",
"exports": {
"types": "./dist/mediabunny.d.ts",
"import": "./dist/mediabunny.mjs",
"require": "./dist/mediabunny.js"
"types": "./dist/modules/index.d.ts",
"import": "./dist/modules/index.js",
"require": "./dist/bundles/mediabunny.cjs"
},
"files": [
"README.md",
"package.json",
"LICENSE",
"dist"
"dist",
"src"
],
"sideEffects": false,
"scripts": {
"build": "tsx scripts/ensure-license-headers.ts && node build.mjs && tsc -p src && api-extractor run && npm run check-docblocks && tsx scripts/append-namespace.ts",
"build": "rm -rf dist && tsx scripts/ensure-license-headers.ts && tsc -p src && npm run fix-build-import-paths && node build.mjs && api-extractor run && npm run check-docblocks && npm run append-namespace",
"watch": "node build.mjs --watch",
"lint": "eslint .",
"check": "tsc -p src --noEmit && tsc -p scripts --noEmit && tsc -p tsconfig.vite.json --noEmit && rm tsconfig.vite.tsbuildinfo",
@@ -28,7 +30,9 @@
"docs:build": "vitepress build docs && npm run examples:build",
"docs:preview": "vitepress preview docs",
"dev": "vite",
"examples:build": "vite build"
"examples:build": "vite build",
"fix-build-import-paths": "find dist -name \"*.js\" -type f -exec sed -i -r \"s/ from '([^']+)';/ from '\\1.js';/g\" {} \\;",
"append-namespace": "echo 'export as namespace Mediabunny;' >> dist/mediabunny.d.ts"
},
"license": "MPL-2.0",
"repository": {
-3
View File
@@ -1,3 +0,0 @@
import { appendFileSync } from 'fs';
appendFileSync('dist/mediabunny.d.ts', '\nexport as namespace Mediabunny;');
+3
View File
@@ -6,6 +6,9 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/// <reference types="dom-mediacapture-transform" preserve="true" />
/// <reference types="dom-webcodecs" preserve="true" />
export {
Output,
OutputOptions,
+1 -2
View File
@@ -1,9 +1,8 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../build",
"outDir": "../dist/modules",
"declaration": true,
"sourceMap": true,
"declarationMap": true,
"stripInternal": true,
"noEmit": false
+1 -1
View File
@@ -20,7 +20,7 @@ const rollupInput = Object.fromEntries(
export default defineConfig({
resolve: {
alias: {
mediabunny: path.resolve(__dirname, './dist/mediabunny.mjs'),
mediabunny: path.resolve(__dirname, './dist/bundles/mediabunny.mjs'),
},
},
plugins: [