Add biome + rolldown + lightningcss build pipeline for JS/CSS bundling & minification

- package.json with biome, rolldown, lightningcss devDependencies  
- biome.json: add CSS formatter support
- scripts/build-css.mjs: lightningcss resolves @import chain, bundles/minifies CSS  
- scripts/build-js.mjs: rolldown per-entry JS bundling (no code splitting)
- scripts/build.mjs: orchestrator for both CSS + JS
- scripts/check-build.mjs: staleness checker for CI/deploy guard
- justfile: add build, build-css, build-js, build-install, build-check recipes
- justfile: deploy recipe now runs build before deploy-code
- head.php + form-page.php: use dist/base.min.css instead of style.css
- All controllers + FormBootstrap: reference dist/*.min.{css,js}
- admin footer: load admin.min.js for all admin pages
- repertoire: use public.min.js instead of individual app JS files
- Fix stray '}' syntax error in admin.css line 305
- .gitignore: add app/public/assets/dist/
This commit is contained in:
Pontoporeia
2026-06-24 13:09:44 +02:00
parent e74f9210c5
commit 20fe4b6c8c
29 changed files with 1391 additions and 46 deletions

View File

@@ -302,7 +302,6 @@
font-weight: 500;
white-space: nowrap;
}
}
/* ── Table ──────────────────────────────────────────────────────────────── */
/* Base table/th/td styles live in components/tables.css */

View File

@@ -0,0 +1,28 @@
/**
* Admin JS entry — all JS needed on admin pages.
*
* Import order matters for dependencies:
* - htmx-global-setup must come first (HTMX event listeners)
* - Vendor scripts (htmx, FilePond) are loaded separately via <script> tags
*/
// Core utilities (no deps)
import "./beforeunload-guard.js";
import "./clipboard.js";
import "./smtp-error-focus.js";
// HTMX-powered features (htmx is a global from vendor script)
import "./htmx-global-setup.js";
// Admin features
import "./admin-index-bulk.js";
import "./admin-tags.js";
import "./admin-contenus-langues.js";
import "./admin-contenus-motscles.js";
import "./admin-contacts-form.js";
import "./admin-acces.js";
import "./admin-acces-sharelink.js";
import "./admin-file-access.js";
import "./admin-toc.js";
import "./admin-logs.js";
import "./sidebar-links-editor.js";

View File

@@ -0,0 +1,17 @@
/**
* Form JS entry — form-specific JS for admin form pages (add/edit).
*
* Admin baseline JS (admin.min.js) is loaded separately via the admin footer.
* This bundle only includes form-specific features.
*
* Vendor scripts (htmx, FilePond, OverType) are loaded separately via <script> tags.
*/
// Form-specific features (admin.min.js provides htmx-global-setup, beforeunload-guard, etc.)
import "./file-upload-filepond.js";
import "./pill-search.js";
import "./jury-autocomplete.js";
import "./autosave-handler.js";
import "./form-duration-toggle.js";
import "./form-jury-fields.js";
import "./form-language-asterisk.js";

View File

@@ -0,0 +1,17 @@
/**
* Partage (student share) JS entry — all JS needed on partage form pages.
*
* Vendor scripts (htmx, FilePond) are loaded separately via <script> tags.
*/
// Core utilities
import "./beforeunload-guard.js";
// Form-specific features
import "./file-upload-filepond.js";
import "./pill-search.js";
import "./jury-autocomplete.js";
import "./autosave-handler.js";
import "./form-duration-toggle.js";
import "./form-jury-fields.js";
import "./form-language-asterisk.js";

View File

@@ -0,0 +1,19 @@
/**
* Public JS entry — all JS needed on public-facing pages.
*
* Import order matters.
* Vendor scripts (htmx) are loaded separately via <script> tags.
*/
// Core utilities
import "./beforeunload-guard.js";
import "./clipboard.js";
// HTMX-powered features
import "./htmx-global-setup.js";
// Public page features
import "./repertoire-accordion.js";
import "./repertoire-student-popover.js";
import "./access-request.js";
import "./acces-password.js";