npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

grunt-scss-stylize

v0.6.0

Published

Compile scss files to conform to styleguide.

Downloads

144

Readme

grunt-scss-stylize

Reformat and reorder SCSS files to conform to a basic styleguide.

Getting Started

This plugin requires Grunt >=0.4.0

Install this plugin with this command:

npm install grunt-scss-stylize --save-dev

Once the plugin has been installed, it can be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-scss-stylize');

Stylizer task

Run this task with the grunt stylizeSCSS command.

This task parses files that use the SCSS syntax and generates reformatted files with uniform indentation and strictly ordered properties following RECESS-like property precedence.

This task requires you to have Ruby and Sass installed in order to validate your SCSS files before reformatting is performed.

Options

tabSize

Type: Integer
Default: 4

Number of spaces to be used for indentation.

extraLine

Type: Boolean
Default: true

Add a new line at the end of every multi-line selector.

oneLine

Type: Boolean
Default: true

Write selectors with only a single property to one line.

padPrefixes

Type: Boolean
Default: false

Add leading space to vendor prefix properties.

cleanDecimals

Type: Boolean
Default: false

Clean decimal values to add leading zeros to values less than one and remove trailing zeros.

cleanZeros

Type: Boolean
Default: false

Remove units from values equal to zero.

alphabetizeProps

Type: Boolean
Default: false

Override default property precedence with properties ordered alphabetically. This is the only built in ordering alternative, since alphabetical order is a common alternative to RECESS style property grouping.

order

Type: Array
Default: null

An array of Strings that represent CSS property precedence. Providing a custom order will overwrite the default order and any properties not contained in the custom order will maintain their relative position within file.

Examples

The basics

Pre-stylized SCSS:

.parent {
height: 400px;
position: relative;
font-size: 24px;
  .child {
      margin-right: 20px;
      float: left;
  }
  a {
    color: #FF0000;
  }
}

Stylized with default options

grunt.initConfig({
  
  stylizeSCSS: { 
    target: {
      files: [{
        expand: true,
        src: ['frontend/*.scss']
      }]
    }
  }

});

grunt.loadNpmTasks('grunt-scss-stylize');

grunt.registerTask('default', ['stylizeSCSS']);

Produces stylized output:

.parent {
    position: relative;
    height: 400px;
    font-size: 24px;
    .child {
        float: left;
        margin-right: 20px;
    }

    a { color: #FF0000; }
}

Write stylized files to a directory

If you provide a dest directory the stylized files will be written to that directory, leaving your source files untouched.

grunt.initConfig({
  
  stylizeSCSS: { 
    target: {
      files: [{
        expand: true,
        src: ['raw/*.scss'], 
        dest: 'frontend/scss/'
      }]
    }
  }

});

grunt.loadNpmTasks('grunt-scss-stylize');

grunt.registerTask('default', ['stylizeSCSS']);

Overwrite SCSS files with stylized output

If you do not specify a dest directory files will be stylized in place, overwriting the source with the reformatted SCSS.

grunt.initConfig({
  
  stylizeSCSS: { 
    target: {
      files: [{
        expand: true,
        src: ['frontend/*.scss']
      }]
    }
  }

});

grunt.loadNpmTasks('grunt-scss-stylize');

grunt.registerTask('default', ['stylizeSCSS']);

Provide your own property order

By default, properties are reordered following the RECESS strict property order. To conform to a different style guide you can set your own property precedence by passing an Array of properties to the order option.

N.B. Setting your own order will overwrite the default property order completely, any style properties not specified in your order will be left in the order in which they appeared in the source file.

grunt.initConfig({
  
  stylizeSCSS: { 
    target: {
      options: {
        order: ['display', 'position', 'top', ...]
      },

      files: [{
        expand: true,
        src: ['frontend/*.scss']
      }]
    }
  }

});

grunt.loadNpmTasks('grunt-scss-stylize');

grunt.registerTask('default', ['stylizeSCSS']);

Default order

The default order wraps sass specific properties around the RECESS property order, followed by media queries and nested declarations:

  var order = [
      'fontface',

      '@extend',
      '@include',
      '@import',

      /* Positioning */
      ...

      /* Box-model */
      ...

      /* Typography */
      ...

      /* Cursor */
      ...

      /* Visual */
      ...

      /* Misc */
      ...

      'query',
      'child'
  ];