2013-01-15 13 views
5

Sto usando, fino a questo punto, MS Ajax Minifier per lo schiacciamento e la combinazione dei miei CSS e JS. I miei server hanno un futuro molto lungo che scade le intestazioni quindi ho bisogno di una strategia di scadenza della cache. Attualmente sto facendo il versioning manuale di questi elementi modificando il nome del file in modo che scadano su ogni versione.MSBuild minify & concat javascript, contenuto hash nel nome file

Mi piacerebbe automatizzare questo in qualche modo, in particolare aggiungendo l'hash del contenuto del file sul nome del file schiacciato. I punti di bonus se si possono quindi aggiornare alcuni XML di configurazione (che esiste in un progetto diverso) file con questo nome di file aggiornato

Stiamo utilizzando TFS costruire assistente, quindi credo che questo dovrebbe essere avvolto in un compito MSBuild? Oppure posso farlo funzionare come una fase di pre/post build?

Apprezzeremmo molto se qualcuno avesse qualche conoscenza in questo settore che fosse felice di condividere.

Grazie

+0

Potresti per favore darmi un feedback sulla mia risposta? Sono nuovo qui e sto cercando di migliorare me stesso. Grazie! –

+0

Si potrebbe provare https://github.com/vincpa/RxLoader –

risposta

3

Sicuramente si poteva fare tutto da MSBuild:

  • Crea il tuo Ajax Minifier Manifest Files. Vorrei mantenere questi statici e versioni.
  • crearne uno msbuild script contenente:

    1-Ajax Minifier Manifest Task da fare lo schiacciamento e la combinazione.

    attività 2 - Hashing. Come puoi vedere è il codice C#. Modificare il codice per leggere la cartella di output impostata sul passaggio '1' e modificare il nome dei file, aggiungendo l'hash calcolato a ciascuno.

  • Import lo script msbuild creato nei progetti o nello script di build principale, se ne hai uno.

+0

Ci scusiamo per il ritardo nel commento. La tua risposta va bene per quanto riguarda le risposte, non ho avuto il tempo di esaminare tutti i tuoi punti e scuse.Lo farò questa settimana – WickyNilliams

2

avete considerato la funzione di accorpamento e minification in System.Web.Optimization?

http://blogs.msdn.com/b/rickandy/archive/2012/08/14/adding-bundling-and-minification-to-web-forms.aspx

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

Si dovrebbe fare tutto il necessario senza il fastidio msbuild manutenzione.

Non tocca i file originali e altera l'hash del pacchetto per generazione. Inoltre, può essere disattivato a livello di programmazione sul sito live per consentire il debug di css e js sui siti live con tutti i nomi di file e commenti originali mantenuti.

Lo usiamo molto con successo e incoraggio i programmatori UI a dividere file css e javascript in file più piccoli e logicamente denominati e lasciare piuttosto che piccoli commenti in essi per la documentazione. Alla fine l'utente otterrà sempre un singolo css e js con un nome diverso per build.

+1

Sfortunatamente questo non è adatto ai miei scopi in quanto i miei script e CSS sono memorizzati su una CDN, e preferisco questo genere di cose in fase di costruzione piuttosto che in fase di esecuzione. A parte: io uso sourcemaps per eseguire il debug del CSS di produzione/JS, ti permette di eseguire il debug degli script minified/concat'd come se fossero non terminati/unconcat'd! Se non li incontri, dai un'occhiata, molto bene – WickyNilliams