Für eine einzelne Seite app kopieren, die ich arbeite, habe ich die folgende Struktur:Wie kompiliert Jade-Dateien in einen Zielordner mit Grunzen
- dist
- css
- js
- lib
- partials
- index.html
- src
- css
- js
- lib
- Ansichten
- partials
- index.jade
Das Verzeichnis dist wird vom Express-Server verwendet, um das Projekt zu bedienen. Ich habe trivial Grunzen Aufgaben (mit Grunzen-contrib-clean, Grunzen-contrib-Kopie) für die Reinigung dist und Kopieren src/css, src/js, src/lib zu dist. Das Problem liegt bei src/Ansichten. Dieses Verzeichnis enthält Jade-Dateien, die in HTML-Dateien kompiliert werden müssen. Nach der Kompilierung möchte ich sie in dist (index.html in der Dist-Wurzel, Partials als Unterverzeichnis).
Im Moment verwende ich die grunt-contrib-jade Aufgabe, um die Jade-Dateien zu kompilieren und zu kopieren. Ich möchte sie in dist kopieren, da ich die kompilierten HTML-Dateien nicht zur Quellcodeverwaltung hinzufügen möchte. Aber jetzt ist dies nicht wirklich praktikabel, da Sie jede Jade-Datei angeben müssen (jetzt gibt es nur wenige, aber das wird wachsen):
jade: {
compile: {
options: {
pretty: true
},
files: {
// TODO make one line
'dist/index.html': ['src/views/index.jade'],
'dist/partials/banner.html': ['src/views/partials/banner.jade'],
'dist/partials/dashboard.html': ['src/views/partials/dashboard.jade'],
'dist/partials/navbar.html': ['src/views/partials/navbar.jade'],
'dist/partials/transfer.html': ['src/views/partials/transfer.jade']
}
}
},
Gibt es eine Möglichkeit, die Grunzen-contrib-Jade zu verwenden Aufgabe (oder eine andere) mit einem Verzeichnisfilter? So:
jade: {
compile: {
options: {
pretty: true
},
dir: {
'dist': ['src/views']
}
}
}
Haben Sie das "Files Array Format" [hier beschrieben] (https://github.com/gruntjs/grunt/wiki/Configuring-tasks) ausprobiert? Im Beispiel (mit der concat-Task) wird die Eigenschaft "dest" auf ein Verzeichnis gesetzt: 'files: [{src: ['src/bb.js', 'src/bbb.js'], dest: 'dest/b/'}] '. Es ist wahrscheinlich, dass die 'jade-contrib'-Aufgabe auch dieses Format unterstützt. – smithclay
Hat nicht funktioniert. Es kopiert alle Dateien in eine Datei mit dem Namen '* .html' :) Versuchte Dateien: grunt.file.expandMapping (['**/*. Jade'], 'dist', {cwd: 'src/views'}) 'beschrieben auf der gleichen Seite, aber ich bekomme expandMapping ist nicht definiert. – asgoth