我们正在使用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文件,同时捆绑并修复从'../../ ..'到'〜/'的导入。
答案 0 :(得分:0)
还没有人回答,所以看起来很难建立SASS。
我们以其他方式解决了这个问题:停止在IIS中使用虚拟目录,并将符号链接包含在每个项目的共享人员中。现在看起来每个项目都有自己的/ SharedStatic(它实际上是Core Static的符号链接)。这解决了SCSS的问题,因为我们可以使用' ../../ SharedStatic /'无论是在初始文件还是在编译之前的文件中,都不需要将pathes从一个更改为另一个。