Dazu verwende ich grunt-filerev für die Versionierung und grunt-usemin für die automatische Aktualisierung der Referenzen in Quelldateien.
Diese beiden Module arbeitet gut zusammen (usemin Referenzen mit einer Abbildung ersetzt durch filerev zur Verfügung gestellt)
this helps
edit: einige Code-Beispiele (zeigen Sie nur das, was in Ihrem Fall interessant ist) : nur
I usemin & filerev verwenden, wenn meine app Verpackung (für die Bereitstellung):
In der Spitze meiner index.html, die folgender Code tell usemin alle Dateien zwischen dem build
Tag zu nehmen und Agregate es in einen mit dem Namen ie-shims.js
[...]
<!-- build:js /js/ie-shims.js -->
<script src="/vendor/html5shiv/dist/html5shiv.js"></script>
<script src="/vendor/respond/dest/respond.src.js"></script>
<!-- endbuild -->
[...]
nächste in meinem gruntfile.js, ich habe zwei Knoten:
[...]
filerev: {
options: {
encoding: 'utf8',
algorithm: 'md5',
length: 8
},
source: {
files: [{
src: [
'www/js/**/*.js',
'www/assets/**/*.{jpg,jpeg,gif,png,ico}'
]
}]
}
},
useminPrepare: {
html: 'src/index.html',
options: {
dest: 'www'
}
},
// usemin has access to the revved files mapping through grunt.filerev.summary
usemin: {
html: ['www/*.html'],
css: ['www/css/**/*.css'],
js: ['www/js/**/*.js'],
options: {
dirs: ['www'],
assetsDirs: ['www'],
patterns: {
js: [
[/["']([^:"']+\.(?:png|gif|jpe?g))["']/img, 'Image replacement in js files']
]
}
}
} [...]
Schließlich I haben ein Grunzen Aufgabe, die alles, was zusammen:
grunt.registerTask('build', 'Build task, does everything', ['useminPrepare', 'filerev', 'usemin']);
Dann wird das erzeugte HTML wie folgt aus:
[...]
<script src="/js/ie-shims.9f790592.js"></script>
[...]
Vielen Dank für Ihre Antwort. Ich habe die Dokumentation dieser Module gelesen und versucht, sie zu verwenden. Sie funktionieren, aber es scheint, dass ich einen zusätzlichen Zielordner erstellen muss, der nicht OK ist. Ist es möglich, HTML- und JS-Dateien in ihren eigenen Verzeichnissen zu behalten, anstatt sie in ein neues Verzeichnis zu verschieben? Bitte beachten Sie die aktuelle Struktur meines Projekts: http://pastebin.com/qcsaUBHC – Andreas