#asp.net-core #asp.net-core-mvc #minify #coreclr
#asp.net-core #asp.net-core-mvc #минимизировать #coreclr
Вопрос:
Документация для asp.net core показывает, как выполнять объединение и минимизацию css
и js
файлов с помощью grunt или gulp. Однако, когда я создаю проект с использованием vs 2015, он добавляет bundleconfig.json
файл в project. Я хочу минимизировать все файлы js внутри папки wwwroot / js. Итак, я обновил существующие строки внутри bundleconfig.json, чтобы использовать подстановочный знак *
{
"outputFileName": "wwwroot/js/*.min.js",
"inputFiles": [
"wwwroot/js/*.js"
],
// Optionally specify minification options
"minify": {
"enabled": true,
"renameLocals": true
},
// Optinally generate .map file
"sourceMap": false
}
однако, когда я публикую проект, я получаю сообщение об ошибке
Обработка wwwroot/js/*.min.js Недопустимые символы в path. Имя параметра: path
Ответ №1:
По состоянию на март 2021 года — рекомендуемый корпорацией Майкрософт подход заключается в использовании пакета WebOptimizer Core nuget, созданного Мадсом Кристенсеном (PM в команде Visual Studio) — https://www.nuget.org/packages/LigerShark .WebOptimizer.Core/
Он не использует bundleConfig.json
файлы и предпочитает настройку через запуск.ConfigureServices(), но вы, конечно, можете написать небольшой статический помощник, который возвращает действие и анализирует ваш файл BundleConfig.json с помощью JSON.NET или System.Text.Json, если у вас есть куча пакетов и вы уже потратили время на то, чтобы получить свой json-файл правильным способом. Затем при запуске вы можете предоставить вспомогательное действие для вызова services.AddWebOptimizer(action)
.
В WebOptimizer есть помощники тегов, которые помогают добавлять теги <link>
и <script>
в файлы CSHTML.
Вы можете увидеть подробную информацию о README из его репозитория на GitHub: https://github.com/ligershark/WebOptimizer
Ответ №2:
Я думаю, что вы не можете использовать подстановочные знаки в outputFileName
, поэтому используйте здесь абсолютный путь. Для создания нескольких пакетов создайте несколько записей в массиве.
[
{
"outputFileName": "wwwroot/css/site.min.css",
// An array of relative input file paths. Globbing patterns supported
"inputFiles": [
"wwwroot/css/site.css"
]
},
{
"outputFileName": "wwwroot/js/site.min.js",
"inputFiles": [
"wwwroot/js/site.js"
],
// Optionally specify minification options
"minify": {
"enabled": true,
"renameLocals": true
},
// Optinally generate .map file
"sourceMap": false
}
]
Приведенный выше вариант используется по умолчанию bundleconfig.json
.
На заметку:
*.min.js
также *.js
кстати. Поэтому, если вы не удалите предыдущий, он будет рекурсивно добавляться при каждом объединении, так что будьте осторожны.
Комментарии:
1. при чтении msdn, bundleconfig.json не работает для .net core цитата «ASP.NET Core не предоставляет встроенного решения для объединения и минимизации.» источник learn.microsoft.com/en-us/aspnet/core/client-side /…