Skip to main content

Compilation

Pour des raisons de performances le moteur de règles Publicodes attend en entrée un objet JSON regroupant l'ensemble des règles à évaluer. Ainsi, les fichiers de règles (.publicodes ou .yaml) doivent être compilés en un objet JSON avant d'être utilisés.

Cette étape de compilation a été factorisée dans un module dédié : @publicodes/tools/compilation.

note

Pour l'instant le module exporte uniquement une fonction getModelFromSource , mais il est prévu de publier un CLI autour du script de compilation.

Générer un modèle JSON à partir des fichiers sources

La fonction getModelFromSource permet de compiler un ensemble de fichiers Publicodes en un seul objet JSON.

tip

Cette fonction permet de résoudre les imports de règles depuis des paquets NPM via la macro importer!.

Usage

La fonction getModelFromSource prend en paramètre :

  • un glob (ou un chemin vers un dossier) permettant de définir les fichiers à compiler.

    Si le paramètre est un chemin vers un dossier, <dossier>/**/*.publicodes est utilisé par défaut.

  • un objet de configuration optionnel :
    • ignore : un tableau de globs à ignorer
    • verbose : un booléen permettant d'afficher les logs de compilation

Exemple d'utilisation

build.js
import { writeFileSync } from "fs"
import { getModelFromSource } from '@publicodes/tools/compilation'

const model = getModelFromSource(
'data',
{
ignore: ['data/test/**'],
verbose: true
},
)

writeFileSync('dist/model.json', JSON.stringify(model, null, 2))