Chaîne de build Front K-Sup
Ce document présente la chaine de build front de K-Sup.
Historique
Jusqu'à la version 7.0 de K-Sup, le build était géré par WRO et Compass.
Ceux-ci s'occupaient de plusieurs choses :
- transpilation des fichiers scss vers des fichiers css avec Compass1
- interprétation des
messagesspring pour l'i18n présents dans les fichiers javascript- constuction de bundles, appelés
groupcss et js- minification du code
- possibilité d'étendre les fonctionnalités précedentes pour les extensions et projets
Cas d'usage général de la chaîne de build front
@startuml
skinparam actorStyle awesome
rectangle Utilisateur {
:dév:
:inté:
:jenkins:
}
rectangle Résultat {
:Front < 7.0:
:Front > 7.0:
:Back office:
}
usecase build as "Compiler du CSS
==
Compiler du JS
==
Traduire des messages JS
"
:dév: -down-> build
:inté: -down-> build
:jenkins: -down-> build
build --down->> :Front < 7.0:
build -down->> :Front > 7.0:
build -down->> :Back office:
@enduml
Fonctionnement
Le produit et chacune des extensions qui exposent des ressources publient un jar classes qui contient les ressources nécessaires ainsi que le fichier de configurations permettant de regrouper ces ressources en bundle.
Pour construire un projet, un package npm nommé ksup-front-build prend en charge le build des JS et des CSS. Ce package a la responsabilité de récupérer les différentes configurations nécessaires au projet et à ses dépendances.
Une fois récupérées, fusionnées et consolidées, ces configurations servent à la construction des bundles qui sont nécessaires au fonctionnement du front de K-Sup.
Pour le JS : webpack est utilisé
Pour le CSS : postcss et sass (sass-dart) sont utilisés
Ces bundles sont référencés dans les jsp ; soit par les tags jstl <resources:link> et <resources:script>, soit directement avec les tags HTML <script> et <link>.
La résolution en URL vers les fichiers générées est faite par la classe ResourceUtils.
Vue générale
@startuml
skinparam arrow {
FontSize 10
FontName Impact
Color #FF6655
FontColor #444
}
skinparam actor {
FontColor #333
}
skinparam package {
FontSize 14
BackgroundColor #ccc
BorderColor #888
FontName Arial
}
skinparam frame {
BackgroundColor #fff
}
frame "Build Front sans WRO" {
package "ksup" {
rectangle "ksup-jsp"
rectangle "ksup-js"
rectangle "ksup-scss"
rectangle "ksup-conf"
"ksup-conf" -up-> "ksup-js"
"ksup-conf" -up-> "ksup-scss"
note right of "ksup-conf"
Définit des bundles
endnote
}
package "extension#n" {
rectangle "ext-jsp"
rectangle "ext-js"
rectangle "ext-scss"
rectangle "ext-conf"
"ext-conf" -up-> "ext-js"
"ext-conf" -up-> "ext-scss"
note right of "ext-conf"
Étends les bundles produit
En définit de nouveaux
endnote
}
package "projet" {
rectangle "projet-jsp"
rectangle "projet-js"
rectangle "projet-scss"
rectangle "projet-conf"
"projet-conf" -up-> "projet-js"
"projet-conf" -up-> "projet-scss"
note right of "projet-conf"
Étends les bundles produit
En définit de nouveaux
endnote
(npm)
note top of (npm)
La construction du livrable
par maven lance ce build
endnote
}
package "build-front-ksup" {
[script de build] -up-> "ksup-conf": 1
[script de build] -up-> "ext-conf": 2
[script de build] -up-> "projet-conf": 3
}
package "livrable" {
rectangle "bundles css + manifest"
rectangle "bundles js + manifest"
}
"bundles css + manifest" <-up- [script de build]
"bundles js + manifest" <-up- [script de build]
(npm) --> [script de build]: Build
}
@enduml
Développement d'un projet
Le parent-projects en plus des dépendances maven déclare des profiles récupérant les bundles des différents extensions présentes.
Développement des extensions K-Sup
Le kore-dependencies ajoute toutes les ressources css et js au jar classes ainsi que le fichier de défninition des bundles bundle.json.
i18n
La responsabilité de l'internationnalisation est dans les fichiers JS au plus proche de la fonctionnailté.
Une entrée i18n dans la définition des bundles permet de préciser les fichiers qui seront chargés pour chacune des langues définies.