Frage

Ich habe keine gute Möglichkeit gefunden, mehrere Skriptdateien, die über mehrere Ordner verteilt sind, grunzend und hässlich zu machen und dabei die Ordnerstruktur einschließlich der hässlichen Dateien intakt zu halten.Der einzige Grund, warum ich dies tun möchte, besteht darin, die Leistung des „alten“ Teils der Webseite, an der ich arbeite, steigern zu können.

Ich habe einen Weg gefunden, dies zu umgehen, was ich nicht tun möchte, da es zu viel Zeit in Anspruch nehmen wird, und zwar wie in dieser Antwort (sie geben jedes src- und dest-Paar separat an):So konfigurieren Sie grunt.js, um Dateien separat zu minimieren

Ein Beispiel dafür, was ich erreichen möchte:

**src dir (no uglify applied):**
src
 |- app1
    |- randomFile.js
    |- scripts
       |- file1.js
       |- file2.js
    |- libs
       |- file3.js
       |- file4.js
 |- app2
   |- scripts
       |- file1.js
       |- file2.js

**destination dir (uglify applied, same file name):**
dist
 |- app1
    |- randomFile.js
    |- scripts
       |- file1.js
       |- file2.js
    |- libs
       |- file3.js
       |- file4.js
 |- app2
    |- scripts
       |- file1.js
       |- file2.js

Übrigens möchte ich, wenn möglich, dasselbe für CSS-Dateien tun.

Weiß jemand, ob das möglich ist?

War es hilfreich?

Lösung

Das Prinzip in Rafa Heringer's Antwort auf den Beitrag, den Sie verlinkt haben sieht vielversprechend aus, mit einer kleinen Wendung:

uglify: {
    min: {
        files: grunt.file.expandMapping(['path/**/*.js', 'path2/**/*.js'], 'destination/', {
            rename: function(destBase, destPath) {
                return destBase+destPath.replace('.js', '.min.js');
            }
        })
    }
}

Der einzige Unterschied besteht hier im doppelten Sternchen zwischen dem Basispfad und dem Wildcard-Dateinamen mit seiner Erweiterung.Dadurch werden alle Unterordner durchsucht und – hoffentlich – jeder Fund ausgegeben, den er in seinem richtigen Ordner findet.

Die Ausgabe wäre:

path/test.js => destination/path/test.min.js
path/subpath1/abc.js => destination/path/subpath1/abc.min.js
path/subpath2/yey.js => destination/path/subpath2/yey.min.js
path2/foo.js => destination/path2/foo.min.js

Wenn es darum geht, dasselbe zu tun CSS (Verwendung der grunt-contrib-cssmin Plugin), der oben erwähnte Ansatz würde immer noch funktionieren, aber Sie müssten ihn mit den relevanten Plugin-Konfigurationen kombinieren, die vorhanden sein müssen, um eine minimierte Ausgabe zu erhalten CSS der Weg, den du willst.

PS: Ich habe es selbst noch nicht ausprobiert!

Andere Tipps

Ähnlich wie der Antwort von @dionnis, sondern speichert Minified-Dateien im gleichen Ordner :

generasacodicetagpre.

eigentlich können Sie den folgenden Ansatz verwenden:

generasacodicetagpre.

Die Antwort von Wallace ist großartig, wenn die Dateien, die Sie versuchen, zu minififizieren, nicht vorhanden sind, bevor Grunts beginnt (dh wenn Sie sich je nach einer anderen Task handelt wird ausgeführt.

Ich kam mit einer Lösung für die Erzeugung erzeugter Dateien einzeln, wobei das Knotenpaket Uglify-JS anstelle von grunt-Contry-Ugify verwendet.

    .
  • Hinzufügen von Ugly-JS an Ihr Paket.JSON
  • Fügen Sie Ihrem Grunfile eines der folgenden Beispiele hinzu (ersetzen Sie einfach "Ihre Dateien hier" durch die entsprechenden Glob (en), wenn Sie Beispiel 1 verwenden).
  • Wenn Sie das dekatifizierte Dateiziel oder die Erweiterung ändern müssen, verwenden Sie stattdessen Beispiel 2. Es verwendet grunze.file.recurse mit einem Rückruf, der Ihnen das Stammverzeichnis, das Unterverzeichnis und den Dateinamen jeder Datei liefert (es ist einfacher, einen benutzerdefinierten Zielpfad zu erstellen). Ersetzen Sie "Ordner" durch das Verzeichnis, das Sie scannen möchten, und erstellen Sie hier Ihren eigenen "Benutzerdefinierte Pfad".

Beispiel 1: mit grunt.file.expand

generasacodicetagpre.

Beispiel 2: mit grunt.file.recurse

generasacodicetagpre.

Diese Lösung funktioniert nicht für mich.

Dies ist ein Arbeitsbeispiel:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top