[CHORE] Don't bundle elkjs

- `elkjs` is a library that's imported by `mermaid`, although they have
seperated this package to it's own mermaid
package (https://github.com/mermaid-js/mermaid/pull/5654), the stable
version doesn't have this patch.
- `elkjs` is licensed under the EPL-2.0 license (copyleft), which isn't
compatible with GPL unless the license author explcitly allow this via a
so called "secondary license". At the end of the day it cannot be
released under a MIT or GPL license.
- Use webpack's `externals` option to avoid bundling `elkjs` and instead
leave it as a `require` code.
- This is a 'dirty' way to ensure elkjs isn't bundled and has to be
tested manually to ensure this for every release (via the
`webpack-bundle-analyzer` plugin). If someone tries to use the elkjs
render, it will result in a non-descriptive error being shown.

(cherry picked from commit 510cbe2c92)
This commit is contained in:
Gusted 2024-07-24 23:22:05 +02:00 committed by GitHub
parent c8b6e07840
commit e362e0813d

View file

@ -73,6 +73,14 @@ const filterCssImport = (url, ...args) => {
/** @type {import("webpack").Configuration} */
export default {
externals: [
function ({request}, callback) {
if (/elkjs/.test(request)) {
return callback(null, `commonjs ${request}`);
}
callback();
},
],
mode: isProduction ? 'production' : 'development',
entry: {
index: [