bowler-chart/scripts/vendor.js

34 lines
1.0 KiB
JavaScript

'use strict';
// Copies frontend libraries from node_modules into public/vendor so the app
// loads no remote scripts (works on a locked-down network, reproducible).
const fs = require('fs');
const path = require('path');
const ROOT = path.join(__dirname, '..');
const OUT = path.join(ROOT, 'public', 'vendor');
const FILES = [
['beercss/dist/cdn/beer.min.css', 'beer.min.css'],
['beercss/dist/cdn/beer.min.js', 'beer.min.js'],
['material-dynamic-colors/dist/cdn/material-dynamic-colors.min.js', 'material-dynamic-colors.min.js'],
['alpinejs/dist/cdn.min.js', 'alpine.min.js'],
];
fs.mkdirSync(OUT, { recursive: true });
let ok = 0;
for (const [src, dest] of FILES) {
const from = path.join(ROOT, 'node_modules', src);
const to = path.join(OUT, dest);
try {
fs.copyFileSync(from, to);
console.log(`vendored ${dest}`);
ok++;
} catch (e) {
console.error(`FAILED to vendor ${src}: ${e.message}`);
}
}
console.log(`\n${ok}/${FILES.length} files vendored into public/vendor`);
if (ok < FILES.length) process.exitCode = 1;