# Malio UI Layer (Nuxt) Layer Nuxt partageable pour centraliser des composants UI et les réutiliser dans plusieurs projets. Le layer est à la racine du repo. Le dossier `.playground/` sert à tester localement les composants du layer. ## Commandes utiles ### Installation ```bash npm install ``` ### Développement local (playground) Préparer les fichiers Nuxt générés du playground (utile pour TypeScript + ESLint) : ```bash npm run dev:prepare ``` Lancer le playground : ```bash npm run dev ``` ### Qualité Lancer le linter : ```bash npm run lint ``` ### Build / preview Build de production du playground : ```bash npm run build ``` Génération statique du playground : ```bash npm run generate ``` Prévisualiser le build : ```bash npm run preview ``` ### Livraison / publication du layer (CI) La publication est automatique via `.gitea/workflows/release.yml` sur push `main` / `master`. Le job CI : 1. Installe les dépendances 2. Lance `npm run dev:prepare` 3. Lance `npm run lint` 4. Lance `semantic-release` (version automatique + publish sur Gitea Packages) Les versions sont calculées via Conventional Commits : - `fix: ...` -> patch (`1.0.0` -> `1.0.1`) - `feat: ...` -> minor (`1.0.0` -> `1.1.0`) - `feat!: ...` ou `BREAKING CHANGE:` -> major (`1.0.0` -> `2.0.0`) Secrets requis dans le repo Gitea : - `NPM_TOKEN` : token avec droits publish package - `RELEASE_TOKEN` : token avec droits write repo (tags/releases) Commande locale utile avant push : ```bash npm pack --dry-run ``` ## Tester un composant dans le playground Le playground étend déjà le layer via `.playground/nuxt.config.ts`. Exemple rapide : 1. Créer un composant dans le layer Fichier `app/components/malio/Badge.vue` ```vue ``` 2. L’utiliser dans le playground Fichier `.playground/pages/index.vue` ```vue ``` 3. Lancer le playground ```bash npm run dev ``` ## Utiliser ce layer dans un autre projet Nuxt ### 1) Configurer le `.npmrc` du projet consommateur Option simple : ```ini @malio:registry=https://gitea.malio.fr/api/packages/MALIO-DEV/npm/ ``` Puis : ```bash export NPM_TOKEN=TON_TOKEN_GITEA ``` ### 2) Installer le package ```bash npm install @malio/layer-ui ``` ### 3) Étendre le layer Dans `nuxt.config.ts` du projet consommateur : ```ts export default defineNuxtConfig({ extends: ['@malio/layer-ui'], }) ```