maplibre-gl
Version:
BSD licensed community fork of mapbox-gl, a WebGL interactive maps library
59 lines (53 loc) • 1.77 kB
text/typescript
import typescript from '@rollup/plugin-typescript';
import resolve from '@rollup/plugin-node-resolve';
import replace from '@rollup/plugin-replace';
import commonjs from '@rollup/plugin-commonjs';
import terser from '@rollup/plugin-terser';
import strip from '@rollup/plugin-strip';
import {Plugin} from 'rollup';
import json from '@rollup/plugin-json';
// Common set of plugins/transformations shared across different rollup
// builds (main maplibre bundle, style-spec package, benchmarks bundle)
export const nodeResolve = resolve({
browser: true,
preferBuiltins: false
});
export const plugins = (production: boolean, minified: boolean): Plugin[] => [
json(),
// https://github.com/zaach/jison/issues/351
replace({
preventAssignment: true,
include: /\/jsonlint-lines-primitives\/lib\/jsonlint.js/,
delimiters: ['', ''],
values: {
'_token_stack:': ''
}
}),
production && strip({
sourceMap: true,
functions: ['PerformanceUtils.*']
}),
minified && terser({
compress: {
// eslint-disable-next-line camelcase
pure_getters: true,
passes: 3
},
sourceMap: true
}),
nodeResolve,
typescript(),
commonjs({
// global keyword handling causes Webpack compatibility issues, so we disabled it:
// https://github.com/mapbox/mapbox-gl-js/pull/6956
ignoreGlobal: true
})
].filter(Boolean) as Plugin[];
export const watchStagingPlugin: Plugin = {
name: 'watch-external',
buildStart() {
this.addWatchFile('staging/maplibregl/index.js');
this.addWatchFile('staging/maplibregl/shared.js');
this.addWatchFile('staging/maplibregl/worker.js');
}
};