Files
dbstorage/dbapp/static/leaflet-tree/rollup-config.mjs
2025-10-24 13:08:08 +03:00

80 lines
2.2 KiB
JavaScript

// copied and adapted from leaftlet repository
import {readFileSync} from 'node:fs';
import json from '@rollup/plugin-json';
import {simpleGit} from 'simple-git';
import del from 'rollup-plugin-delete';
import rollupGitVersion from 'rollup-plugin-git-version';
import pkg from './package.json' with { type: 'json' };
const release = process.env.NODE_ENV === 'release';
const version = await getVersion();
const banner = createBanner(version);
/** @type {import('rollup').RollupOptions} */
const config = {
input: 'LayersTree.js',
output: [
{
file: './dist/LayersTree-umd.js',
name: 'LayersTree',
format: 'umd',
banner,
globals: {leaflet: 'L'},
},
{
file: './dist/LayersTree.js',
name: 'LayersTree',
format: 'es',
banner,
},
],
plugins: [
del({targets: 'dist'}),
release ? json() : rollupGitVersion(),
{
name: 'copy-plugin-assets',
generateBundle() {
const fileNames = [
'L.Control.Layers.Tree.css',
'L.Control.Layers.Tree.d.ts',
'L.Control.Layers.Tree.js',
'LayersTree.d.ts',
];
for (const fileName of fileNames) {
const source = readFileSync(new URL(`./${fileName}`, import.meta.url));
this.emitFile({type: 'asset', fileName, source: `${banner}${source}`});
}
},
},
],
external: ['leaflet'],
watch: {
include: ['LayersTree.js'],
},
};
export default config;
async function getVersion() {
// Skip the git branch+rev in the banner when doing a release build
if (release) {
return pkg.version;
}
const git = simpleGit();
const branch = (await git.branch()).current;
const commit = await git.revparse(['--short', 'HEAD']);
return `${pkg.version}+${branch}.${commit}`;
}
export function createBanner(version) {
return `/*
* Leaflet Control Layers Tree ${version}, a Leaflet plugin.
* (c) 2017-${new Date().getFullYear()} Javier Jimenez Shaw
*/
`;
}