Sass转换:每个文件预处理

时间:2015-04-22 12:39:48

标签: asp.net sass system.web.optimization bundletransformer

问题

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

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

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

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

任何进入编译过程的钩子?或者其他一些方式?

为什么我们需要这个?

我们的常见静态文件位于Core项目中。此核心项目static作为IIS中的虚拟目录(在调试中)或复制(在发布中)包含在其他项目中。有了这个解决方案,我们可以在任何项目中使用'/ SharedStatic / ..'并且它总是被解决:作为调试中的虚拟目录和发布中的通常路径。

所以@import核心项目必须像那样(与BundleTransformer合作):

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

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

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

所以想法是预先处理scss文件,同时捆绑并修复从'../../ ..''〜/'的导入。

1 个答案:

答案 0 :(得分:0)

还没有人回答,所以看起来很难建立SASS。

我们以其他方式解决了这个问题:停止在IIS中使用虚拟目录,并将符号链接包含在每个项目的共享人员中。现在看起来每个项目都有自己的/ SharedStatic(它实际上是Core Static的符号链接)。这解决了SCSS的问题,因为我们可以使用' ../../ SharedStatic /'无论是在初始文件还是在编译之前的文件中,都不需要将pathes从一个更改为另一个。