Трансформация Sass: предварительная обработка каждого файла

Проблема

Мы используем связку System.Web.Optimization и BundleTransformer для SASS/SCSS. Можно ли вызвать некоторую предварительную обработку перед каждым файлом sass? Не только перед файлами, включенными в комплект, но и перед файлами, импортированными с помощью @import.

Если вы хотите выполнить некоторую предварительную обработку перед каждым файлом в пакете, вы можете добавить некоторый пользовательский IItemTransform или IBundleTransform, но представьте себе это:

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

Main.scss включен в комплект и будет предварительно обработан, а _mixin.scss не включен в комплект, поэтому компилятор scss получит необработанный файл с диска без какой-либо предварительной обработки.

Любой крючок в процессе компиляции? Или каким-то другим способом?

Зачем нам это нужно?

Наши общие статические файлы находятся в основном проекте. Этот статический проект основного проекта включается в другие проекты как виртуальный каталог в IIS (в отладке) или копируется (в выпуске). С помощью этого решения мы можем использовать «/SharedStatic/..» в любом проекте, и он всегда разрешается: как виртуальный каталог в отладке и как обычный путь в выпуске.

Итак, правильный @import для основного проекта должен быть таким (работает с BundleTransformer):

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

Но VS intellisense (или R# intellisense) и WebEssentials intellisense не понимают импорт '~' во время компиляции. Intellisense понимает только это:

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

Итак, идея состоит в том, чтобы предварительно обработать файлы scss при объединении и исправить импорт из '../../..' в '~/'.


person VorobeY1326    schedule 22.04.2015    source источник


Ответы (1)


Никто еще не ответил, так что, похоже, нет простого способа создать SASS.

Мы решили эту проблему другим способом: перестали использовать виртуальные каталоги в IIS и включили симлинки на общие ресурсы в каждый проект. Теперь похоже, что каждый проект имеет свой собственный /SharedStatic (который на самом деле является символической ссылкой на Core Static). И это решает проблему со SCSS, так как мы можем использовать '../../SharedStatic/' как в исходном файле, так и в файле перед компиляцией, не нужно менять пути от одного к другому.

person VorobeY1326    schedule 23.04.2015