2014-12-18 1 views
-1

Я работаю над проектом, используя Twitter Bootstrap, предварительно скомпилированный с Sass.Динамически повторно импортировать Sass partials после внесения изменений в переменные

Каждый раз, когда я переопределяю переменную, мне нужно повторно импортировать файл _bootstrap.sass в мою основную таблицу стилей проекта, чтобы переопределение вступила в силу.

Знаете ли вы, как сделать этот процесс автоматическим, чтобы каждый раз, когда я изменял переменную, он вступает в силу немедленно?

Для дальнейшего уточнения, это моя структура каталогов:

/project 
    /custom-sass 
    /boot.scss -> This is where _bootstrap.scss is imported 
    /glob.scss 
    /dev 
    /bootstrap-sass 
     /bootstrap 
     /mixins 
     /partial1.scss 
     /partial2.scss 
     /etc.. 
     /_bootstrap.scss -> This is the main Bootstrap Sass file that imports all partials. 

Когда я переопределить переменную непосредственно в _variables.scss, а затем повторно импортировать _bootstrap.scss с этой директивой: @import '../dev/bootstrap-sass/_bootstrap.scss в моем boot.scss, то стили обновляются.

Однако я не хочу переопределять переменные непосредственно в _variables.scss. Более того, я не хочу, чтобы меня заставляли повторно импортировать _bootstrap.scss в мою основную таблицу стилей каждый раз, когда я делаю изменения.

+0

Я не понимаю проблему здесь. Вы признаете, что переменные должны быть установлены * до * вы их используете. Так определите их, прежде чем использовать их? Изменение _variables.scss никогда не было требованием, оно доступно для вас. – cimmanon

+0

Да, но даже если я определяю переменную, прежде чем использовать ее, мне все равно придется повторно импортировать основной '_bootstrap.scss', обычно пробегая пробел или другой ключ, чтобы я мог повторно сохранить основную таблицу стилей, _bootstrap.scss'. Только тогда он получает реимпорт и стили повторно применяются к документу. Надеюсь, что проблема в том, что проблема. – luqo33

+0

Итак, действительно ли проблема заключается в том, что ваши файлы Sass не перекомпилируются при внесении изменений? – cimmanon

ответ

1

Нет языка, который будет делать то, что вы предлагаете. Если вы укажете $margin: 10px и затем запустите некоторый код, который использует эту переменную, вы не сможете изменить его на 20px и ожидать, что он будет ретроактивно изменять результаты кода, который уже запущен.

Если вы хотите $margin: 20px, вы указываете его таким образом, прежде чем запускать процедуры (миксины, импорт и т. Д.), Которые зависят от него. Другими словами, переместите импорт Bootstrap так, чтобы они были после, вы установили свои переменные.

+0

Да, я согласен в принципе. Однако, я считаю, что можно установить переменные слушатели, например. JavaScript или, по крайней мере, некоторые из его фреймворков. Что касается проблемы, которую я пытался объяснить, я использую Grunt для выполнения определенных задач в моем проекте. Mayby Grunt может помочь с динамическим перераспределением переменной? – luqo33

+0

Обратные вызовы не возвращаются во времени и не изменяют результаты процедур, которые * уже обработаны *. – cimmanon