2012-12-19 12 views
8

wir haben ein Problem bei der Arbeit, verwenden wir benötigen js aber unsere Ordnerstruktur ist ein bisschen anders, haben wir folgendes:RequireJs minifcation - komplexe Verzeichnisstruktur

--js folder 
    --Folder 
     ---some base js files 
    -Folder 
     ---main 
      --src 
       ---require.js 
       --- require JS modules 
     --plugin js files 
     --more js files 

Wir möchten, dass alle diese minify JS-Dateien in eine SINGLe-JS-Datei für die Produktion als solche

Ist das möglich? wenn ja wie? .. Jede Hilfe wäre willkommen!

Danke!

Ich dachte nur, ich würde klarstellen, dass die anderen Ordner standardmäßige nicht modulare Javascript-Dateien enthalten, sie können eine Mischung aus Plugins oder einfachen Javascript-Helfern sein.

Antwort

6

Die kurze Antwort ist: Ja, RequireJS kann dies tun.

Grundsätzlich müssen Sie eine JS-Datei erstellen, die alle Ressourcen erfordert, die Sie minimieren möchten. Dann werden Sie den Optimierer auf diese Datei zeigen und sie alle zusammen mischen.

require(["one", "../another/two", "folder/three", "folder/inner/four" ... ]); 

Wenn diese Datei myfile.js genannt wurde, würden Sie den Optimierer mit ähnlichen Parametern zu diesem Lauf:

node r.js -o name=myfile out=optimized.js 

Wenn Sie Bibliotheken oder andere Dateien, die Sie in die endgültige optimierte Datei nicht enthalten sein sollen würden Sie das Flag excludeShallow verwenden. z.B.

node r.js -o name=myfile out=optimized.js excludeShallow=jquery.min 

Es gibt mehr Möglichkeiten, so dass Sie ihre optimization documentation überprüfen sollten, wenn Sie noch nicht haben.

+0

Also würde myfile.js alle Includes machen, müsste es auch die Dateien enthalten, die nicht unter src/.. liegen? wie die externen Bibliotheken, Plugins, etc? – Nima

+1

IIRC der Optimierer durchläuft die Abhängigkeitskette, also sollte ein "Bootstrapper" wie hier vorgeschlagen alles einbringen. – Aren

+0

danke für die schnelle Antwort, in anderen workds würde die Datei, die unter Data-Hauptattribut ist myfile.js werden? – Nima