Mit grunt können Sie viele Dateien aus vielen Verzeichnissen in eine einzelne umbenannte Datei in einem neuen Verzeichnis zusammenfassen

Ich habe ein Angular-Projekt mit möglicherweise vielen Modulen. Jedes Modul hat ein eigenes Verzeichnis mit Unterverzeichnissen für Controller, Direktiven, Dienste usw.

src
|-- js
    |-- modules
        |-- moduleOne
            | module.js
            |-- controllers
                | listController.js
                | detailController.js
            |-- directives
                | listItem.js
                | summaryWidget.js
            |-- filters
            |-- services
                | moduleService.js

Mein Build bündelt und kompiliert im Wesentlichen Dateien aus src / und steckt sie in dev /, minimiert dann die Dateien in dev / und verschiebt sie in prod /. Während dev zeigt der Server auf den dev / -Ordner und in der Produktion zeigt der Server auf den prod / -Ordner (auch, warum die Dateien auf .min.js enden, obwohl sie nur kompiliert / konzentriert sind). Dieser Prozess funktioniert gut.

Derzeit greift meine concat-Aufgabe alle Dateien in moduleOne / und erstellt eine einzelne moduleOne.js-Datei in meinem dev-Verzeichnis. Dies ist, was ich passieren möchte, aber dynamischer:

concat: {
    modules: {
        files: {
            "dev/js/modules/moduleOne.min.js": [
                "src/js/modules/moduleOne/*.js",
                "src/js/modules/moduleOne/**/*.js"
            ],
            "dev/js/modules/moduleTwo.min.js": [
                "src/js/modules/moduleTwo/*.js",
                "src/js/modules/moduleTwo/**/*.js"
            ]
        } 
    }
}

Das Problem ist, dass ich dies für jedes Modul tun muss, aber glaube nicht, dass ich das tun müsste.

Ich habe Folgendes versucht, weil es so ist, wie ich es tun möchte:

concat: {
    modules: {
        files: [{
            expand: true,
            cwd: "src/js/modules",
            src: "**/*.js",
            dest: "dev/js/modules",
            ext: ".min.js"
        }]
    }
}

Aber das Ergebnis war, dass alle meine Dateien und Verzeichnisstrukturen von src / nach dev / verschoben wurden. Grundsätzlich habe ich concat benutzt, um eine Kopie zu machen, nicht hilfreich.

Ich würde gerne so etwas machen:

concat: {
    modules: {
        files: [{
            expand: true,
            cwd: "src/js/modules",
            src: "**/*.js",
            dest: "dev/js/modules/<foldername>.min.js",  <- how do I achieve this?
        }]
    }
}

Ich habe viel gelesen, aber es sieht so aus, als ob ich nur annähernd die Antwort finde und Probleme habe, die Konzepte zusammenzustellen. Vieles, was ich finde, sind nur einzelne Dateien in einem neuen Verzeichnis, die umbenannt werden. Ich möchte, dass mehrere Dateien zu einer Datei in einem neuen Verzeichnis umbenannt werden. Denn so rolle ich :)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage