将 SASS 添加到 .NET 6 Blazor 应用程序的正确方法?

Proper way to add SASS to .NET 6 Blazor application?

所以我搜索了一下,似乎使用 Delegate.SassBuilder 是将 SASS 添加到 Blazor 项目的好方法。它检测任何 .scss 文件并将它们构建到同一目录中的 .css 文件中。

它按预期工作,但是,我正在寻找有关“代码隐藏”文件的更多自定义,但使用 CSS 文件代替(不确定正确的术语是什么,除了“代码隐藏但是 css").默认情况下,您的 Blazor 应用程序将包含如下文件:

所以你有一个 .razor 文件,然后你有一个 .razor.css 文件。在 index.html 中,它会自动添加 <link href="projectname.styles.css" rel="stylesheet" /> 来处理这些样式。

但是,如果我将该 .css 文件重命名为 .scss 并构建应用程序,我最终会得到以下结果:

它可以工作,但我必须先构建它,然后 运行 应用程序。很烦人。同样烦人的是文件不再嵌套。我希望看到这样的内容:

更好的是,.css 文件是隐藏的,我只需要处理 .scss 文件。老实说,我不关心 .css 文件包含什么,因为它已经被缩小等等。

一定有更好的方法,但我实在找不到。

好吧,看来我有两个选择:

A) 创建一个 .filenesting.json 文件并将其作为 extensionToExtension 的内容(可能需要稍微修改一下):

"extensionToExtension": {
  "add": {
    ".razor.css": [ ".razor.scss" ],
    ".razor.css.map": [ ".razor.css" ],
    ".css": [ ".scss" ],
    ".razor.scss": [ ".razor" ],
    ".cs": [ ".cshtml", ".razor" ]
  }
}

B) 以某种方式让 .csproj 中的 <None Remove="**/*.razor.css" /> 工作。就像现在一样,处理 CSS 隔离的引擎不会查看排除的文件。

现在我会坚持使用选项 A,因为它似乎可行: