8

sto aggiungendo il seguente ScriptBundle in BundleConfig:sceneggiatura minified solo in MVC4 BundleConfig

bundles.Add(new ScriptBundle("~/bundles/javascript").Include(
     "~/Scripts/jquery-1.*", 
     "~/Scripts/load-image.min.js", 
     "~/Scripts/bootstrap.*", 
     "~/Scripts/bootstrap-image-gallery.*", 
     "~/Scripts/my.global.js")); 

Questo viene fatto riferimento alla fine della mia _Layout.cshtml come:

@Scripts.Render("~/bundles/javascript") 

Quando il debug mi accorgo che l'output di questo rendering di script è:

<script src="/Scripts/jquery-1.8.2.js"></script> 
<script src="/Scripts/bootstrap.js"></script> 
<script src="/Scripts/bootstrap-image-gallery.js"></script> 
<script src="/Scripts/my.global.js"></script> 

Si noti che lo script load-image.min.js è missi ng? Quello che voglio è usare lo stesso script miniato sia che io stia eseguendo il debug o meno. Nelle condizioni di rilascio lo script è incluso nel file JS in bundle.

Suppongo che stia vedendo il 'min', cercando una versione non minificata, non trovandola, quindi decidendo che cosa è meglio ignorarla del tutto. Brillante. Se faccio una copia di load-image.min.js, chiamalo load-image.js e poi lo riferimento in BundleConfig come "load-image. *" Trovo che sia incluso in entrambe le configurazioni ma che senso ha dover Fai quello?

Presumo che mi manchi qualcosa qui. Non ho la versione non minificata e francamente non mi interessa. È usato dal mio plugin per la galleria di immagini Bootstrap e nient'altro. Qualche idea là fuori?

+0

+1 per 'quindi decidere cosa è meglio ignorarlo completamente. Brillante. Succede spesso :) – ppumkin

risposta

4

Questo comportamento è stato migliorato (fisso) in 1.1.0-alpha1 pubblicazione. Abbiamo spostato tutte le vecchie voci dell'elenco di ignoranze predefinite in un nuovo elenco Ignora DirectoryFilter che vengono utilizzate solo quando si includono modelli di ricerca come * .js, che era l'intento originale di questa funzionalità. Di conseguenza questo non dovrebbe più essere un problema quando si includono esplicitamente singoli file.

Nota: l'unico problema potrebbe essere se si tenta di includere qualcosa come jquery- {versione} .min.js.

+0

Potete per favore elaborare? Come possiamo superare questo? A quale versione del software si riferisce (1.1.0-alpha1)? Puoi per favore mostrare un esempio su come si può includere esplicitamente un file (es. 'Test.min.js') quando manca il non-minificato. – Odys

5

C'è ignoreList, che è possibile cancellare se ne avete bisogno, sembra che:

public static void AddDefaultIgnorePatterns(IgnoreList ignoreList) 
{ 
    if (ignoreList != null) 
    { 
     ignoreList.Ignore("*.intellisense.js"); 
     ignoreList.Ignore("*-vsdoc.js"); 
     ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled); 
     ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled); 
     ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled); 
     return; 
    } 
    else 
    { 
     throw new ArgumentNullException("ignoreList"); 
    } 
} 

Maggiori dettagli: Advanced Options of ASP.NET Bundling and Minification

+0

Grazie @webdeveloper - una rapida occhiata a ciò indica che per ottenere ciò che voglio, dovrei cancellare completamente questa lista di ignora e ri-popolare con nomi di file espliciti. Ovviamente mi piacerebbe mantenere la possibilità di ignorare i file minificati in fase di sviluppo, ma con questa eccezione esplicita. Sai se è possibile? – getsetcode

+0

@tomtroughton Questo elenco funziona in base alla maschera, non è necessario digitare nomi di file espliciti. Inoltre puoi usare '#ifdef DEBUG' per scrivere qualche logica solo per il debug. – webdeveloper

+0

potresti impostare 'BundleTable.EnableOptimizations = true;' per abilitare il minification in modalità debug, quindi non ignorerebbe i file .min, ma immagino che questo non sia esattamente, cosa intendi fare, perché l'intero bundle sarà minimizzato e difficile eseguire il debug. – Kevkong