34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
/**
|
|||
|
|
* Copie les polices Archivo et Inter depuis node_modules vers static/polices/.
|
||
|
|
*
|
||
|
|
* Le self-hébergement n'est pas une préférence : la politique de sécurité de
|
||
|
|
* contenu déclarée dans svelte.config.js interdit toute requête vers un hôte
|
||
|
|
* tiers, Google Fonts compris.
|
||
|
|
*/
|
||
|
|
import { copyFileSync, mkdirSync, readdirSync } from 'node:fs';
|
||
|
|
import { join } from 'node:path';
|
||
|
|
|
||
|
|
const DESTINATION = 'static/polices';
|
||
|
|
mkdirSync(DESTINATION, { recursive: true });
|
||
|
|
|
||
|
|
const familles = [
|
||
|
|
{ paquet: '@fontsource/archivo', graisses: ['400', '600', '700', '900'] },
|
||
|
|
{ paquet: '@fontsource/inter', graisses: ['400', '500', '600', '700'] }
|
||
|
|
];
|
||
|
|
|
||
|
|
let copiees = 0;
|
||
|
|
for (const { paquet, graisses } of familles) {
|
||
|
|
const source = join('node_modules', paquet, 'files');
|
||
|
|
for (const fichier of readdirSync(source)) {
|
||
|
|
const estLatin = fichier.includes('-latin-') && fichier.endsWith('.woff2');
|
||
|
|
const estNormal = fichier.includes('-normal.woff2');
|
||
|
|
const graisseVoulue = graisses.some((g) => fichier.includes(`-${g}-`));
|
||
|
|
if (estLatin && estNormal && graisseVoulue) {
|
||
|
|
copyFileSync(join(source, fichier), join(DESTINATION, fichier));
|
||
|
|
copiees += 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log(`${copiees} fichiers de police copiés dans ${DESTINATION}`);
|