Ответ 1
Хорошо, вот несколько вещей, которые я узнал об этом:
В режиме отладки и проверьте web.config:
<system.web>
<compilation debug="true">
тогда все ваши javascripts будут сохранены в виртуальном каталоге пучка (они не будут объединены в один файл, и они будут не быть сокращены).
При переключении в режим деблокирования, переключитесь на:
<system.web>
<compilation debug="false">
чтобы все ваши файлы javascript внутри пакета были минимизированы и скомпилированы в один файл, это уменьшает округлые поездки в сеть. Обратите внимание: для каждого пакета создается один файл.
Если вы хотите включить оптимизацию независимо от того, находитесь ли вы в режиме отладки, установите BundleTable.EnableOptimizations = true, что заставляет минимизировать и связывать. Если вы оставите это вне кода, тогда BundleConfig будет искать вместо этого web.config.
RegisterBundles(BundleCollection bundles) method in BundleConfig.cs, you put in:
BundleTable.EnableOptimizations = true;
bundles.UseCdn = true;
var cssTransformer = new CssTransformer();
var jsTransformer = new JsTransformer();
var nullOrderer = new NullOrderer();
и так вы добавляете в файлы javascript:
var jqueryBundle = new CustomScriptBundle("~/bundles/jquery");
jqueryBundle.IncludeDirectory("~/Scripts/JQuery", "*.js");
jqueryBundle.Transforms.Add(jsTransformer);
jqueryBundle.Orderer = nullOrderer;
bundles.Add(jqueryBundle);
Примечания:
- Bundle.config игнорирует все файлы мин. Я добавил File.min.js и File.js, и он игнорирует File.min.js, и он минимизирует File.js и связывает его с другими файлами, входящими в комплект. Я проверил, потому что, когда я сам минимизировал один из файлов, все имена переменных (а не структурированный код) по сравнению с тем, что было загружено на моем сайте, были совершенно разными, чем файл min, который я включил в проект. Таким образом, это подтверждает, что файлы min не нужны в вашем проекте.
- Bundle.config игнорирует минимизацию любых файлов, названных так. "File.debug.js", это никогда не будет минимизировано, по сути, оно никогда не будет включено в ваш проект в выпуске. Я узнал об этом после того, как один из моих файлов javascript никогда не попадал на сайт.
-
403 ошибки будут возникать, если вы используете "Контент/css" в качестве своего виртуального каталога, где будет отображаться ваш пакет, его нужно изменить на "bundles/css", а 403 будет уходить так (используя бритвы):
@Styles.Render( "~/пучки/CSS" )
означает, что если у вас есть это в коде (обратите внимание, где ~/bundle/css ", это будет где ваши файлы css будут идти):
BundleTable.EnableOptimizations = true;
bundles.UseCdn = true;
var cssTransformer = new CssTransformer();
var jsTransformer = new JsTransformer();
var nullOrderer = new NullOrderer();
#region CSS Styles
var cssBundle = new CustomStyleBundle("~/bundles/css");
cssBundle.IncludeDirectory("~/Content/CSS", "*.css")
.IncludeDirectory("~/Content/CSS/Override", "*.css");
cssBundle.Transforms.Add(cssTransformer);
cssBundle.Orderer = nullOrderer;
bundles.Add(cssBundle);
#endregion
- Если ваш css имеет относительный путь, это также может быть изменено, поэтому найдите ошибки 404.
- Не все мини файлы будут вести себя так, как вы хотите, чтобы они... поэтому вам придется в конечном итоге сделать полузавернутую версию (или вам не нужно вообще никого из js вообще и просто связывать)
Но если вы хотите продолжить выполнение миниатюрного javascript, и вы не знаете, какие файлы выбрасывают ошибку, следующие шаги помогут:
- Связывание всего
- Откройте браузер и найдите все источники вложенных мини-js
- Копирование рабочих входящих js в другой файл
- начните вручную вставлять javascript, используя теги вместо bundleconfig.cs, и продолжайте добавлять их один за другим, пока один не сработает. Если это не удастся, тогда вам придется использовать неминифицированную версию этого проекта
- повторите шаг 3-4
Я хотел бы, чтобы на момент написания этой статьи была лучшая документация на bundle.config, но я нашел, что весь этот опыт был сильно разочаровывающим.