Drop UMD and make ESM the default entrypoint (#8826)

Signed-off-by: Jon Koops <jonkoops@gmail.com>
Co-authored-by: Florian Bischof <design.falke@gmail.com>
This commit is contained in:
Jon Koops
2025-03-17 15:59:00 +01:00
committed by GitHub
parent 8f1accacf0
commit 7ac98758d4
80 changed files with 84 additions and 125 deletions

View File

@ -113,7 +113,7 @@ jobs:
cache: npm
- name: Run Node.js SSR script
run: node ./spec/ssr/ssr_node.mjs
run: node ./spec/ssr/ssr_node.js
- name: Set up Deno
uses: denoland/setup-deno@v1

View File

@ -221,40 +221,6 @@ file to make sure the minified files are not versioned, and an
[empty `.npmignore`](https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package)
to ensure that they are published to NPM.
## Module Loaders
Module loaders such as [RequireJS](http://requirejs.org/) and [Browserify](http://browserify.org/) implement module systems like AMD (Asynchronous Module Definition) and CommonJS to allow developers to modularize and load their code.
You can add support for AMD/CommonJS loaders to your Leaflet plugin by following this pattern based on the [Universal Module Definition](https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js)
```js
(function (factory, window) {
// define an AMD module that relies on 'leaflet'
if (typeof define === 'function' && define.amd) {
define(['leaflet'], factory);
// define a Common JS module that relies on 'leaflet'
} else if (typeof exports === 'object') {
module.exports = factory(require('leaflet'));
}
// attach your plugin to the global 'L' variable
if (typeof window !== 'undefined' && window.L) {
window.L.YourPlugin = factory(L);
}
}(function (L) {
var MyLeafletPlugin = {};
// implement your plugin
// return your plugin when you are done
return MyLeafletPlugin;
}, window));
```
Now your plugin is available as an AMD and CommonJS module and can be used in module loaders like Browserify and RequireJS.
## Adding to the plugins list
Once your plugin is published, it is a good idea to add it to the [Leaflet plugins list](http://leafletjs.com/plugins.html). To do so:

View File

@ -15,16 +15,7 @@ const config = {
input: 'src/LeafletWithGlobals.js',
output: [
{
file: pkg.main,
format: 'umd',
name: 'leaflet',
banner,
sourcemap: true,
freeze: false,
esModule: false
},
{
file: pkg.module,
file: pkg.exports['.'],
format: 'es',
banner,
sourcemap: true,

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -10,7 +10,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -7,7 +7,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -40,7 +40,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -14,7 +14,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -14,7 +14,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -16,7 +16,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -31,7 +31,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -36,7 +36,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -9,7 +9,7 @@
<script type="importmap">
{
"imports": {
"leaflet": "../../dist/leaflet-src.esm.js"
"leaflet": "../../dist/leaflet-src.js"
}
}
</script>

View File

@ -6,7 +6,7 @@ import globals from 'globals';
export default [
...config,
{
files: ['*.js', '*.mjs', '*.cjs'],
files: ['*.js', '*.cjs'],
},
{
ignores: [

View File

@ -32,8 +32,10 @@
"uglify-js": "^3.19.1",
"ui-event-simulator": "^2.0.0"
},
"main": "dist/leaflet-src.js",
"module": "dist/leaflet-src.esm.js",
"type": "module",
"exports": {
".": "./dist/leaflet-src.js"
},
"style": "dist/leaflet.css",
"files": [
"dist",
@ -44,14 +46,14 @@
],
"scripts": {
"debug": "http-server -c-1",
"docs": "node ./build/docs.mjs && node ./build/integrity.mjs",
"test": "karma start ./spec/karma.conf.js",
"coverage": "karma start ./spec/karma.conf.js --coverage --single-run",
"docs": "node ./build/docs.js && node ./build/integrity.js",
"test": "karma start ./spec/karma.conf.cjs",
"coverage": "karma start ./spec/karma.conf.cjs --coverage --single-run",
"build": "npm run rollup && npm run uglify",
"lint": "eslint .",
"lintfix": "npm run lint -- --fix",
"rollup": "rollup -c build/rollup-config.mjs",
"watch": "rollup -w -c build/rollup-config.mjs",
"rollup": "rollup -c build/rollup-config.js",
"watch": "rollup -w -c build/rollup-config.js",
"uglify": "uglifyjs dist/leaflet-src.js -c -m -o dist/leaflet.js --source-map filename=dist/leaflet.js.map --source-map content=dist/leaflet-src.js.map --source-map url=leaflet.js.map --comments",
"bundlemon": "bundlemon --subProject js --defaultCompression none && bundlemon --subProject js-gzip --defaultCompression gzip",
"serve": "cd docs && bundle exec jekyll serve",

View File

@ -12,7 +12,7 @@ Reloaded before every execution run.
<script type="importmap">
{
"imports": {
"leaflet": "/base/dist/leaflet-src.esm.js",
"leaflet": "/base/dist/leaflet-src.js",
"chai": "/base/node_modules/chai/chai.js",
"prosthetic-hand": "/base/node_modules/prosthetic-hand/lib/Hand.js",
"sinon": "/base/node_modules/sinon/pkg/sinon-esm.js",

View File

@ -14,7 +14,7 @@ just for immediate execution, without reporting to Karma server.
<script type="importmap">
{
"imports": {
"leaflet": "/base/dist/leaflet-src.esm.js",
"leaflet": "/base/dist/leaflet-src.js",
"chai": "/base/node_modules/chai/chai.js",
"prosthetic-hand": "/base/node_modules/prosthetic-hand/lib/Hand.js",
"sinon": "/base/node_modules/sinon/pkg/sinon-esm.js",

View File

@ -79,7 +79,7 @@ module.exports = function (/** @type {import('karma').Config} */ config) {
karmaConfig.plugins.push('karma-coverage');
karmaConfig.reporters.push('coverage');
karmaConfig.preprocessors = {
'dist/leaflet-src.esm.js': 'coverage'
'dist/leaflet-src.js': 'coverage'
};
}

View File

@ -1,2 +1,2 @@
import L from '../../dist/leaflet-src.esm.js';
import L from '../../dist/leaflet-src.js';
console.log(L.version);