mirror of
https://github.com/Leaflet/Leaflet.git
synced 2025-07-25 15:38:54 +00:00
78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
import json from '@rollup/plugin-json';
|
|
import {readFileSync} from 'node:fs';
|
|
import rollupGitVersion from 'rollup-plugin-git-version';
|
|
import {simpleGit} from 'simple-git';
|
|
|
|
// TODO: Replace this with a regular import when ESLint adds support for import assertions.
|
|
// See: https://rollupjs.org/guide/en/#importing-packagejson
|
|
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url)));
|
|
const release = process.env.NODE_ENV === 'release';
|
|
const version = await getVersion();
|
|
const banner = createBanner(version);
|
|
|
|
/** @type {import('rollup').RollupOptions} */
|
|
const config = {
|
|
input: 'src/LeafletWithGlobals.js',
|
|
output: [
|
|
{
|
|
file: pkg.exports['.'],
|
|
format: 'es',
|
|
banner,
|
|
sourcemap: true,
|
|
freeze: false
|
|
},
|
|
{
|
|
file: './dist/leaflet-global-src.js',
|
|
name: 'leaflet',
|
|
format: 'umd',
|
|
banner,
|
|
sourcemap: true,
|
|
freeze: false,
|
|
esModule: false
|
|
}
|
|
],
|
|
plugins: [
|
|
release ? json() : rollupGitVersion(),
|
|
{
|
|
name: 'copy-leaflet-assets',
|
|
generateBundle() {
|
|
const fileNames = [
|
|
'leaflet.css',
|
|
'images/logo.svg',
|
|
'images/layers.svg',
|
|
'images/marker-icon.png',
|
|
'images/marker-icon-2x.png',
|
|
'images/marker-shadow.png',
|
|
];
|
|
for (const fileName of fileNames) {
|
|
const source = readFileSync(new URL(`../src/${fileName}`, import.meta.url));
|
|
this.emitFile({type: 'asset', fileName, source});
|
|
}
|
|
},
|
|
},
|
|
]
|
|
};
|
|
|
|
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 `/* @preserve
|
|
* Leaflet ${version}, a JS library for interactive maps. https://leafletjs.com
|
|
* (c) 2010-${new Date().getFullYear()} Volodymyr Agafonkin, (c) 2010-2011 CloudMade
|
|
*/
|
|
`;
|
|
}
|