-
-
Save courtsimas/1167053 to your computer and use it in GitHub Desktop.
| //sessions.css.scss - file #1 that i only want to let the _style.scss import be included once | |
| $imported-once-files: (); | |
| @function import-once($name) { | |
| @if index($imported-once-files, $name) { | |
| @return false; | |
| } | |
| $imported-once-files: append($imported-once-files, $name); | |
| @return true; | |
| } | |
| @import "style"; | |
| body.sessions { | |
| //normal css for the sessions pages | |
| } | |
| ///////// | |
| //donations.css.scss - file that i only want to have _style.scss included once, but if it was already included in sessions, dont double include it | |
| $imported-once-files: (); | |
| @function import-once($name) { | |
| @if index($imported-once-files, $name) { | |
| @return false; | |
| } | |
| $imported-once-files: append($imported-once-files, $name); | |
| @return true; | |
| } | |
| @import "style"; | |
| body.donations { | |
| //normal css for the donations pages | |
| } | |
| ////////// | |
| //_style.scss shared file with base styles | |
| @if import-once("_style.scss"){ | |
| //base styles and declarations of cool sass-iness that you only want included once | |
| } |
OMFG! You just saved my life! Placeholders are atrocious if they get imported twice.
I'm totally now using this on JSMACSS!!!! Thank you!
Hey, I just published a gem which makes import once the default behaviour. Would love to hear what you guys think. Here it is: https://github.com/theblacksmith/sass-import_once
It's a shame we need to use crazy hacks like these to do something as basic as conditional loading of @import files.
Note that the core dev team is reluctant to implement this feature, although they are considering the implementation of a brand new dependency system.
See the following Github issues :
Related to sass/sass#139 , they have been considering this for 4 years. Such a pity it's not there yet, it'd be really helpful something like this:
@import "style" !once;
Thanks, this helped me a lot while combining several independent modules into a combined layout CSS. I added !default to $imported-once-files so I only need to define the function once.