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/" как в исходном файле, так и в файле перед компиляцией, не нужно менять пути друг от друга.

Другие вопросы по тегам