Eliminating Code Smell with Grunt(flippinawesome.org)
flippinawesome.org
Eliminating Code Smell with Grunt
http://flippinawesome.org/2013/12/02/eliminating-code-smell-with-grunt/
13 comments
JSHint is removing most style related rules out in favor of exterior plugins. JSCS is a great alternative - https://github.com/mdevils/node-jscs
I lol'd at the title. Just having a Gruntfile is the first smell I notice when looking at a project. Seriously, why take two simple tools and layer a unnecessary "task runner" on top of them?
What does your build process look like? What's the tooling, and how do you invoke it? Just curious about alternatives.
I use make. You can see my typical setup for Node packages on GitHub, for example: https://github.com/jaredhanson/locomotive
I use make.
I generally prefer Make as well and I even made the case for Make when Grunt.js was first announced [1]. That said, I did use Grunt on a recent project and it worked out reasonably well. For myself, I'd prefer to keep using Make, but for many teams, Grunt is a reasonable choice.
I chose Grunt because Make generally requires a lot more background knowledge and ongoing discipline. Most Grunt tasks are configured by relatively constrained JSON data, so it's pretty hard for non-experts to muck it up unless they need to write a custom task. A Makefile would have created much greater education burden for me. That's particularly a concern when the team's Make/shell expert has time-limited involvement with the project.
[1]: https://news.ycombinator.com/item?id=3777393
I chose Grunt because Make generally requires a lot more background knowledge and ongoing discipline. Most Grunt tasks are configured by relatively constrained JSON data, so it's pretty hard for non-experts to muck it up unless they need to write a custom task. A Makefile would have created much greater education burden for me. That's particularly a concern when the team's Make/shell expert has time-limited involvement with the project.
[1]: https://news.ycombinator.com/item?id=3777393
I find having a "standard" way to run tasks enormously beneficial especially when working with developers cross-platform. Whatever OS you are running, just grunt and all is well. :)
It makes sense when you use it with grunt-contrib-watch. Then you just keep it running as you are developing and listen for the error "ding" after a save.
Actually, no. It's very easy to run a watcher which executes any command (like say jshint itself).
s/Grunt/JSHint/
Great article. Grunt is a wonderful tool, despite what some people on here might say.