0

问题

我们正在为 SASS/SCSS 使用 System.Web.Optimization 捆绑和 BundleTransformer。是否可以在每个 sass 文件之前调用一些预处理?不仅在 bundle 中包含的文件之前,而且在使用 @import 导入的文件之前。

如果您想在捆绑中的每个文件之前进行一些预处理,您可以添加一些自定义 IItemTransform 或 IBundleTransform,但想象一下:

Main.scss:
    @import '_mixin';
    some styles
_mixin.scss:
    some mixins

Main.scss 包含在 bundle 中并将被预处理,但 _mixin.scss 不包含在 bundle 中,因此 scss 编译器将从磁盘获取原始文件而无需任何预处理。

编译过程中有任何挂钩吗?还是其他方式?

我们为什么需要这个?

我们常用的静态文件位于 Core 项目中。此核心项目静态包含在其他项目中作为 IIS 中的虚拟目录(在调试中)或复制(在发布中)。使用此解决方案,我们可以在任何项目中使用“/SharedStatic/..”,并且始终可以解决:作为调试中的虚拟目录和发布中的常规路径。

所以对核心项目的正确@import必须是这样的(与BundleTransformer一起使用):

@import '~/SharedStatic/Styles/_mixin.scss'

但是 VS intellisense(或 R# intellisense)和 WebEssentials intellisense在编译时不理解'~'导入。Intellisense 只理解这一点:

@import '../../../../CoreProject/Static/_mixin.scss'

所以想法是在捆绑和修复从'../../..''~/' 的导入时预处理 scss 文件。

4

1 回答 1

0

还没有人回答,所以看起来构建 SASS 并不容易。

我们以其他方式解决了这个问题:停止在 IIS 中使用虚拟目录,并在每个项目中包含指向共享员工的符号链接。现在看起来每个项目都有自己的 /SharedStatic (这实际上是 Core Static 的符号链接)。这解决了 SCSS 的问题,因为我们可以在初始文件和编译前的文件中使用“../../SharedStatic/”,无需更改路径。

于 2015-04-23T09:25:46.840 回答