The problem I have with optimist it that it provides no default usage statement (last time I checked). One of the big selling points of argument processors is that you can define the args and some descriptions so it will generate the usage statement. This cuts down of re-typing and errors. It also has the benefit of autocomplete tools being able to handle standard formats.
var optimist= require('optimist')
.alias({e:'email', hp:'homepage', a:'auto', '?':'help'})
.default('auto',true)
I'm not sure whether I like the usage pattern of this code, which uses promises to resolve argv's[2]. I'll investigate having optimist autogenerate a usage statement; that would be convenient both as a dev and as a user.
We've been using Optimist in house for a while, and are satisfied with it. Makes launching a bunch of different node processes with slightly different configurations pretty painless.