Ich schrieb das Snippet unten als Teil von grunt-aws-s3
Aufgabe. globbing - Korrekter Weg, um einige Dateierweiterungen, aber nicht andere zu vergleichen
var weekCache = 'css|js';
var yearCache = 'jpg|jpeg|png|gif|ico|eot|otf|ttf|woff|woff2';
var prodFiles = [
{expand: true, cwd: 'public', src: ['**/*.!('+weekCache+'|'+yearCache+')'], dest: '/'},
{expand: true, cwd: 'public', src: ['**/*[email protected]('+weekCache+')'], dest: '/', stream: true, params: {CacheControl: 'max-age=604800, public'}}, // enable stream to allow large files
{expand: true, cwd: 'public', src: ['**/*[email protected]('+yearCache+')'], dest: '/', stream: true, params: {CacheControl: 'max-age=31536000, public'}},
];
Die Idee ist, drei verschiedene Spiele innerhalb prodFiles
Variable zu haben:
- Spiels alle Dateien mit Ausnahme der angepassten diejenigen von
yearCache
undweekCache
- Spiel aller Dateien mit in
weekCache
durch Erweiterungen - Passen Sie alle Dateien mit Erweiterungen an, die in
yearCache
Es funktioniert mehr oder weniger, ich habe 63 Dateien innerhalb public
Verzeichnis und seine Unterverzeichnisse. Wenn diese Regeln jedoch 72 Dateien entsprechen, ist es klar, dass einige Dateien mindestens zweimal übereinstimmen.
Was ist los mit meinem Globbing?
EDIT:
Testing mit node-glob-all
dass Fehler gezeigt in dem ersten Muster ist:
$ glob-all '**/*.!(css|js)'
assets/css/style-nuvue6sithwirecbhvw3dkaobiojqvtadsnhguwi7k04xklybw5djl1smadp.min.css
assets/images/favicon.ico
assets/js/jquery.fancybox.js
assets/js/jquery.fancybox-thumbs.js
Ich hatte erwartet, dieses Muster alles zurückzukehren, aber *.js
und *.css
auszuschließen. Beim Testen der anderen beiden Regeln wurden die korrekten Dateien zurückgegeben.
$ glob-all '**/*[email protected](css|js)'
assets/css/style-nuvue6sithwirecbhvw3dkaobiojqvtadsnhguwi7k04xklybw5djl1smadp.min.css
assets/js/jquery.fancybox.js
assets/js/jquery.fancybox-thumbs.js
Also, die Frage ist, wie man richtig '**/*.!(css|js)'
das Muster negieren?
Hervorragende Erklärung. Vielen Dank. – JrBenito
Ich denke, das Globbing, das Sie vorgeschlagen haben, fängt keine Dateien ohne Punkt (e), habe ich Recht? – JrBenito
Das ist richtig. – 76484