diff options
Diffstat (limited to '_tools/cm-esbuild/scripts')
| -rw-r--r-- | _tools/cm-esbuild/scripts/deploy.js | 62 |
1 files changed, 40 insertions, 22 deletions
diff --git a/_tools/cm-esbuild/scripts/deploy.js b/_tools/cm-esbuild/scripts/deploy.js index a06130e..2dcae72 100644 --- a/_tools/cm-esbuild/scripts/deploy.js +++ b/_tools/cm-esbuild/scripts/deploy.js @@ -1,37 +1,55 @@ -const fs = require('fs'), path = require('path'), crypto = require('crypto'); +const fs = require("fs"), + path = require("path"), + crypto = require("crypto"); const site = process.argv[2]; -if (!site) { console.error('usage: node scripts/publish.js <path-to-jekyll-site>'); process.exit(1); } +if (!site) { + console.error("usage: node scripts/publish.js <path-to-jekyll-site>"); + process.exit(1); +} -const dist = path.join(__dirname, '..', 'dist'); -const dest = path.join(site, 'assets', 'cm'); -const jsFiles = fs.readdirSync(dist).filter(f => f.endsWith('.js')).sort(); +const dist = path.join(__dirname, "..", "dist"); +const dest = path.join(site, "assets", "cm"); +const jsFiles = fs + .readdirSync(dist) + .filter((f) => f.endsWith(".js")) + .sort(); // version = hash of the bundle contents, so it only changes when the code does -const h = crypto.createHash('sha1'); +const h = crypto.createHash("sha1"); for (const f of jsFiles) h.update(fs.readFileSync(path.join(dist, f))); -const v = h.digest('hex').slice(0, 10); +const v = h.digest("hex").slice(0, 10); // replace old files so stale chunks don't pile up fs.rmSync(dest, { recursive: true, force: true }); fs.mkdirSync(dest, { recursive: true }); -for (const f of fs.readdirSync(dist)) fs.copyFileSync(path.join(dist, f), path.join(dest, f)); +for (const f of fs.readdirSync(dist)) + fs.copyFileSync(path.join(dist, f), path.join(dest, f)); const entries = { - '@codemirror/state': 'state', - '@codemirror/view': 'view', - '@codemirror/commands': 'commands', - '@codemirror/language': 'language', - '@uiw/codemirror-theme-github': 'theme', + "@codemirror/state": "state", + "@codemirror/view": "view", + "@codemirror/commands": "commands", + "@codemirror/language": "language", + "@uiw/codemirror-theme-github": "theme", }; const imports = Object.entries(entries) - .map(([spec, name]) => ` "${spec}": "{{ '/assets/cm/${name}.js' | relative_url }}?v=${v}"`) - .join(',\n'); -const preload = jsFiles.filter(f => f.startsWith('chunk-')) - .map(f => `<link rel="modulepreload" href="{{ '/assets/cm/${f}' | relative_url }}">`) - .join('\n'); + .map( + ([spec, name]) => + ` "${spec}": "{{ '/assets/cm/${name}.js' | relative_url }}?v=${v}"`, + ) + .join(",\n"); +const preload = jsFiles + .filter((f) => f.startsWith("chunk-")) + .map( + (f) => `<link + rel="modulepreload" + href="{{ '/assets/cm/${f}' | relative_url }}" +/>`, + ) + .join("\n"); -const html = `${preload}\n<script type="importmap">\n{\n "imports": {\n${imports}\n }\n}\n</script>\n`; -fs.mkdirSync(path.join(site, '_includes'), { recursive: true }); -fs.writeFileSync(path.join(site, '_includes', 'cm-importmap.html'), html); -console.log('published, version', v); +const html = `${preload}\n<script type="importmap">\n {\n "imports": {\n${imports}\n }\n }\n</script>\n`; +fs.mkdirSync(path.join(site, "_includes"), { recursive: true }); +fs.writeFileSync(path.join(site, "_includes", "cm-importmap.html"), html); +console.log("published, version", v); |