sass-proptypes
v1.0.1
Published
Argument validation for your Sass mixins
Readme
Sass propTypes
Inspired by React's PropTypes validation, Sass PropTypes helps you validate required arguments for your Sass mixins. For example, imagine you've written a mixin that compiles buttons. The mixin accepts one of several $style arguments:
@mixin button($style: default) {
@if $style == 'default' {
// Default button styles
}
@if $style == 'primary' {
// Primary button styles
}
@if $style == 'negative' {
// Negative button styles
}
@if $style == 'positive' {
// Positive button styles
}
}The mixin works well so long as you pass in a valid $style argument (one of default, primary, negative, or positive). But what happens if you accidentally pass in a invalid argument, like brand or even a misspelling like positve? Well, nothing. You'll just lose some time debugging your compiled CSS.
This where Sass propTypes steps in. If you make a mistake and pass in a invalid argument, PropTypes will throw a warning in the console.
How to use
Simply include the propTypes mixin in the mixin you wish to validate. For the example above:
@mixin button($style: default) {
$propTypes: default, primary, negaive, positive;
@include propTypes($style, $propTypes);
...
}The propTypes mixin accepts two arguments:
$propthe mixin argument you wish to validate.$propTypea list of valid arguments.
If you were to pass in an invalid argument, the console will provide a helpful warning, with a stack trace that tells you exactly where to look:
WARNING: prmary must be one of default, primary, positive, negative
on line 5 of src/stylesheets/library/_proptypes.scss
from line 43 of src/stylesheets/library/_buttons.scss
from line 40 of src/stylesheets/buttons/_base.scssGet to work
Sass propTypes is available on Bower...
$ bower install sass-proptypes...and NPM...
$ npm install sass-proptypesImprovements
Got an idea to make this better? PRs welcome.
