Announcing Yeoman 1.0 beta 4
addyosmani.com
addyosmani.com
I've got deep respect for the authors, but I've had a pretty miserable experience with Yeoman so far, even after giving it another try this morning. In particular:
* Using the web app generator seems to download an absurd number of dependencies every time. It takes minutes to download everything to start a simple app, about as long as it takes me to install Rails from scratch on the same system.
* After generating an app, I've yet to be able to actually run grunt on the result ... it always errors out with something. If it's not a jshint warning that causes it to abort, it's a Compass warning.
One of the great joys of writing HTML5 + Javascript apps is that the experience tends to feel clean and unencumbered. So far, Yeoman has done nothing but make my workflow much more complex and error-prone. Things just feel ... rickety. At the end of the day, I gave up and used Initializr [1] to start the app. Didn't even want to bother trying out Brunch [2], I was so frustrated.
I wanted to love it and I know there are folks out there who've had great luck with Yeoman; hopefully some of them can chime in to tell me what I'm missing.
[1] http://www.initializr.com/
[2] http://brunch.io
Ironically
*CoincidentallyEither way, excited to see this kind of community development. Great work on Yeoman, excited about its potential.
A similar story could be applied to any of the technologies that Yeoman attempts to wrangle.
Yes I am quite aware that I could write my own generator to do all this for me. That is not the point.
I agree that what Yeoman aims to do could be useful for some. I am just pointing out that most people I work with have outgrown boilerplate solutions, as have I. I think many people will have a similar experience.
Yeoman is tooling and workflow concepts, take what you need, leave what you don't. Best of all fill any gaps with your specific needs.
Yeoman pursues package management through Bower. This can be done with our without Yeoman but the reality is front end package management is still a relatively new concept but one all developers should be latching onto sooner than later.
Yeoman pursues workflow tooling through Grunt. Many lack an understanding of what Grunt is and how it impacts your workflow but for me it was revolutionary.
Yeoman generators give you starting points for your front end assets but aren't intended to be more than staring points for concepts within your application (eg. I need a new controller). If these generators fail to meet your needs for a specific project or your overall project workflow, author ones that do. They also pull together tasks you would typically handle manually (eg. I created a new-controller.js now I need to add that script tag to my index and setup some unit tests).
Yeoman is a lot of things but doesn't claim to be a boilerplate for any one thing.
Whether or not you use Yeoman, I encourage everyone to dig through it and get a complete understanding of what it is and how it attempts to improve the efficiency of your workflow and tooling. You can apply these concepts to your own custom workflow or build a custom one based on theirs.
but what yeoman primarily is, is a rails-inspired generator system and you can personalize it and build up your own collection of generators. for that it works quite well and better than grunt's own which is simpler.
for instance I'm about to write one that clones compass-bootstrap and creates a _variables.scss and a screen.scss and a test page and hooks up guard reload into a grunt watch task. so I can then live tweak a bootstrap setup while looking at my example page (with all elements( and easily comment out all the features I don't want for a given site.
other simple generators do things like create a single bootstrap model.
or you could have your own personal reset and .scss libs and clone or copy them into any project.
you can write your own using the generator that generates default generators. build up your personal collection.
The core team has engaged the dev community and identified how people are working, what tooling they use and what pain points they experience. Yeoman serves to centralize workflow and tooling and ease those pain points. The generators are very useful as well and extensible.
Again, Yeoman may not be right for everyone but I would be interested to know more about your workflow and tooling and contrast it to some of the concepts pursued. This feedback would be useful to those considering Yeoman.
I can see the usefulness, but when I try to use it, it just feels like it has a steep learning curve and I could better invest my time elsewhere.
I use node heavily, and setting up the project, `npm install express` and a few other libraries, only takes a few seconds. I can start writing code quickly. I also don't create new projects that often, but I can't imagine most people are daily creating new projects.
At work we have our own django bootstrap that we can easily hack on and clone.
I can't say exactly why it doesn't fit my use case, but it just doesn't feel right for some reason. It has a ton of dependencies. I don't see why I shouldn't just use grunt and bower directly, etc etc.
Yeoman no longer attempts to be a wrapper for things like Bower and Grunt but rather concedes their usefulness while keeping them separate. Use it how you see fit.
What is great about Yeoman is it really gets you thinking about your end-to-end process for front end application and asset development and provides you some great avenues to pursue in both tooling and workflow. From asset creation, unit/end-to-end testing and build process it's rather complete in concept.
Is Yeoman for everyone? That's entirely up to the developer. Anyone worth his/her weight will certainly be pursuing these concepts in their own workflow whether with Yeoman or without.
"Once people reach a certain level of competence it's going to be quicker and/or easier to set things up themselves." Could you be a bit more specific as to what they will outgrow? Evolve maybe, but I personally will only shelf my usage of Bower and Grunt tooling if something makes more sense in my workflow.
Are people using Yeoman apps in production? How does it work deploying them & handling load etc etc? I'm assuming that Yeoman is more useful than just toy projects?
The default generator is a one page webapp and that makes everybody think that that is what yeoman is, but there are many more:
https://github.com/search?q=yeoman+generator&ref=cmdform
65 repos there