Giter Club home page Giter Club logo

grunt-todo's Introduction

grunt-todo

NPM version Dependency Status Downloads counter

Find TODO, FIXME and NOTE inside project files.


Getting Started

This plugin requires Grunt ~0.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-todo --save-dev

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

grunt.loadNpmTasks('grunt-todo');

The "todo" task

Overview

In your project's Gruntfile, add a section named todo to the data object passed into grunt.initConfig().

grunt.initConfig({
  todo: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  },
});

Options

options.marks

Type: Array
Default value:

{
  name: "FIX",
  pattern: /FIXME/,
  color: "red"
},
{
  name: "TODO",
  pattern: /TODO/,
  color: "yellow"
},
{
  name: "NOTE",
  pattern: /NOTE/,
  color: "blue"
}

An Array of objects representing the marks to find inside the files.
pattern can be a string or a RegExp. color is a color-name string allowed by chalk. If the color is not one of these, grunt-todo will use cyan.

options.file

Type: String (file path)
Default value: false

A file path to log the founded marks, in markdown format.
If false is given, the file will not be written.

options.githubBoxes

Type: Boolean
Default value: false

When logging the found marks to a file, add a github flavoured markdown checkbox for each mark.

options.title

Type: String
Default value: Grunt TODO

When logging the founded marks to file, use this as title of the markdown document.

options.colophon

Type: Boolean
Default value: false

When logging the found marks to file, use colophon and timestamp as footer of the markdown document.

options.usePackage

Type: Boolean
Default value: false

When enabled, if you launch your grunt-todo task from a folder containing a package.json file (like 99% of use cases), grunt-todo will use some of the package's informations to make the report file a little more informative (use project's name as title, show version and description, links to the homepage…).

options.logOutput

Type: Boolean
Default value: true

You can disable the task to output the marks on the console by setting this to false.

Usage Examples

Default Options

In this example, the default options are used to shows the TODO, FIXME and NOTE marks founded in the given files.

grunt.initConfig({
  todo: {
    options: {},
    src: [
      'test/*'
    ],
  },
});

Custom Options

In this example, custom options are used to shows the TODO and BURP marks founded in the given files, and write the results on a file named report.md

grunt.initConfig({
  todo: {
    options: {
      marks: [
        {
          pattern: "BURP",
          color: "pink"
        },
        {
          name: "TODO",
          pattern: /TODO/,
          color: "yellow"
        }
      ],
      file: "report.md",
      githubBoxes: true,
      colophon: true,
      usePackage: true
    },
    src: [
      'test/*'
    ]
  }
});

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style.
Lint and test your code using Grunt.

Contributors

Many thanks to them. :)

Release History

  • 2015/02/28 : v0.5.0
  • 2014/08/07 : v0.4.0
  • 2014/07/15 : v0.3.1
  • 2014/05/15 : v0.3.0
  • 2014/04/28 : v0.2.3
  • 2014/04/27 : v0.2.2
  • 2014/04/27 : v0.2.1
  • 2014/03/14 : v0.2.0
  • 2014/01/26 : v0.1.2
  • 2014/01/26 : v0.1.1
  • 2013/12/29 : v0.1.0

grunt-todo's People

Contributors

dependabot-preview[bot] avatar edwellbrook avatar furzeface avatar leny avatar mstrutt avatar sparkyfen avatar zachwolf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

grunt-todo's Issues

grunt-todo isn't looking for hidden files (eg: .htaccess)

Just tried adding a # TODO: stuff in a .htaccess file located in a subdirectory of my project and grunt-todo doesn't seem to be parsing this type of file automagically.

Specifying '.htaccess' seems to trigger it just fine, though it would be nice for it to do it implicitly.

    todo: {
      options: {
        file: "todo.md"
      },
      pants: {
        src: [
          'app/**/*',       // results in .htaccess not being parsed :(
          'app/*',          // results in .htaccess not being parsed :(
          'app/.htaccess',  // results in .htaccess being parsed :D

          '*',              // results in .htaccess not being parsed :(
          '.htaccess'       // results in .htaccess being parsed :D
        ],

        title: "TODO List"
      }
    },

Just to see what would happen, I created a .helper file which has a TODO statement in it as well... it isn't read at all; though when I specify '.helper' it works just fine. I'm not sure if this is a security feature of Node.js or this plugin where it doesn't automagically GREP hidden files, so the documentation for this repo may wish to clarify this.

Creating a log file with TODOs

Just wanted to thank you for this generator. You got it so far completed that I just forked it and added a feature to create a log file that lists all my TODOs.

An example of the file can be seen here.

If you would like me to make a pull request to integrate the changes into your repo, let me know!

Maximum callstack exceeded...

Seems process.nextTick is being depricated in Node.js, and setImmediate is preferred for recursive deferrals:

# [redacted loads of the same warning]
# ...
(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.

util.js:35
  var str = String(f).replace(formatRegExp, function(x) {
                      ^
RangeError: Maximum call stack size exceeded

I found this BountySource article https://www.bountysource.com/issues/1336147-docpad-v6-55-1-node-error-please-use-setimmediate-in-place-of-process-nexttick outlining some potential issues causing the overstack call... I'm in the process of replicating their steps to validate this issue...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.