2012-05-21 8 views
9

Ho utilizzato il profilo di build personalizzato di seguito (1.7) per creare la mia cartella di rilascio.Creazione personalizzata di Dojo 1.7 - Come rimuovere i file inutilizzati dalla cartella di rilascio

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); 
    } 
} }; 

Nella mia applicazione web, sto usando solo due componenti, uno è il tasto da pacchetto 'dijit' e un altro è TimeSpinner da 'dojox'. Quindi, ho incluso questi due componenti nel file "dojo/dojo.js", funziona come mi aspettavo.

Ma la cartella stampa contiene delle cartelle dojo ', 'dijit' e 'dojox' con molti file.

maggior parte dei componenti non vengono utilizzati nella mia applicazione web, ma i loro file sono presenti nella cartella di rilascio. Anche se non verranno caricati nel browser (a causa di AMD), non voglio avere tali file nella mia cartella di rilascio.

Non è necessario mantenere un numero così elevato di file nella mia sovversione.

Quindi, le mie domande sono le seguenti:

  1. Come rimuovere i file' .uncompressed.js' dalla cartella di rilascio?
  2. Come rimuovere i file, i CSS, i modelli di componenti inutilizzati dalla cartella di rilascio?

Please help me ...

risposta

2

L'utilità di compilazione dojo non è destinato a separare un sottoinsieme di file e non dispone di configurazione per questo.

Il costruttore rende compressione, si avvolge moduli legacy in dichiarazioni AMD stile e combina strati in modo caricamento del modulo cache.

Ciò significa che una volta che si crea il dojo/dojo, customBase (questa è l'impostazione altamente avanzato btw, attenti con l'uso) Strato - un albero delle dipendenze è costruito. L'albero delle dipendenze è un elenco di file che vengono compressi e suturati insieme in modo simile al seguente;

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

    dojo/dojo here 

}); 

Cosa succede se il tuo visitatore ha una dipendenza di base che hai lasciato fuori?

In ogni modo, l'utilità di generazione più vecchio aveva un dependencyList funzionalità che non è presente al programma di utilità 1.7 build. Questo avrebbe 'salvato' voi :)

Se siete al 100% che l'unico file che è necessario è il vostro layerfile - perché non è sufficiente caricare quel singolo file sul Webhotel?

4

È possibile aggiungere le seguenti righe in fondo 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

Ciò non rispondere alla domanda 2. –

+2

In modo simile ho usato 'find. -name \ *. uncompressed.js -type f -delete' –

+0

Funziona anche per build.bat (windows)? –