UNPKG

@gouvfr/dsfr-nexus

Version:

Le module `dsfr-nexus` est l'interface de ligne de commande (CLI) centrale du Système de Design de l’État - DSFR. Il offre des outils pour gérer et compiler les ressources du DSFR

72 lines (59 loc) 2.53 kB
import { getStates } from '../../common/state/state.js'; import { PartPublisher } from './part/part-publisher.js'; import { DEPLOY_FOLDER, ENV_FOLDER } from '../../common/constants.js'; import { BundlePublisher } from './integration/bundle-publisher.js'; import { StorybookPublisher } from './integration/storybook-publisher.js'; import { RedirectionPublisher } from './integration/redirection-publisher.js' import { SearchPublisher } from './integration/search/search-publisher.js' import { IndexingPublisher } from './integration/indexing-publisher.js'; import { FilterPublisher } from './integration/filter/filter-publisher.js'; class DSFRPublisher { async publish (settings) { if (!settings.bypass) { const bundlePublisher = new BundlePublisher(DEPLOY_FOLDER, ENV_FOLDER); await bundlePublisher.clean(); await bundlePublisher.copy(settings.context); await bundlePublisher.compile(); } const states = await getStates({ src: '.', dest: DEPLOY_FOLDER }); for (const state of states) { await this._publish(settings, state); } } async _publish (settings, state) { if (!settings.bypass) { const redirectionPublisher = new RedirectionPublisher(state); await redirectionPublisher.read(); await redirectionPublisher.write(); const storybookPublisher = new StorybookPublisher(state); await storybookPublisher.copy(); if (state.version.isCurrent) { const indexingPublisher = new IndexingPublisher(state); await indexingPublisher.write(); } } const partIds = settings.partIds ? state.partIds.filter(id => settings.partIds.includes(id)) : state.partIds; this._parts = []; const searchPublisher = new SearchPublisher(state); const iconFilterPublisher = new FilterPublisher(state, 'icon'); const pictogramFilterPublisher = new FilterPublisher(state, 'pictogram'); const colorsFilterPublisher = new FilterPublisher(state, 'colors'); for (const id of partIds) { const partState = state.setPart(id); const part = new PartPublisher(partState); this._parts.push(part); await part.read(); searchPublisher.add(part.collections); } for (const part of this._parts) { await part.write(); } if (!settings.bypass && !settings.partIds) { await searchPublisher.write(); await iconFilterPublisher.write(); await pictogramFilterPublisher.write(); await colorsFilterPublisher.write(); } } } export { DSFRPublisher };