Search code examples
sassmixins

Can you test if a mixin exists?


Sass quick question (hopefully) here. Can you test for the existence of a mixin? e.g.

@if thumbnail-mixin {} @else { //define mixin }.

Ideally I'd use @unless, but that only exists on a fork. I'm aware you can overwrite a mixin but I'm thinking more if you can have a default mixin, rather than having to specify N variables in every case.


Solution

  • Sass does not currently have native functionality to determine if a mixin exists or not.

    https://github.com/nex3/sass/issues/561#issuecomment-14430978

    You could create a Sass function written in Ruby:

    def mixin_exists(mixin_name)
        if(environment.mixin(mixin_name.value))
          Sass::Script::Bool.new(true)
        else
          Sass::Script::Bool.new(false)
        end
    end
    

    Or you could use the sass-utilities Compass extension, which has this function included.