aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-11-04 00:20:35 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-11-04 00:20:35 +0800
commit0151c246004de1c0f3ad944f3da6c70a76a49c7e (patch)
tree254aef50e1a59b0fb7f84598a83355a632b22038
parent15c85d991530c6eec92597c47012452649b1a503 (diff)
refactor(build): update build script for addon
* To fit file size limit for addon submission of mozilla.org, add scripts for each renderers * add scripts/addon.sh for bundling, with simple rollup commands * scripts/rollup.config.js no more handle addon build
-rw-r--r--.gitignore20
-rw-r--r--addon/index.js (renamed from addon/index.mjs)6
-rw-r--r--addon/manifest.json15
-rw-r--r--addon/src/dumbymap.mjs5
-rw-r--r--addon/src/renderers/leaflet.mjs4
-rw-r--r--addon/src/renderers/maplibre.mjs4
-rw-r--r--addon/src/renderers/openlayers.mjs4
-rw-r--r--package.json2
-rwxr-xr-xscripts/addon.sh9
-rw-r--r--scripts/rollup.config.js29
10 files changed, 56 insertions, 42 deletions
diff --git a/.gitignore b/.gitignore
index 00ad946..84e6d3f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,21 @@
1# node
2node_modules/
3package-lock.json
4pnpm-lock.yaml
5src/css/easymde.min.css
6
7# output
1dist/ 8dist/
2docs/ 9docs/
10
11# addon
12addon.zip
3addon/**js 13addon/**js
14addon/renderers/**js
4addon/**css 15addon/**css
5addon.zip
6!addon/index** 16!addon/index**
7!addon/background** 17!addon/background**
18!addon/src
19
20# others
8doc-coverage/ 21doc-coverage/
9node_modules/
10package-lock.json
11pnpm-lock.yaml
12mapclay
13src/css/easymde.min.css
diff --git a/addon/index.mjs b/addon/index.js
index dd8fa11..2ce3423 100644
--- a/addon/index.mjs
+++ b/addon/index.js
@@ -23,14 +23,14 @@ const contentSelectors = {
23} 23}
24const contentSelector = contentSelectors[url.host] 24const contentSelector = contentSelectors[url.host]
25 25
26const simpleRender = mapclay.renderWith(config => ({ 26const simpleRender = globalThis.renderWith(config => ({
27 use: use ?? 'Leaflet', 27 use: use ?? 'Leaflet',
28 width: '100%', 28 width: '100%',
29 height: '200px', 29 height: '200px',
30 XYZ: 'https://tile.openstreetmap.jp/styles/osm-bright/512/{z}/{x}/{y}.png', 30 XYZ: 'https://tile.openstreetmap.jp/styles/osm-bright/512/{z}/{x}/{y}.png',
31 ...config, 31 ...config,
32 aliases: { 32 aliases: {
33 use: mapclay.renderers, 33 use: globalThis.mapclayRenderer,
34 ...(config.aliases ?? {}), 34 ...(config.aliases ?? {}),
35 }, 35 },
36})) 36}))
@@ -42,7 +42,7 @@ browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
42 console.log('receive message', message) 42 console.log('receive message', message)
43 sendResponse('received') 43 sendResponse('received')
44 if (message.id === 'map-inline-add') { 44 if (message.id === 'map-inline-add') {
45 generateMaps(container, { 45 globalThis.generateMaps(container, {
46 crs: url.searchParams.get('crs') ?? 'EPSG:4326', 46 crs: url.searchParams.get('crs') ?? 'EPSG:4326',
47 render: simpleRender, 47 render: simpleRender,
48 }) 48 })
diff --git a/addon/manifest.json b/addon/manifest.json
index e7bcbcf..92baf30 100644
--- a/addon/manifest.json
+++ b/addon/manifest.json
@@ -1,12 +1,14 @@
1{ 1{
2 "manifest_version": 2, 2 "manifest_version": 2,
3 "name": "DumbyMap", 3 "name": "MapInline",
4 "version": "1.0", 4 "version": "1.0",
5 5
6 "description": "Add interatctive Map", 6 "description": "Add Interatctive Map",
7 7
8 "icons": { 8 "icons": {
9 "48": "icons/default.ico" 9 "16": "icons/default-0.png",
10 "32": "icons/default-1.png",
11 "48": "icons/default-2.png"
10 }, 12 },
11 13
12 "browser_action": { 14 "browser_action": {
@@ -22,8 +24,11 @@
22 "https://prosemirror.net/examples/*" 24 "https://prosemirror.net/examples/*"
23 ], 25 ],
24 "js": [ 26 "js": [
25 "dumbymap.mjs", 27 "renderers/leaflet.js",
26 "index.mjs" 28 "renderers/maplibre.js",
29 "renderers/openlayers.js",
30 "dumbymap.js",
31 "index.js"
27 ], 32 ],
28 "css": [ 33 "css": [
29 "css/dumbymap.css" 34 "css/dumbymap.css"
diff --git a/addon/src/dumbymap.mjs b/addon/src/dumbymap.mjs
new file mode 100644
index 0000000..07af342
--- /dev/null
+++ b/addon/src/dumbymap.mjs
@@ -0,0 +1,5 @@
1import { generateMaps } from '../../dist/dumbymap.mjs'
2import { renderWith } from '../../node_modules/mapclay/dist/mapclay.mjs'
3
4globalThis.generateMaps = generateMaps
5globalThis.renderWith = renderWith
diff --git a/addon/src/renderers/leaflet.mjs b/addon/src/renderers/leaflet.mjs
new file mode 100644
index 0000000..8e056f9
--- /dev/null
+++ b/addon/src/renderers/leaflet.mjs
@@ -0,0 +1,4 @@
1import { default as Leaflet } from '../../../node_modules/mapclay/dist/renderers/leaflet.mjs'
2
3if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {}
4globalThis.mapclayRenderers.Leaflet = Leaflet
diff --git a/addon/src/renderers/maplibre.mjs b/addon/src/renderers/maplibre.mjs
new file mode 100644
index 0000000..753af86
--- /dev/null
+++ b/addon/src/renderers/maplibre.mjs
@@ -0,0 +1,4 @@
1import { default as Maplibre } from '../../../node_modules/mapclay/dist/renderers/maplibre.mjs'
2
3if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {}
4globalThis.mapclayRenderers.Maplibre = Maplibre
diff --git a/addon/src/renderers/openlayers.mjs b/addon/src/renderers/openlayers.mjs
new file mode 100644
index 0000000..2c42757
--- /dev/null
+++ b/addon/src/renderers/openlayers.mjs
@@ -0,0 +1,4 @@
1import { default as Openlayers } from '../../../node_modules/mapclay/dist/renderers/openlayers.mjs'
2
3if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {}
4globalThis.mapclayRenderers.Openlayers = Openlayers
diff --git a/package.json b/package.json
index c0f3a7f..a137ca1 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
26 "style": "scripts/stylelint.sh", 26 "style": "scripts/stylelint.sh",
27 "docs": "jsdoc -c scripts/jsdoc.conf src/; xdg-open http://localhost:8080/docs/", 27 "docs": "jsdoc -c scripts/jsdoc.conf src/; xdg-open http://localhost:8080/docs/",
28 "prepack": "npm run lint && npm run style && npm run build", 28 "prepack": "npm run lint && npm run style && npm run build",
29 "addon": "mkdir -p addon/css; cp src/css/dumbymap.css addon/css; ADDON=true rollup -c scripts/rollup.config.js --watch", 29 "addon": "scripts/addon.sh",
30 "addon.zip": "cd addon; zip -r ../addon.zip *", 30 "addon.zip": "cd addon; zip -r ../addon.zip *",
31 "dev-addon": "web-ext run -s addon" 31 "dev-addon": "web-ext run -s addon"
32 }, 32 },
diff --git a/scripts/addon.sh b/scripts/addon.sh
new file mode 100755
index 0000000..3b7bf3b
--- /dev/null
+++ b/scripts/addon.sh
@@ -0,0 +1,9 @@
1#! /bin/bash
2
3mkdir -p addon/css
4ln -f src/css/dumbymap.css addon/css/dumbymap.css
5
6mkdir -p addon/renderers/
7rollup addon/src/renderers/* --dir addon/renderers
8
9rollup addon/src/dumbymap.mjs --file addon/dumbymap.js
diff --git a/scripts/rollup.config.js b/scripts/rollup.config.js
index 547260b..b3a6139 100644
--- a/scripts/rollup.config.js
+++ b/scripts/rollup.config.js
@@ -6,7 +6,7 @@ import { join } from 'path'
6import { bundleStats } from 'rollup-plugin-bundle-stats' 6import { bundleStats } from 'rollup-plugin-bundle-stats'
7 7
8const prod = process.env.PRODUCTION 8const prod = process.env.PRODUCTION
9const addon = process.env.ADDON 9const watch = process.env.ROLLUP_WATCH
10 10
11function resolve (file, origin) { 11function resolve (file, origin) {
12 // Your way to resolve local include path 12 // Your way to resolve local include path
@@ -79,31 +79,6 @@ export default [
79] 79]
80 .map(config => ({ ...general, ...config })) 80 .map(config => ({ ...general, ...config }))
81 .filter(config => { 81 .filter(config => {
82 if (addon) return config.input.match(/dumbymap/) 82 if (watch) return config.input.match(/editor/)
83 if (!prod) return config.input.match(/editor/)
84 return true 83 return true
85 }) 84 })
86 .map(config => {
87 if (!addon) return config
88
89 config.output.forEach(o => { o.dir = './addon' })
90 config.plugins.push({
91 name: 'remove-exports',
92 transform (code, id) {
93 if (id.includes(config.input)) {
94 // remove export keyword for addon
95 const transformedCode = code.replace(/\n(\s*)export\s*/g, '$1')
96 return {
97 code: [
98 transformedCode,
99 'globalThis.generateMaps = generateMaps',
100 'globalThis.mapclay = mapclay',
101 ].join('\n'),
102 }
103 }
104 return null
105 },
106 })
107
108 return config
109 })