grunt-jsbeautifier

jsbeautifier.org for grunt

grunt-jsbeautifier

jsbeautifier.org for grunt

This plugin recommends using Grunt ~0.4.1. Grunt ~0.3.0 is only suported till version 0.1.4

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-jsbeautifier --save-dev

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

grunt.loadNpmTasks("grunt-jsbeautifier");

Install this grunt plugin next to your project's grunt.js gruntfile with:

npm install grunt-jsbeautifier@0.1.4

Then add this line to your project's grunt.js gruntfile:

grunt.loadNpmTasks("grunt-jsbeautifier");
  • files (required): Your source files to beautify
  • options (optional): Overwrite default jsbeautifier options
"jsbeautifier" : {
    files : ["src/**/*.js"],
    options : {
    }
}
  • src (required): Your source files to beautify
  • options (optional): Overwrite default jsbeautifier options
"jsbeautifier" : {
    "default": {
        src : ["src/**/*.js"]
    },
    "git-pre-commit": {
        src : ["src/**/*.js"],
        options : {
            mode:"VERIFY_ONLY"
        }
    }
}

Type: Files Default value: []

List of files to be beautified. This option is applicable only for Single Task

Type: Files Default value: []

List of files to be beautified. This option is applicable only for Multi Task

Type: String Default value: VERIFY_AND_WRITE

If mode is "VERIFY_ONLY", then task will fail if at least one file can be beautified. This is useful for pre-commit check.

Type: String Default value: ""

All beautified file will be stored under "dest".

Type: String Default value: null

Recommended for version < 0.2.7, use .jsbeautifyrc for > 0.2.7

If a filename is specified, options defined therein will be used. The config file must be valid JSON and looks like the one supported by js-beautify itself. Values defined in gruntfile will take precedence on config file values.

"jsbeautifier": {
    files: ["src/**/*.js"],
    options: {
        config: "path/to/config/file",
        css: {
            indentSize: 5
        },
        html: {
            indentSize: 7
        }
    }
},

Type: String Default value: null

A valid version/range of js-beautify according to semver. By default plugin uses latest version of "js-beautify", if you need to use otherwise specify it here.

Default options from js-beautify can be used

  "jsbeautifier": {
      files: ["src/**/*.js"],
      options: {
          config: "path/to/configFile",
          html: {
              braceStyle: "collapse",
              indentChar: " ",
              indentScripts: "keep",
              indentSize: 4,
              maxPreserveNewlines: 10,
              preserveNewlines: true,
              unformatted: ["a", "sub", "sup", "b", "i", "u"],
              wrapLineLength: 0
          },
          css: {
              indentChar: " ",
              indentSize: 4
          },
          js: {
              braceStyle: "collapse",
              breakChainedMethods: false,
              e4x: false,
              evalCode: false,
              indentChar: " ",
              indentLevel: 0,
              indentSize: 4,
              indentWithTabs: false,
              jslintHappy: false,
              keepArrayIndentation: false,
              keepFunctionIndentation: false,
              maxPreserveNewlines: 10,
              preserveNewlines: true,
              spaceBeforeConditional: true,
              spaceInParen: false,
              unescapeStrings: false,
              wrapLineLength: 0,
              endWithNewline: true
          }
      }
  },

Only specifiy options to overwrite.

NOTE: All options can be specified similar to js-beautify using underscore.

All files from foo folder except bar.js

jsbeautifier: {
    files: ["foo/*.js", "!foo/bar.js"]
}

If you want use specific version of js-beautify instead of latest, please refer to npm shrinkwrap

If you need to beautify files other than js, json, css & html, it can be done by passing fileTypes.

For example, beautifying ".js.erb" files along with ".js", beautifying ".less" files along with ".css", beautifying ".html.erb" files along with ".html".

jsbeautifier: {
    files: ["foo/css/*.css", "bar/css/*.less", "foo/js/*.js", "bar/js/*.js.erb", "foo/html/*.html", "bar/html/*.html.erb"],
    options: {
        js: {
            fileTypes: [".js.erb"]
        },
        css: {
            fileTypes: [".less"]
        },
        html: {
            fileTypes: [".html.erb"]
        }
    }
}
  • 0.2.10: Support for jsBeautifyVersion, 44
  • 0.2.9: Honor end_with_newline attribute of js-beautify. 45,46
  • 0.2.8: Support for .jsbeautifyrc, 28
  • 0.2.7: Use latest dependencies without throwing "latest" keyword warning, 35
  • 0.2.6: Bumped version after for changing dist to dest
  • 0.2.5: Support dist folder and show all failed files in VERIFY_MODE 22, 24, 25
  • 0.2.4: Support custom file types other than js, json, css & html. Use latest versions for dependencies 23, 26
  • 0.2.3: Always use latest version of js-beautify. 21
  • 0.2.2: Configuration is now lint happy. Options can be specified in cameCase, 17
  • 0.2.1: Added Support for flat config file
  • 0.2.0: Added support for css, html and json files
  • 0.1.10: Added verify only mode 15. This will fail if any file needs beautification.
  • 0.1.9: Upgraded js-beautify to 1.4.0. Fixed issues 13
  • 0.1.8: Upgraded js-beautify to ~1.3.1. Fixed issues 10, 12
  • 0.1.7: Upgraded grunt to ~0.4.1, js-beautify to ~1.2.0. Fixed issues 6, 7, 8, 9
  • 0.1.6: Make sure new line at the end of file. Fixed issue 5
  • 0.1.5: Upgraded to grunt ~0.4.0. Fixed issues 2, 3, 4
  • 0.1.4: Upgraded js-beautify to latest version (0.3.2)
  • 0.1.3: Added fix for block comment formatting.
  • 0.1.2: Supported grunt 0.4~.
  • 0.1.1: Readme file changes
  • 0.1.0: Initial version.

Copyright (c) 2012 Vishal Kadam Licensed under the MIT license.