Paillasse/portail/scripts/copier-vendor.mjs
Adam Belkacemi e4a6aaebb1 ajoute les pages légales, la purge RGPD et sert polices et scripts depuis le portail
Pages /legal et /confidentialite réécrites d'après le système réel, purge
des classes archivées depuis 90 jours (prouvée par Pest), archivage côté
prof. Polices, xterm.js et CodeMirror ne sont plus chargés depuis Google
ni jsDelivr. Pages d'aperçu signalées, sans vrais établissements ni faux
chiffres. Journaux Laravel gardés 14 jours.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:07:25 +02:00

25 lines
1.3 KiB
JavaScript

// 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`);