I sistemi di compilazione per le applicazioni Web sono eccezionali: offrono gestione delle dipendenze, minificazione del codice e la possibilità di utilizzare tecnologie come SASS o CoffeeScript che richiedono la pre-elaborazione.
Tuttavia, trovo che usare i sistemi di compilazione sia brutto e noioso ... devi assicurarti che gli sviluppatori abbiano gli strumenti di compilazione installati, che le versioni che hanno installato siano compatibili con le tue configurazioni e che tutte le dipendenze della build strumenti (compilatore SASS, jsmin, ecc.) sono soddisfatti. Ottenere un nuovo sviluppatore integrato richiede ora una suite di strumenti da installare sul proprio sistema locale.
Possiamo combatterlo usando la virtualizzazione: un sistema come Vagrant può consentire la codifica dei sistemi di sviluppo. È disponibile una serie di passaggi per creare un ambiente di sviluppo con tutte le dipendenze o un'immagine macchina già configurata e che può essere semplicemente installata ed eseguita.
Il mio obiettivo è rendere il sistema di generazione non intrusivo. Vorrei che gli sviluppatori non dovessero nemmeno essere a conoscenza del sistema di costruzione per hackerare un progetto. Potrebbe non essere realistico.
Con Vagrant, puoi ottenere questo risultato facendo in modo che un servizio di "sorveglianza" del tuo sistema di build esegua automaticamente e ricostruisca i file ogni volta che cambiano. Va bene, ma che dire di uno sviluppatore del sistema locale che non vuole eseguire Vagrant? Devono ricordarsi di eseguire un processo separato ogni volta che si siedono per sviluppare.
Un approccio che non ho visto è quello di rendere consapevole il sistema di compilazione dell'applicazione. Sembra violare una separazione di preoccupazioni, tuttavia con lo sviluppo del web moderno sembra che siamo già strettamente collegati ai nostri sistemi di build: senza eseguire lo script di build, sarai in grado di eseguire la tua app Web e vedere qualcosa di significativo? Le risorse statiche saranno a posto?
C'è una ragione convincente non per fare in modo che l'applicazione guardi al suo stato di build e si ricompili quando necessario, quando è in modalità sviluppo? Quando si esegue il server di sviluppo, l'applicazione potrebbe essere consapevole del sistema build e creare le sue risorse, se necessario.
Questo non sfugge ai requisiti di dipendenza del sistema di sviluppo. Non ho ancora un'idea concreta di ciò che sto cercando, ma mi sento come se i sistemi di compilazione per le app web non fossero ancora "elaborati". Spero di poter avere un buon brainstorming qui.