- 
                Notifications
    You must be signed in to change notification settings 
- Fork 3.4k
Description
Giving less the power to be built for different configurations, without having separate files is very valuable.
Use Case 1 - Browser Support vs File Size
Consider, we want to keep our file-size down, or increase speed. We can create a gradient, but we may not want to provide optional IE support, using the well known, and very long property. We also may, or may not want browser prefixes to be supported.
@if("prefixes") {
    background: -moz-linear-gradient(top, #ffffff 0%, #000000 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#000000));
    background: -webkit-linear-gradient(top, #ffffff 0%,#000000 100%);
    background: -o-linear-gradient(top, #ffffff 0%,#000000 100%);
    background: -ms-linear-gradient(top, #ffffff 0%,#000000 100%);
}
background: linear-gradient(to bottom, #ffffff 0%,#000000 100%);
@if("ie") {
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#000000',GradientType=0 );
}
Now, when we compile the code, we can pass --use ie or --use prefixes to enable these options.  As an alternative, we can use @unless ("noprefixes") to default it to being included.
To avoid conflicts with existing tags, a new tag could be created for this which accepts a comma-separated list of flags to set.
--use ie,prefixes
Use Case 2 - Development vs Production
In production, you may add styles that show information, that you don't want the user to see.  Perhaps the styles for a debug toolbar, or creating a theme with both flat and chrome styles.  The code can be simplified by wrapping your entire toolbar code in a @if wrapper, or creating a mix-in that does nothing for properties like gradients and box-shadow on the simple version.
linear-gradient(@from, @to) {
    @unless ("flat") {
        background: linear-gradient(to bottom, @from 0%, @to 100%);
    }
}
Unless the user passes --use flat, we get the the gradient.
Why not us separate files?
- LESS focuses on putting related code together. It seems like it goes against its nature to split simple toggles like these into different places.
- You may have things that you want to change, but you also have things you want to be the same, like the paddingyou changed on.sidebarshouldn't need any copy-paste from file to file. Write LESS CSS.
Command line flag (and possible @if and @unless should probably be renamed.
If the concept is accepted, I'll try to find time to implement it.