From 1e698664d8a41590bbfa9ef7aceefff6a5bb4212 Mon Sep 17 00:00:00 2001 From: zhixin Date: Wed, 4 Nov 2026 18:53:18 +0800 Subject: [PATCH] Fix #8558: added ESM builds to fix 'require is not defined' via jsDelivr +esm - Add an 'es' format output for every rollup entry (core, extensions, themes, locales), producing .esm.js / .esm.min.js files with a top-level 'import $ from "jquery"' that ESM pipelines can resolve - Add 'module' field to package.json so ESM-aware resolvers (jsDelivr +esm, bundlers) pick the ESM build instead of converting the UMD one --- package.json | 1 + rollup.config.js | 47 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 59699664af..8a7dee3603 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "style": "dist/bootstrap-table.min.css", "sass": "src/bootstrap-table.scss", "main": "dist/bootstrap-table.min.js", + "module": "dist/bootstrap-table.esm.min.js", "files": [ "dist/", "src/", diff --git a/rollup.config.js b/rollup.config.js index 35d3eeee3a..c09a79aa69 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -38,7 +38,8 @@ const plugins = [ inject({ include: '**/*.js', exclude: 'node_modules/**', - $: 'jquery' + $: 'jquery', + jQuery: 'jquery' }), nodeResolve(), commonjs(), @@ -66,36 +67,52 @@ if (process.env.NODE_ENV === 'production') { for (const file of files) { let out = `dist/${file.replace('src/', '')}` + let esmOut = out.replace(/\.js$/, '.esm.js') if (process.env.NODE_ENV === 'production') { - out = out.replace(/.js$/, '.min.js') + out = out.replace(/\.js$/, '.min.js') + esmOut = esmOut.replace(/\.js$/, '.min.js') } config.push({ input: file, - output: { - name: 'BootstrapTable', - file: out, - format: 'umd', - globals - }, + output: [ + { + name: 'BootstrapTable', + file: out, + format: 'umd', + globals + }, + { + file: esmOut, + format: 'es' + } + ], external, plugins }) } let out = 'dist/bootstrap-table-locale-all.js' +let esmOut = out.replace(/\.js$/, '.esm.js') if (process.env.NODE_ENV === 'production') { - out = out.replace(/.js$/, '.min.js') + out = out.replace(/\.js$/, '.min.js') + esmOut = esmOut.replace(/\.js$/, '.min.js') } config.push({ input: 'src/locale/**/*.js', - output: { - name: 'BootstrapTable', - file: out, - format: 'umd', - globals - }, + output: [ + { + name: 'BootstrapTable', + file: out, + format: 'umd', + globals + }, + { + file: esmOut, + format: 'es' + } + ], external, plugins: [ multiEntry(),