set shell := ["fish", "-c"] set unstable := true cacheFolder := ".cache" eslintCacheFile := "eslintcache" prettierCacheFile := "prettiercache" stylelintCacheFile := "stylelintcache" # Recette par défaut. default: dev # Liste toutes les recettes list: @just --list --list-heading 'Recettes disponibles :'\n'' --unsorted # Met à jour les dépendances composer et npm. [group('js')] [group('php')] update: composer update bun update # Formatte avec Prettier et dprint. [group('qualité')] format: @echo "Formatage de l'ensemble du code avec Prettier et dprint." bunx prettier \ --cache \ --cache-location "{{ cacheFolder }}/{{ prettierCacheFile }}" \ --ignore-unknown \ --write \ . dprint fmt # Compile, minifie et optimise Sass vers CSS. [group('css')] build-css: @bunx sass \ --update \ "web/app/themes/haiku-atelier-2024/src/sass":"web/app/themes/haiku-atelier-2024/assets/css" @bunx lightningcss \ --bundle \ --minify \ --output-file "web/app/themes/haiku-atelier-2024/assets/css/main.min.css" \ -- "web/app/themes/haiku-atelier-2024/assets/css/main.css" @bunx lightningcss \ --bundle \ --minify \ --output-file "web/app/themes/haiku-atelier-2024/assets/css/pages/page-panier.min.css" \ -- "web/app/themes/haiku-atelier-2024/assets/css/pages/page-panier.css" @bunx lightningcss \ --bundle \ --minify \ --output-file "web/app/themes/haiku-atelier-2024/assets/css/pages/page-accueil.min.css" \ -- "web/app/themes/haiku-atelier-2024/assets/css/pages/page-accueil.css" @bunx lightningcss \ --bundle \ --minify \ --output-file "web/app/themes/haiku-atelier-2024/assets/css/pages/page-boutique.min.css" \ -- "web/app/themes/haiku-atelier-2024/assets/css/pages/page-boutique.css" @bunx lightningcss \ --bundle \ --minify \ --output-file "web/app/themes/haiku-atelier-2024/assets/css/pages/page-a-propos.min.css" \ -- "web/app/themes/haiku-atelier-2024/assets/css/pages/page-a-propos.css" @bunx lightningcss \ --bundle \ --minify \ --output-file "web/app/themes/haiku-atelier-2024/assets/css/pages/page-modele-simple.min.css" \ -- "web/app/themes/haiku-atelier-2024/assets/css/pages/page-modele-simple.css" @bunx lightningcss \ --bundle \ --minify \ --output-file "web/app/themes/haiku-atelier-2024/assets/css/pages/page-succes-commande.min.css" \ -- "web/app/themes/haiku-atelier-2024/assets/css/pages/page-succes-commande.css" # Compile le CSS à chaque changement de fichier. [group('css')] watch-css: @just dev @watchexec -w "web/app/themes/haiku-atelier-2024/src/sass" -- just build-css reload-tab # Compile TypeScript en JavaScript. [group('js')] build-js: @bunx vite build # Compile tout. [group('css')] [group('js')] build-all: @just build-css @just build-js @just format # Compile TypeScript à chaque changement de fichier. [group('js')] watch-js: bunx vite build --watch # Vérifie le code TypeScript avec des analyseurs statiques. [group('js')] [group('qualité')] lint-js: -bunx eslint "web/app/themes/haiku-atelier-2024/src/scripts" -bunx biome check --reporter=summary "web/app/themes/haiku-atelier-2024/src/scripts" -bunx oxlint "web/app/themes/haiku-atelier-2024/src/scripts" # Vérifie le code Sass avec Stylelint. [group('css')] [group('qualité')] lint-css: -bunx stylelint "web/app/themes/haiku-atelier-2024/src/sass/" --fix # Vérifie le code TypeScript mort avec knip [group('js')] [group('qualité')] lint-code-mort: -bunx knip # Fusionne tous les changements actuels dans le commit précédent et pousse sur le répertoire distant avec Jujetsu. [group('vcs')] squash-and-push: -jj squash --ignore-immutable && jj bookmark set principale -r @- --allow-backwards && jj git push # Analyse statiquement, compile et formate le CSS [group('css')] [group('qualité')] lint-build-format-css: -just lint-css -just build-css -just format # Lance un navigateur de développement. [group('développement')] dev: @/opt/cromite/chrome --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 --profile-directory=Guest "https://haikuatelier.gcch.local" & # Recharge le premier onglet du navigateur de développement. [group('développement')] reload-tab: #!/usr/bin/fish set -f WSURL (curl -s http://127.1:9222/json | fx '.[0].webSocketDebuggerUrl') set -f REQUEST '{ "id": 2, "method": "Page.reload", "params": { "ignoreCache": true, "scriptToEvaluateOnLoad": "" } }' echo $REQUEST | websocat $WSURL