如何缩小 asp.net 核心中的文件?

How to minify files in asp.net core?

asp.net 核心的文档显示了如何使用 grunt 或 gulp 执行 bundling and minification cssjs 文件。 但是,当我使用 vs 2015 创建项目时,它会将 bundleconfig.json 文件添加到项目中。我想缩小 wwwroot/js 文件夹中的所有 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
  }

但是当我发布项目时出现错误

Processing wwwroot/js/*.min.js Illegal characters in path. Parameter name: path

我认为 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 顺便说一句。所以如果你不删除之前的一个,它会在每次捆绑时递归添加,所以要小心。

截至 2021 年 3 月 - Microsoft-recommended approach is to leverage the WebOptimizer Core nuget package created by Mads Kristensen (PM on Visual Studio team) - https://www.nuget.org/packages/LigerShark.WebOptimizer.Core/

它不使用 bundleConfig.json 文件,并且倾向于通过 Startup.ConfigureServices() 进行配置,但是你当然可以编写一个小的静态助手来 returns 一个动作并解析出来您的 bundleConfig.json 文件通过 JSON.NET 或 System.Text.Json,如果您有大量的捆绑包并且已经花时间以正确的方式获取您的 json 文件。然后在 Startup 中,您可以为 services.AddWebOptimizer(action).

的调用提供辅助操作

WebOptimizer 具有标签助手,可帮助在 CSHTML 文件中添加 <link><script> 标签。

您可以从 GitHub 存储库中查看 README 的详细信息: https://github.com/ligershark/WebOptimizer