2012-05-21 6 views
9

Ich habe das unten (1.7) benutzerdefinierte Build-Profil verwendet, um meine Release-Ordner zu erstellen.Dojo 1.7 benutzerdefinierte Build - So entfernen Sie nicht verwendete Dateien aus dem Freigabeordner

var profile = { 
basePath: "..", 
action: "release", 
cssOptimize: "comments", 
mini: true, 
optimize: "closure", 
layerOptimize: "closure", 
stripConsole: "all", 
selectorEngine: "acme", 
packages:[ 
    { 
     name: "dojo", 
     location: "./../../dojo" 
    }, 

    { 
     name: "dijit", 
     location: "./../../dijit" 
    }, 

    { 
     name: "dojox", 
     location: "./../../dojox" 
    } 
], 

layers: { 
    "dojo/dojo": { 
     include: [ 
          "dojo/dojo", 
          "dijit/form/Button", 
          "dojox/form/TimeSpinner" 
        ], 
     customBase: true, 
     boot: true 
    } 
}, 

resourceTags: { 
    amd: function (filename, mid) { 
     return /\.js$/.test(filename); 
    } 
} }; 

In meiner Web-Anwendung, ich bin nur zwei Komponenten, ist ein Knopf von ‚dijit‘ -Paket und ein anderer ist TimeSpinner von ‚Dojox‘. Also habe ich diese beiden Komponenten in die Datei "dojo/dojo.js" aufgenommen, sie funktioniert so, wie ich es erwartet habe.

Aber der Freigabeordner enthält die Ordner "Dojo", "Dijit" und "Dojox" mit vielen Dateien.

Die meisten Komponenten werden nicht in meiner Webanwendung verwendet, aber ihre Dateien sind im Freigabeordner vorhanden. Obwohl sie nicht in den Browser geladen werden (wegen AMD), möchte ich solche Dateien nicht in meinem Freigabeordner haben.

Es ist unnötig, so viele Dateien in meiner Subversion zu verwalten.

So sind meine Fragen unter:

  1. Wie ‚.uncompressed.js' Dateien aus den Release-Ordnern entfernen?
  2. Wie die Dateien, CSS, Vorlagen von nicht verwendeten Komponenten aus dem Freigabeordner entfernen?

Bitte helfen Sie mir ...

Antwort

2

Das Dojo Build-Dienstprogramm ist nicht eine Teilmenge von Dateien trennen soll und keine Konfiguration für diese.

Der Builder macht Komprimierung, Wrappt Legacy-Module in AMD-formatierte Deklarationen und es kombiniert Ebenen in einem zwischengespeicherten Modul laden Mode.

Dies bedeutet, dass, sobald Sie das Dojo/Dojo, benutzerdefinierte Ebene (das ist sehr fortschrittliche Einstellung btw, vorsichtig mit der Verwendung) Schicht - eine Abhängigkeitsstruktur erstellt. Der Abhängigkeitsbaum ist eine Liste von Dateien, die jeweils ähnlich wie folgt komprimiert und vernäht werden;

// file: dojo/dojo.js 
declare(
    {cache: 
    { 
     "moduleDep_1": dojo.cache("moduleDep_1", {}), 
     "moduleDep_2": dojo.cache("modu...", ..) 
    }, "dojo/dojo", null, { 

    dojo/dojo here 

}); 

Was ist, wenn Ihr Besucher eine Base-Abhängigkeit hat, die Sie ausgelassen haben?

Wie auch immer, das ältere Build-Dienstprogramm verfügte über eine Funktionalitätsabhängigkeitsliste, die beim 1.7 Build-Dienstprogramm nicht vorhanden ist. Dies hätte Sie "gerettet" :)

Wenn Sie 100% sicher sind, dass die einzige Datei, die benötigt wird, Ihre Layerdatei ist - warum nicht einfach diese einzelne Datei in Ihr Webhotel hochladen?

4

Sie können die folgenden Zeilen an der Unterseite des build.sh

find . -type f -name '*.uncompressed.js' -print0 | xargs -0 rm -rdf 

find . -type f -name '*.consoleStripped.js' -print0 | xargs -0 rm -rdf 
+0

hinzufügen Diese antwortet nicht Frage 2. –

+2

In ähnlicher Weise I 'finden verwendet. -name \ *. uncompressed.js -type f -delete –

+0

Funktioniert es auch für build.bat (windows)? –

Verwandte Themen