javascript - versionskontrol: hvordan man styrer css- og js-komprimerede/minimerede versioner mellem miljøer
Jeg bruger git (via GitHub) til versionskontrol på mine projekter. Jeg er stadig ny til dette, men jeg vil gerne vide bedste praksis for, hvordan jeg holder mine css og js filer synkroniseret mellem miljøer.
Eksempel: Lad os sige, at jeg skriver et js-script på dev. Jeg er tilfreds med mit arbejde og pusher til testing. Nå, på testing ville jeg gerne have en minimeret/komprimeret version. Hvordan ville jeg opnå det uden en masse ekstra opgaver? Hvad gør I? Jeg antager, at det er en del af en eller anden slags deploy-script, som ville komprimere koden og pushe den til det miljø, jeg specificerer.
Dette rejser et andet spørgsmål: Hvad med mine header (og/eller footer) filer i mit projekt? Hvis min dev har:
<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.css">og min testing har:
<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.min.css">Det er alt sammen fint, men hvad hvis jeg har brug for at lave ændringer i min header? Hvordan ville jeg adskille alle disse ting fra hinanden? Hvis jeg laver ændringer i min header og sender til test eller produktion, vil jeg miste .min fra den inkluderingslinje.
Lige nu gør jeg, når jeg implementerer opdateringer, bare et simpelt git pull origin [branch] fra kommandolinjen inde i det miljø, jeg ønsker at opdatere.
Igen, jeg leder efter bedste praksis, uanset hvilken læring det kræver. Tak!
Svar #1
Du vil måske gerne tjekke forbehandlingsværktøjer, såsom LESS eller Sass. Disse værktøjer giver dig mulighed for at skrive CSS (jeg tror, de måske også kan håndtere JS, til formål med minimering), og opsætte scripts, der håndterer, hvordan de kompilerer koden, afhængigt af miljøet.
Det, du så ville gøre, er at skrive din kode i "source"-filer og opsætte preprocessoren til at kompilere koden i henhold til indstillingerne angivet i en indstillingsfil (for Sass kan dette nemt gøres med Compass-rammeværket), baseret på det miljø, du befinder dig i. Du ville derefter kun beholde source-filerne i repositoryet (sæt Git til at ignorere de kompilerede versioner) og opsætte post-receive hooks til at kompilere source-filerne på serveren. Dit HTML kan derefter skrives til at tilgå de kompilerede filer (som bør have samme navn på tværs af miljøer), så du ikke behøver at skrive logik, der bestemmer i farten, hver gang, hvilket miljø koden kører i.
Svar #2
Sæt ikke minificeret version af CSS, JS ind i versionskontrol. Det er en duplikat.
Git kan bruges til udrulning, men dets formål er ikke udrulning.
For inklusion af CSS-tags er det nemt. En hurtig opsummering er at bruge dit frameworks env-variabel. Så vidt jeg ved har CodeIgniter denne funktion. Hvis env == test, inkludér minimeret version, hvis ikke, inkludér rå versioner.
Desuden har du brug for et build-script eller en framework-plugin for automatisk at generere minimerede versioner.