// scripts/remove-inline-scripts.js const {resolve} = require('path'); const {createHash} = require('crypto'); const {readFileSync, writeFileSync} = require('fs'); const glob = require('glob'); // Configuration - ajuste selon ton setup const OUTPUT_DIR = 'out'; // Pour Next.js static export const BASE_PATH = ''; // Ton basePath si tu en as un const MAGIC_STRING = '__this_is_a_placeholder_for_the_inline_scripts__'; console.log('🔍 Recherche des fichiers HTML...'); const baseDir = resolve(OUTPUT_DIR); const htmlFiles = glob.sync(`${baseDir}/**/*.html`); console.log(`📄 Traitement de ${htmlFiles.length} fichiers HTML`); htmlFiles.forEach((file) => { console.log(`\n🔧 Traitement de ${file}`); // Lire le fichier HTML const contents = readFileSync(file).toString(); const scripts = []; // Extraire tous les scripts inline (spécialement ceux avec self.__next_f) const newFile = contents.replace(/` ); writeFileSync(file, finalHtml); console.log(' ✅ HTML réécrit avec succès'); }); console.log('\n🎉 Traitement terminé ! Tous les scripts inline ont été externalisés.'); console.log('💡 Tu peux maintenant utiliser une CSP stricte sans \'unsafe-inline\'');