grunt-diff

    0.1.5 • Public • Published

    grunt-diff

    Run tasks only if target file changed.

    Getting Started

    This plugin requires Grunt ~0.4.0

    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-diff --save-dev

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

    grunt.loadNpmTasks('grunt-diff');

    The "diff" task

    Overview

    This task will keep a hash reference of target file and run defined tasks only if file changed. Similar to grunt-contrib-watch, but this one is for deployment.

    File hashes will be saved in .grunt/grunt-diff/hash.json. You might like to add .grunt to your .gitignore.

    grunt.initConfig({
      diff : {
        javascript : {
          src   : [ 'lib/*.js' ],
          tasks : [ 'concat', 'uglify' ],
        },
        sass : {
          refer : 'sass:dist',
          tasks : 'sass:dist',
        },
      },
    });

    You can flush file hashes any time by running:

    grunt diff:flush

    Options

    options.algorithm

    Type: String Default value: 'md5'

    algorithm is dependent on the available algorithms supported by the version of OpenSSL on the platform. Examples are 'sha1', 'md5', 'sha256', 'sha512', etc. On recent releases, openssl list-message-digest-algorithms will display the available digest algorithms.

    options.encoding

    Type: String Default value: 'utf8'

    The file encoding.

    Usage Examples

    Notice that targets are passed to diff task in the same order they are written in Gruntfile. Thus allows chained configuration.

    grunt.initConfig({
      // Other configs
     
      diff : {
        single : {
          src   : 'file/to/check',
          tasks : [ 'taskToRun' ],
        },
     
        pattern : {
          files : [{
            expand : true,
            cwd    : 'path/to/check',
            src    : [ '**/*' ],
          }],
          tasks : [ 'taskToRun' ],
        },
     
        chained : {
          src   : 'files/generated/by/previous/task',
          tasks : [ 'taskToRun' ],
        },
     
        multi : {
          src   : 'file/to/check',
          tasks : [
            'taskToRun1',
            'taskToRun2',
          ],
        },
     
        refer : {
          refer : 'task:target',
          tasks : [ 'taskToRun' ],
          // 'tasks' can be omited when using 'refer'.
          // Defaults to the refered 'task:target'.
        },
      },
    });

    TODO

    • Improve test coverage

    Contributing

    In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

    Release History

    • 2014-02-10 v0.1.5 Skip non-file paths
    • 2014-02-10 v0.1.3 Default refer tasks
    • 2014-02-10 v0.1.2 Refer to task:target's files
    • 2014-02-10 v0.1.1 Check file removal
    • 2014-02-10 v0.1.0 Release

    Keywords

    none

    Install

    npm i grunt-diff

    DownloadsWeekly Downloads

    28

    Version

    0.1.5

    License

    none

    Last publish

    Collaborators

    • auiworks