Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DOC] ADR-57 - Migration des fichiers SCSS dans le dossier des composants #10481

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions docs/adr/0057-migration-css-dans-les-composants.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# 57. Migration des fichiers CSS dans le dossier des composants

Date : 2024-11-205

## État

Proposé
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

penser à changer le statut en Validé avant de merger la PR :-)


## Contexte

Le paradigme d’Ember impose de séparer tous les fichiers (controllers, templates, styles) en gardant la même arborescence pour s’y retrouver.

Exemple :
```
|-- app
| |-- components
| | |-- monComposant.hbs
| |-- styles
| | |-- app.scss
| | |-- components
| | |-- monComposant.scss
```

Dans le cas des styles, c'est parfois laborieux de retrouver le fichier correspondant au composant sur lequel on travaille.
suggestion

La colocalisation des fichiers ou l'intégration du CSS dans un même fichier dans la majorité des frameworks permet une DX (developer experience) plus agréable.

Exemple :
```
|-- app
| |-- components
| | |-- monComposant.jsx
| | |-- monComposant.scss
```

L'apparition [des fichiers en .gjs chez Ember](https://rfcs.emberjs.com/id/0779-first-class-component-templates) indique qu'ils veulent s'orienter de plus en plus vers ce paradigme, bien que le CSS ne soit pas encore inclus dans leur fichier.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
L'apparition [des fichiers en .gjs chez Ember](https://rfcs.emberjs.com/id/0779-first-class-component-templates) indique qu'ils veulent s'orienter de plus en plus vers ce paradigme, bien que le CSS ne soit pas encore inclus dans leur fichier.
L'apparition [des fichiers en .gjs chez Ember](https://rfcs.emberjs.com/id/0779-first-class-component-templates) nous laisse penser que les évolutions du framework vont s'orienter de plus en plus vers ce paradigme, bien que le CSS ne soit pas encore inclus dans leur fichier.


## Solution

Mettre les fichiers `.[s]css` de chaque composant dans le dossier des composants.

Pour le moment, tant que la core team Ember n'a pas décidé d'une approche, il sera sûrement plus sécurisé de garder les styles globaux dans le dossier `styles`.

Exemple :
```
// PixAdmin

|-- app
| |-- components
| | |-- certification-centers
| | | |-- information.gjs
| | | |-- information.scss
| | | |-- membership-item.gjs
| | | |-- membership-item.scss
```

### Mise en oeuvre

Le build du CSS se fait dans le fichier `ember-cli-build.js`, à la racine du projet : [https://cli.emberjs.com/release/advanced-use/stylesheets/](Stylesheet compilation - Advanced use - Ember CLI Guides)

La compilation se fait avec le package : [https://www.npmjs.com/package/ember-cli-sass](ember-cli-sass)
Ce package nous permet de gérer les paths à inclure pour compiler les fichiers `scss`.

Pour mettre les fichiers de style avec les composants, il suffit d'ajouter le path vers les composants dans `ember-cli-build.js`.

```javascript
const app = new EmberApp(defaults, {
sassOptions: {
includePaths: ['node_modules/@1024pix/pix-ui/addon/styles', 'node_modules/flatpickr/dist', 'app/components'],
}
})
```

Rien d'autre.

Exemple avec la PR suivante : [https://github.com/1024pix/pix/pull/9992]([TECH] : bouger le fichier nav.scss du dossier globals vers le dossier composants)

### Avantages
- Très simple à mettre en place
- Pour un composant donné, les styles sont plus faciles à retrouver et à maintenir

### Inconvénients
- On est hors du paradigme d’Ember, risque de problèmes futurs inattendus
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça n'a pas encore l'air sec sec mais ils évoquent d'autres approches (<style> blocks for scoped CSS) et questionnement notamment le lien avec le reste de l'écosystème : CSS Modules, Emotion, Styled Components, vanilla-extract...

La RFC est en statut "Ready For Release" alors j'imagine qu'il faut rester attentif sur les prochaines communications.

- Les styles globaux restent dans le dossier "styles", pour éviter d'éventuels effets de bord au build (pour le moment, tout est OK)

Loading