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 во время объединения и исправить импорт из '../../..' в '~ /'.
1 ответ
Никто еще не ответил, так что, похоже, в построении SASS нет простого крючка.
Мы решили эту проблему по-другому: перестали использовать виртуальные каталоги в IIS и включили в каждый проект символические ссылки на общий персонал. Теперь похоже, что у каждого проекта есть свой собственный / SharedStatic (который на самом деле является символической ссылкой на Core Static). И это решает проблему со SCSS, так как мы можем использовать "../../SharedStatic/" как в исходном файле, так и в файле перед компиляцией, не нужно менять пути друг от друга.