.bin/docs.js
function (done) {
            async.series([
                function (next) {
                    var child = child_process.exec('jsdoc -c jsdoc.conf.json lib/');

                    child.stdout.on('data', function (data) {
                        console.log(data);
                    });

                    child.stderr.on('data', function (data) {
                        console.log('stderr: ' + data);
                        var err = new Error('error spawning: ', cmd);
                        console.log(err);
                        next(err);
                    });

                    child.on('close', function (code) {
                        if (code === 0) {
                            next();
                        } else {
                            next(new Error('error spawning:', cmd));
                        }
                    });
                },
                function (next) {
                    var cmd = util.format('cp -r doc/%s/%s/* doc/',
                        package.name,
                        package.version
                    );

                    var child = child_process.exec(cmd);

                    child.stdout.on('data', function (data) {
                        console.log(data);
                    });

                    child.stderr.on('data', function (data) {
                        console.log('stderr: ' + data);
                        var err = new Error('error spawning: ', cmd);
                        console.log(err);
                        next(err);
                    });

                    child.on('close', function (code) {
                        if (code === 0) {
                            next();
                        } else {
                            next(new Error('error spawning jsdoc'));
                        }
                    });

                },

                function (next) {
                    var cmd = 'rm -rf doc/'+package.name+'/';

                    var child = child_process.exec(cmd);

                    child.stdout.on('data', function (data) {
                        console.log(data);
                    });

                    child.stderr.on('data', function (data) {
                        console.log('stderr: ' + data);
                        var err = new Error('error spawning: ', cmd);
                        console.log(err);
                        next(err);
                    });

                    child.on('close', function (code) {
                        console.log('child process exited with code ' + code);
                        if (code === 0) {
                            next();
                        } else {
                            next(new Error('error spawning jsdoc'));
                        }
                    });
                }
            ], function (err, results) {

                if (err) done(err);
                else done();
            });
                
        }
function (done) {
            async.series([
                function (next) {
                    var child = child_process.exec('jsdoc -c jsdoc.conf.json lib/');

                    child.stdout.on('data', function (data) {
                        console.log(data);
                    });

                    child.stderr.on('data', function (data) {
                        console.log('stderr: ' + data);
                        var err = new Error('error spawning: ', cmd);
                        console.log(err);
                        next(err);
                    });

                    child.on('close', function (code) {
                        if (code === 0) {
                            next();
                        } else {
                            next(new Error('error spawning:', cmd));
                        }
                    });
                },
                function (next) {
                    var cmd = util.format('cp -r doc/%s/%s/* doc/',
                        package.name,
                        package.version
                    );

                    var child = child_process.exec(cmd);

                    child.stdout.on('data', function (data) {
                        console.log(data);
                    });

                    child.stderr.on('data', function (data) {
                        console.log('stderr: ' + data);
                        var err = new Error('error spawning: ', cmd);
                        console.log(err);
                        next(err);
                    });

                    child.on('close', function (code) {
                        if (code === 0) {
                            next();
                        } else {
                            next(new Error('error spawning jsdoc'));
                        }
                    });

                },

                function (next) {
                    var cmd = 'rm -rf doc/'+package.name+'/';

                    var child = child_process.exec(cmd);

                    child.stdout.on('data', function (data) {
                        console.log(data);
                    });

                    child.stderr.on('data', function (data) {
                        console.log('stderr: ' + data);
                        var err = new Error('error spawning: ', cmd);
                        console.log(err);
                        next(err);
                    });

                    child.on('close', function (code) {
                        console.log('child process exited with code ' + code);
                        if (code === 0) {
                            next();
                        } else {
                            next(new Error('error spawning jsdoc'));
                        }
                    });
                }
            ], function (err, results) {

                if (err) done(err);
                else done();
            });
                
        }
jsdoc