J'ai debug="true"
dans mes deux web.config (s) , et je ne veux tout simplement pas que mes bundles soient minifiés, mais rien de ce que je fais ne semble le désactiver. J'ai essayé enableoptimisations=false
, voici mon code:
//Javascript
bundles.Add(new ScriptBundle("~/bundles/MainJS")
.Include("~/Scripts/regular/lib/mvc/jquery.validate.unobtrusive.js*")
.Include("~/Scripts/regular/lib/mvc/jquery.validate*")
.Include("~/Scripts/regular/lib/bootstrap.js")
.IncludeDirectory("~/Scripts/regular/modules", "*.js", true)
.IncludeDirectory("~/Scripts/regular/pages", "*.js", true)
.IncludeDirectory("~/Scripts/regular/misc", "*.js", true));
//CSS
bundles.Add(new StyleBundle("~/bundles/MainCSS")
.Include("~/Content/css/regular/lib/bootstrap.css*")
.IncludeDirectory("~/Content/css/regular/modules", "*.css", true)
.IncludeDirectory("~/Content/css/regular/pages", "*.css", true))
asp.net
asp.net-mvc
asp.net-mvc-4
bundle
asp.net-optimization
Baconbeastnz
la source
la source
Réponses:
Si vous avez
debug="true"
dans web.config et que vous utilisezScripts/Styles.Render
pour référencer les bundles dans vos pages, cela devrait désactiver le regroupement et la minification.BundleTable.EnableOptimizations = false
désactivera toujours à la fois le regroupement et la minification (quel que soit l'indicateur de débogage vrai / faux).N'utilisez-vous peut-être pas les
Scripts/Styles.Render
aides? Si vous affichez directement des références au bundle via,BundleTable.Bundles.ResolveBundleUrl()
vous obtiendrez toujours le contenu minifié / regroupé.la source
EnableOptimizations = false
- où appartient ce code?Les directives de compilation conditionnelle sont vos amis:
la source
Pour désactiver le regroupement et la minification, placez simplement votre fichier .aspx (cela désactivera l'optimisation même si
debug=true
dans web.config )vb.net:
c # .net
Si vous mettez
EnableOptimizations = true
cela, cela regroupera et minifiera même sidebug=true
dans web.configla source
debug="true"
et le droitScript.Render
mais cela ne fonctionnait toujours pas. Notez également que cela ne servira pas de fichiers .min.js, assurez-vous donc d'inclure des copies non réduites du code de dépendance.False
?Vous pouvez désactiver la minification dans vos bundles simplement en effaçant vos transformations.
Personnellement, j'ai trouvé cela utile lorsque je voulais regrouper tous mes scripts dans un seul fichier, mais que j'avais besoin de lisibilité pendant les phases de débogage.
la source
J'ai essayé beaucoup de ces suggestions, mais les remarques semblaient fonctionner. J'ai perdu pas mal d'heures pour découvrir que c'était mon erreur:
Cela m'a toujours permis de réduire et de regrouper le javascript, peu importe ce que j'ai essayé. Au lieu de cela, j'aurais dû utiliser ceci:
Le «~» supplémentaire l'a fait. Je l'ai même supprimé à nouveau dans un seul cas pour voir si c'était vraiment ça. C'était ... j'espère pouvoir sauver au moins une personne les heures que j'ai gaspillées là-dessus.
la source
Combinez plusieurs réponses, cela fonctionne pour moi dans ASP.NET MVC 4.
la source
Il existe également un moyen simple de contrôler manuellement la minification (et d'autres fonctionnalités). C'est le nouveau transformateur CssMinify () utilisant, comme ceci:
C'est pratique lorsque vous souhaitez avoir une partie spéciale de certains bundles à minimiser. Disons que vous utilisez des styles standard (jQuery), qui vous mettent sous vos pieds (en leur demandant beaucoup de requêtes de navigateur excessives), mais que vous souhaitez conserver votre propre feuille de style non réduite. (La même chose - avec javascript).
la source
J'ai combiné quelques réponses données par d'autres dans cette question pour trouver une autre solution alternative.
Objectif: toujours regrouper les fichiers, désactiver la minification JS et CSS dans le cas où
<compilation debug="true" ... />
et toujours appliquer une transformation personnalisée au bundle CSS.Ma solution :
1) Dans web.config :
<compilation debug="true" ... />
2) Dans la méthode Global.asax Application_Start () :
la source
Si vous définissez la propriété suivante sur false, cela désactivera à la fois le regroupement et la minification.
Dans le fichier Global.asax.cs , ajoutez la ligne comme mentionné ci-dessous
la source
Voici comment désactiver la minification par lot:
Note de bas de page: Les chemins utilisés pour vos bundles ne doivent coïncider avec aucun chemin réel dans vos versions publiées, sinon rien ne fonctionnera. Assurez-vous également d'éviter d'utiliser .js, .css et / ou '.' et '_' n'importe où dans le nom du bundle. Gardez le nom aussi simple et direct que possible, comme dans l'exemple ci-dessus.
Les classes d'assistance sont présentées ci-dessous. Notez que pour rendre ces classes à l'épreuve du temps, nous supprimons chirurgicalement les instances de minification js / css au lieu d'utiliser .clear () et nous insérons également une transformation de type mime sans laquelle les versions de production risquent de rencontrer des problèmes, en particulier lorsque il s'agit de remettre correctement les bundles css (Firefox et Chrome rejettent les bundles css avec le type mime défini sur "text / html" qui est la valeur par défaut):
Pour que tout cela fonctionne, vous devez installer (via nuget):
WebGrease 1.6.0+ Microsoft.AspNet.Web.Optimization 1.1.3+
Et votre web.config devrait être enrichi comme ceci:
Notez que vous devrez peut-être prendre des mesures supplémentaires pour faire fonctionner vos ensembles css en termes de polices, etc. Mais c'est une autre histoire.
la source
Juste pour compléter les réponses déjà données, si vous souhaitez également NE PAS minifier / obscurcir / concaténer CERTAINS fichiers tout en permettant le regroupement complet et la minification pour d'autres fichiers, la meilleure option est d'utiliser un moteur de rendu personnalisé qui lira le contenu d'un bundle particulier (s) et restituer les fichiers dans la page plutôt que de rendre le chemin virtuel du bundle. J'avais personnellement besoin de cela parce que IE 9 était $ *% @ ing le lit lorsque mes fichiers CSS étaient regroupés même avec la minification désactivée .
Merci beaucoup à cet article , qui m'a donné le point de départ du code que j'ai utilisé pour créer un rendu CSS qui rendrait les fichiers pour le CSS tout en permettant au système de rendre mes fichiers javascript regroupés / minifiés / obscurcis.
Création de la classe d'assistance statique:
Puis dans le fichier de disposition du rasoir:
au lieu de la norme:
Je suis sûr que la création d'un moteur de rendu facultatif pour les fichiers javascript nécessiterait également peu de mise à jour vers cet assistant.
la source
CssTemplate
pour quelque chose comme"<link href=\"{0}?f={1}\" rel=\"stylesheet\" type=\"text/css\" />"
et changer lasb.AppendFormat
ligne en quelque chose commesb.AppendFormat(CssTemplate + Environment.NewLine, urlHelper.Content(file.VirtualFile.VirtualPath), System.IO.File.GetLastWriteTimeUtc(HttpContext.Current.Server.MapPath(file.IncludedVirtualPath)).Ticks);
Rechercher un
EnableOptimizations
mot-clé dans votre projetDonc si vous trouvez
tournez-le
false
.la source
Si vous utilisez la transformation CSS LESS / SASS, il existe une option
useNativeMinification
qui peut être définie sur false pour désactiver la minification (dans web.config). Pour mes besoins, je le change simplement ici quand j'en ai besoin, mais vous pouvez utiliser les transformations web.config pour toujours l'activer lors de la version de version ou peut-être trouver un moyen de le modifier dans le code.Astuce: le but est de visualiser votre CSS, ce que vous pouvez faire dans les outils d'inspection du navigateur ou en ouvrant simplement le fichier. Lorsque le regroupement est activé, ce nom de fichier change à chaque compilation, donc je mets ce qui suit en haut de ma page afin que je puisse voir mon CSS compilé facilement dans une nouvelle fenêtre de navigateur à chaque fois qu'il change.
ce sera une URL dynamique quelque chose comme
https://example.com/Content/css/bundlename?v=UGd0FjvFJz3ETxlNN9NVqNOeYMRrOkQAkYtB04KisCQ1
Mise à jour: j'ai créé une transformation web.config pour la définir sur true pour moi pendant le déploiement / la version de la version
la source
Cela peut être utile à quelqu'un à l'avenir le nouveau cadre, lorsque la configuration par VS, obtient une valeur par défaut
web.config
,web.Debug.config
etweb.Release.config
. Dans leweb.release.config
vous trouverez cette ligne:cela semblait remplacer toutes les modifications en ligne que j'avais apportées. J'ai commenté cette ligne et nous étions saufs (en termes de voir du code non minifié dans une version "release")
la source