
Did you guys enjoy Paul Irish’s talk at Google I/O?
In case you missed it, yesterday we announced Yeoman – a project we’ve been working on to greatly help improve developer workflow, spanning everything from a comprehensive build process to package management. If you’d like to read more about it’s features, check out Yeoman.io.
How does Yeoman build upon Grunt?:
One common question we’ve been asked if how Yeoman differs from Grunt. Ben Alman’s Grunt is an excellent baseline and with this project we wanted to build on it, addressing:
- An opinionated workflow we feel will simplify achieving common tasks more quickly
- Improved scaffolding (our most basic scaffolding supports stripped HTML5 Boilerplate, Twitter Bootstrap (with Compass support) and AMD). We’re working on improving this further. You easily kick this off with
yeoman init - Integrated package management – on the front-end this is huge. No more having to manually go opening up your browser or GitHub to find dependencies like jQuery or Backbone. Just do
yeoman install jqueryor upgrade usingyeoman update - Wiring and integration of a number of commonly used grunt tasks (getting these to play nicely is not always straightforward)
- Experimental support for EcmaScript 6 module syntax (works with CoffeeScript, vanilla JS, AMD)
- An improved watch process – Yeoman has LiveReload support and falls back to a simple watch/reloader if you aren’t using LR. We also automagically compile your CoffeeScript and Compass files whenever you change them.
- A comprehensive build process including benchmarked Image optimization, app cache manifest generation and a bunch of other pieces we think you’ll find very useful
Tooling tips and Yeoman Screencast (18 mins):
In this supplemental video, I discuss some more tips for developer tooling and ways in which Yeoman (and related projects) help us spend less time on process and more time building more awesome applications.
tl;dr: do what you can to automate as much of your workflow as possible.
We’re looking at a number of additions we might make to Yeoman in the future, but we’re aiming to get a release out the door in the next month or so.
(Special thanks to Grunt, HTML5 Boilerplate and more without whom this project wouldn’t have been possible)
Video notes and further recommendations:
Editor
- Know your text editor inside out
- What key bindings/shortcuts can help you complete tasks more quickly? Do you know them all?
- How can your editor be extended? Packages?
- Zen coding (st2: ZenCoding package )
- Automatic linting (st2: SublimeLinter)
- Source style formatting (st2: Sublime Closure Linter, jsBeautifier)
- Syntax detection (st2: DetectSyntax package)
- Markdown -> HTML and preview (st2: MarkdownBuild)
- Your command-line build process and editor can integrated. Are you doing this? (for Sublime users, do you actually hook up to the built-in build system?)
- The unofficial Sublime docs have a good write-up about this
- Wes Bos has a guide for it in his Sublime Text Build Scripts post (using Node.js and CoffeeScript)
- Other snippets:
Scaffolding
- Do you have a scaffolding tool?
- If not, you’re missing out. Scaffolding tools save you time creating parts of your application.
- Others (specific to server-side frameworks)
Watch process
Are you still manually refreshing your apps/pages on every change? Still having to compile CoffeeScript etc. each time too? Get a file watcher in place to automatically reload for you.
LiveReload, CodeKit, Brunch and Grunt also do this well:
- Grunt Reload tries to offer a better watch process for Grunt and also has some basic support for the LiveReload extension
Testing
- Mocha
- Also check out: Grunt Mocha
- Jasmine
- and of course it’s related Grunt ask: Jasmine-grunt
- From Pauls talk (thanks to Ryan). Automated client-side testing in the cloud
Build process
- We all need a solid build process for production
The basics (which Grunt covers very well):
- Linting
- Unit testing
- Concatenation
- Minification
- Optimization
These days there are a few more steps worth considering:
- Using AMD? You should be running those modules through r.js, ideally without forcing non-AMD projects to do this if you’re not using them.
- Headless unit testing (PhantomJS, Zombie.js)
- Compile Compass, LESS, CoffeeScript files
- Image optimization (we’ve benchmarked the below two as the best)
- File versioning
- Generating an application cache manifest
- Confess.js helps with this greatly
Extra
Interested in automated distributed CI for JS? Checkout this guide from the jQuery project.
Thoughts?
We’ve had a great response to Yeoman since we announced it yesterday and would love to hear more about what you guys think of the idea. Do you see yourself using it based on the feature list and teaser? Anything else you wish it could try addressing?.

Hi Addy,
Yeoman looks really great. Is it build up on grunt (so it can use custom grunt tasks) or is it a complete different tool with the same approach? Does Yeoman rely on SublimeText to get all features? Can I create custom scaffolding templates (or plugins in general like with grunt)?
Thank you very much,
Pipo
Hey Pipo,
Yeoman is build upon grunt and so you should still be able to use custom grunt tasks. We don’t rely on SublimeText for any of our features, but for the first release might be putting out a Sublime plugin (or setup) that integrates with its build system. Anything you can do with grunt should be possible with Yeoman. In fact, our custom scaffolding tasks can probably be customized to match your own needs without too much effort.
Addy
I can’t wait to play with it!
Nice work with Yeoman, Addy ;D
Thanks! It was a team effort : )
As for brunch — it also does testing (with mocha), since 1.3, even without browser.
Thanks for clarifying, Paul!
Looks really promising.
A lot of stuff seems to be based on h5bp current node build script.
What still grinds my gears, will the dependency tracking & fetching mechanism be based on Volo? I read that James Burke is also thinking about getting Volo & Grunt working together, so, join forces?
The dependency fetching (package management) is based on Bower (a Twitter project). We initially reviewed Volo and had many discussions with James about it but decided that there were some design decisions we wanted to go with which were incompatible with the direction Volo was taking. That said, it remains a solution we’re reviewing.
Mickael Daniels (who worked on the Node build script) is also on the Yeoman team. He’s been an awesome source of inspiration for some of our internal plumbing : )
Is Bower a public project on GitHub? I can’t seem to find it. If not, is it meant to be released some day?
Bower is currently not a public project on GitHub but will be released sometime soon as open-source. Watch this space : )
Addy, you da man for posting this, so very informative. I’m afraid that I’m still in the dark ages of web development. I thought I knew a lot, but I’ve never heard of some of these libraries (e.g. Mocha, CoffeeScript, Jasmit). Can you point me towards a resource where I can learn about these new tools, or provide me with a list so I can research them myself? Would appreciate it *SO* much.
Here you go!:
Jasmine: http://net.tutsplus.com/tutorials/javascript-ajax/testing-your-javascript-with-jasmine/
Mocha: http://net.tutsplus.com/tutorials/javascript-ajax/better-coffeescript-testing-with-mocha/ (CS-specific)
CoffeeScript: http://arcturo.github.com/library/coffeescript/
Hi Addy,
sounds and looks great! Looking forward to test it.. Is there a release date?
One more thing: will scaffolding support customized folder layouts (will it be configurable)?
Hi Addy,
Is there any connection between Yeoman.io and backbone-aura?
No. This is a separate project.
Will the core tools run on Linux?
Is Windows supported?
We’re initially going to aim for OSX support with Windows support hopefully coming in a future release.
Looks very promising.
where can I watch the Paul Irish talk in Google IO?
http://youtube.com/watch?v=Mk-tFn2Ix6g
Awesome advice, whether you are using Sublime or not.
BTW Addy – your shirt was on backwards.
I’ll have to get that fixed next time ; )
Hi Addy,
very lovely project. I would love to see a way to get up a prototyper ready to go.
I mean a complete package of single webapp for just prototyping. ?
thank you again for this huge amount of information.
Very Inspirational.
Looks really awesome,
but I have a question about the setup process in yeoman. I really like stripped-html5bp and bootstrap, but for most of my projects, I use my own modified base with the best of both builds. So is there an option to get user builds aside of these two?
Thank you in advance!
Will this be a front-end framework that I can use within a PHP, Ruby, etc. project? I want to use all these tools without writing the integrations myself, but my applications tend to be written in PHP using some other RESTful framework.
It would be nice if this project could be restricted to a single directory within another framework’s directory, not think that it’s running off of a NodeJS server, and just let me optimize my scripts and create a thick-client that will communicate with my PHP app.
I’m curious about the name choice ‘Yeoman’ and how to pronounce it
Nice work too!
I can’t wait for the release of yeoman! I’m been working with my own parallel scaffolding, but I think this will bring everything into greater focus, clarity and way more streamlined. Definitely looking forward to it!
Thanks for sharing this wonderful tool.Is there is way to integrate Yeoman with Maven or Ant.
As Yeoman comes with it’s own end to end stack for scaffolding and building apps, it removes the need to use Maven or Ant. You should be able to replace your existing Ant-based build process with it.
Yeoman looks great. I can’t wait to use it in my projects! Any rough idea when it’ll become available?
We’re aiming for the end of this month
Thanks Addy, looking forward to it!
Good luck
Yeoman seems to be epic!
It would be nice if it could also compile Stylus to CSS.
Yeah, nice tool,
best wishes
Ron
I think grunt-contrib is probably worth a mention amongst your grunt resources
Looking forward to this.
WoW.. this is very good stuff. Thanks a lot!
Hi Addy,
Do you have any update on release date yet? No pressure… just keen to give it a run.
Good luck!
We’ve opened up the private beta, so if you’d like access just feel free to let us know your GitHub username
Hi Addy,
I’m interested in checking this out. My github username is doowb.
Let us know when the Windows support drops!
Sure thing. We’re hoping to get one or two Microsoft contributors involved to help get Windows support in place.
Looks very good, we’re (some friends and I) are actually starting a new project and this really seems to be fitting (it’ll be a location-based game written in Node on Android).
Any chance when I’d be able to try it out? (github user: puredevotion, but it’s practically empty)
Addy, looks very interesting. I’m part of a small team that would love to take you up on that private beta invite! Github username is jonschlinkert
Pingback: The Best Mac Web Development Tools | Montes' coding blog
Pingback: Workflow и инструменты frontend-разработки
Pingback: Workflow and Frontend Development Tools
I love Sublime Text 2 !
I think that Google should buy it and open source it.
When you buy ST2, you can hire Jon Skinner at the same time
This will be a win-win transaction !
Please, do this !!!
Thanks for your video.