Paillasse/portail/scripts/copier-vendor.mjs

26 lines
1.3 KiB
JavaScript
Raw Normal View History

// Copie dans public/vendor/ les bibliothèques que les pages vitrine chargent
// par <script> classique (étape 14) : mêmes fichiers que sur jsDelivr, mais
// servis par le portail — aucune adresse IP de visiteur envoyée à un CDN.
import { cpSync, mkdirSync, rmSync } from 'node:fs';
import { dirname } from 'node:path';
const fichiers = {
'xterm/xterm.js': '@xterm/xterm/lib/xterm.js',
'xterm/xterm.css': '@xterm/xterm/css/xterm.css',
'xterm/addon-fit.js': '@xterm/addon-fit/lib/addon-fit.js',
'codemirror/codemirror.js': 'codemirror/lib/codemirror.js',
'codemirror/codemirror.css': 'codemirror/lib/codemirror.css',
'codemirror/closebrackets.js': 'codemirror/addon/edit/closebrackets.js',
'codemirror/matchbrackets.js': 'codemirror/addon/edit/matchbrackets.js',
};
for (const mode of ['css', 'htmlmixed', 'javascript', 'python', 'shell', 'sql', 'xml']) {
fichiers[`codemirror/mode/${mode}.js`] = `codemirror/mode/${mode}/${mode}.js`;
}
rmSync('public/vendor', { recursive: true, force: true });
for (const [cible, source] of Object.entries(fichiers)) {
mkdirSync(dirname(`public/vendor/${cible}`), { recursive: true });
cpSync(`node_modules/${source}`, `public/vendor/${cible}`);
}
console.log(`public/vendor : ${Object.keys(fichiers).length} fichiers copiés`);