diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-11-04 00:20:35 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-11-04 00:20:35 +0800 |
commit | 0151c246004de1c0f3ad944f3da6c70a76a49c7e (patch) | |
tree | 254aef50e1a59b0fb7f84598a83355a632b22038 | |
parent | 15c85d991530c6eec92597c47012452649b1a503 (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-- | .gitignore | 20 | ||||
-rw-r--r-- | addon/index.js (renamed from addon/index.mjs) | 6 | ||||
-rw-r--r-- | addon/manifest.json | 15 | ||||
-rw-r--r-- | addon/src/dumbymap.mjs | 5 | ||||
-rw-r--r-- | addon/src/renderers/leaflet.mjs | 4 | ||||
-rw-r--r-- | addon/src/renderers/maplibre.mjs | 4 | ||||
-rw-r--r-- | addon/src/renderers/openlayers.mjs | 4 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rwxr-xr-x | scripts/addon.sh | 9 | ||||
-rw-r--r-- | scripts/rollup.config.js | 29 |
10 files changed, 56 insertions, 42 deletions
@@ -1,13 +1,21 @@ | |||
1 | # node | ||
2 | node_modules/ | ||
3 | package-lock.json | ||
4 | pnpm-lock.yaml | ||
5 | src/css/easymde.min.css | ||
6 | |||
7 | # output | ||
1 | dist/ | 8 | dist/ |
2 | docs/ | 9 | docs/ |
10 | |||
11 | # addon | ||
12 | addon.zip | ||
3 | addon/**js | 13 | addon/**js |
14 | addon/renderers/**js | ||
4 | addon/**css | 15 | addon/**css |
5 | addon.zip | ||
6 | !addon/index** | 16 | !addon/index** |
7 | !addon/background** | 17 | !addon/background** |
18 | !addon/src | ||
19 | |||
20 | # others | ||
8 | doc-coverage/ | 21 | doc-coverage/ |
9 | node_modules/ | ||
10 | package-lock.json | ||
11 | pnpm-lock.yaml | ||
12 | mapclay | ||
13 | src/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 | } |
24 | const contentSelector = contentSelectors[url.host] | 24 | const contentSelector = contentSelectors[url.host] |
25 | 25 | ||
26 | const simpleRender = mapclay.renderWith(config => ({ | 26 | const 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 @@ | |||
1 | import { generateMaps } from '../../dist/dumbymap.mjs' | ||
2 | import { renderWith } from '../../node_modules/mapclay/dist/mapclay.mjs' | ||
3 | |||
4 | globalThis.generateMaps = generateMaps | ||
5 | globalThis.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 @@ | |||
1 | import { default as Leaflet } from '../../../node_modules/mapclay/dist/renderers/leaflet.mjs' | ||
2 | |||
3 | if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {} | ||
4 | globalThis.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 @@ | |||
1 | import { default as Maplibre } from '../../../node_modules/mapclay/dist/renderers/maplibre.mjs' | ||
2 | |||
3 | if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {} | ||
4 | globalThis.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 @@ | |||
1 | import { default as Openlayers } from '../../../node_modules/mapclay/dist/renderers/openlayers.mjs' | ||
2 | |||
3 | if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {} | ||
4 | globalThis.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 | |||
3 | mkdir -p addon/css | ||
4 | ln -f src/css/dumbymap.css addon/css/dumbymap.css | ||
5 | |||
6 | mkdir -p addon/renderers/ | ||
7 | rollup addon/src/renderers/* --dir addon/renderers | ||
8 | |||
9 | rollup 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' | |||
6 | import { bundleStats } from 'rollup-plugin-bundle-stats' | 6 | import { bundleStats } from 'rollup-plugin-bundle-stats' |
7 | 7 | ||
8 | const prod = process.env.PRODUCTION | 8 | const prod = process.env.PRODUCTION |
9 | const addon = process.env.ADDON | 9 | const watch = process.env.ROLLUP_WATCH |
10 | 10 | ||
11 | function resolve (file, origin) { | 11 | function 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 | }) | ||