2015-07-04 9 views
6

Ho un mucchio di file css diversi generati nella cartella css/ con l'aiuto di libsass. Inoltre ho normalize.css già inserito nella cartella css/ per consentire la normalizzazione di css in tutti i browser. Sto utilizzando NPM come strumento di compilazione, e la mia package.json consiste qualcosa di simile:Concatena/Unisci file css nell'ordine

{ 
..... 
"scripts": { 
    "test": "npm run lint", 
    "lint": "csslint css/*.css", 
    "build": "node-sass sass/ -o css/", 
    "postbuild": "cat css/*.css | cleancss -o css/main.min.css" 
    }, 
..... 
} 


Al passaggio di generazione sto generando css file e in fase post-generazione sto concatenare tutti i file CSS in un file css minificato.

Tuttavia, durante la fase di post-costruzione, il contenuto del file normalize.css deve precedere qualsiasi altro contenuto del file css, tuttavia il comportamento è incoerente. Ho bisogno di fare in modo che la normalizzazione arrivi prima di tutti gli altri file CSS, qualsiasi suggerimento sarebbe utile.


TLDR-concatenazione del mazzo di file CSS risultati in normalize.css essere aggiunto in mezzo o l'ultima. Ne ho bisogno all'inizio del file css concatenato.

Grazie.

risposta

6

è sufficiente utilizzare il -I option di ls di escludere normalize.css da essere elencati:

cd css/ && cat normalize.css `ls -I normalize.css -I main.min.css` | cleancss -o main.min.css 
+2

fa 'cat' mostra i file in ordine alfabetico dei loro nomi di file? –

+2

@AbhinavGauniyal No, 'cat' usa l'ordine dei suoi argomenti, quindi qui,' normalize.css' prima, e poi l'ordine da 'ls', che di default è in ordine alfabetico. (Vedi http://stackoverflow.com/questions/878249/unixs-ls-sort-by-name). Se tuttavia notate che non è il caso, usate semplicemente 'ls -I normalize.css * .css | sort' – Jerska

+2

okay ... 'ls -I normalize.css * .css' anche nel terminale fornisce tutti i file css incluso' normalize.css', quindi sconfigge l'intero scopo. Puoi esaminarlo per favore. –