Giter Site home page Giter Site logo

marviq / generator-bat Goto Github PK

View Code? Open in Web Editor NEW
2.0 9.0 0.0 2.25 MB

Backbone based web application generator for Yeoman

License: BSD 3-Clause "New" or "Revised" License

CoffeeScript 56.45% JavaScript 32.77% HTML 2.37% Shell 0.50% Sass 2.70% SCSS 0.16% Handlebars 5.05%
coffeescript yeoman backbone webapp handlebars grunt yuidoc browserify scaffold yeoman-generator

generator-bat's Introduction

BAT, the Backbone Application Template

npm version David dependency drift detection

A Yeoman generator collection created by marviq.

Ever got tired of having to scaffold your new webapp projects over and over again? Moan no more; Yeoman and BAT will do it for you!

Getting Started

What is Yeoman?

Trick question. It's not a thing. It's this guy:

Basically, he wears a top hat, lives in your computer, and waits for you to tell him what kind of application you wish to create.

Not every new computer comes with a Yeoman pre-installed. He lives in the npm package repository. You only have to ask for him once, then he packs up and moves into your hard drive. Make sure you clean up, he likes new and shiny things.

[sudo ]npm install -g yo

Yeoman Generators

Yeoman travels light. He didn't pack any generators when he moved in. You can think of a generator like a plug-in. You get to choose what type of application you wish to create, such as a BAT webapp.

To install BAT from npm, run:

[sudo ]npm install -g generator-bat

Finally, initiate the main app generator:

yo bat

Its subs:

yo bat:view
yo bat:model
yo bat:collection
yo bat:api

Or, if you want a head start, even:

yo bat:demo

The Finer Print

Why BAT?

With BAT you can immediately start developing your application instead of worrying about getting your project set up first. The main app generator will provide you with the following out of the box:

To scaffold out a new project like that, simply run:

yo bat

Yeoman will ask you some questions, set everything up and install dependencies for you. Wait a bit for him to complete this and you're all set to go.

Additionally, Yeoman can:

  • Provide you with a demo webapp implementation showcasing the BAT. It is also possible to get this at a later instant through yo bat:demo;

Sub-generators

BAT also comes with sub-generators that scaffold out new Backbone models, collections and views.

For each of these Yeoman will deliver a neat set of files, set up, YUIDoc code documentation pre-filled and integrated into existing code for as far as he dares to.

View

yo bat:view

Placed into the src/views directory, Yeoman will provide you with *some-view-name*.coffee and *some-view-name*.hbs files, respectively containing the class definition for the *SomeViewName*View and its handlebars template.

Additionally, Yeoman can:

  • Create a _*some-view-name*.sass file into the src/sass/views directory and insert an @import for it into src/sass/_views.sass;

Note that for so-called routed views, you would probably want to incorporate this view into your webapp's main router.coffee. Yeoman would have liked to do this for you too but is too afraid to break your code, so he doesn't.

Model

yo bat:model

Yeoman will provide you with a *some-model-name*.coffee file containing the class definition for *SomeModelName*Model and place it into the src/models directory.

Optionally, Yeoman can:

  • Cause a singleton instance of the model to be exported instead of the class itself;

Collection

yo bat:collection

Yeoman will provide you with a *some-collection-name*.coffee file containing the class definition for *SomeCollectionName*Collection and place it into the src/collections directory.

Furthermore, Yeoman can:

  • Also create the model for this collection;
  • Cause a singleton instance of the collection to be exported instead of the class itself;

Api

yo bat:api

An API is an instance of the BAT provided ApiServicesCollection which lives in the src/apis/ section of your project map. Its purpose is, in essence, to have a convenient way to organize the endpoint urls of a backend API's services relative to the common base-url defined for that API.

Demo

BAT also comes packed with a demo webapp implementation showcasing its features. To get this, either answer yes to the relevant prompt from an initial yo bat run, or when you answered no there earlier, invoke:

yo bat:demo

Note: that the latter will result in a few clashes with some of the files produced from the earlier yo bat run. These are however, caveat codor, harmless.

Grunt tasks

After you're all set up, you'll want to build your project; this is where Grunt comes in:

grunt dev

This will first do a development build (all builds will be assembled into the dist directory btw), and then enter a watch-for-changes -> re-build loop.

Grunt can do more than just that; here's a recap of common grunt idioms:

command description
grunt [default] shortcut for grunt dist unless the GRUNT_TASKS environment variable specifies a space separated list of alternative tasks to run instead;
grunt dist does a for-production, non-debugging, all-parts, tested, minified build plus artifacts;
grunt debug does a for-testing, debugging, all-parts except documentation, tested, as-is build;
grunt dev does a for-local, debugging, all-parts except documentation, as-is build;
(Note that this variant doesn't exit. Instead it'll keep a close watch on filesystem changes, selectively re-triggering part builds as needed)
grunt doc will build just the code documentation;
grunt lint will just lint your code;
grunt test will run your test suite;
grunt test:dev will run your test suite and will keep monitoring it for changes, triggering re-runs;
grunt --help will show you all of the above and the kitchen sink;

Documentation

For both building and then launching the code documentation in your browser, BAT also supplies this convenient shortcut:

npm run doc

Unit tests

BAT comes with support for unit testing using Karma, Jasmine and PhantomJS.

Unit testing is an integrated build step in both dist and debug build runs, but can also be run independently as:

grunt test

And as watched, continuous test runs as:

grunt test:dev

The latter invocation, while it is kept running, also offers the opportunity to launch a test suite run in any browser, simply by directing it to this url:

http://localhost:9876/debug.html

Do not forget to open your dev tools and browser console there!

Contributing

See CONTRIBUTING.

Changelog

See CHANGELOG for versions >0.1.27; For older versions, refer to the releases on GitHub for a detailed log of changes.

License

BSD-3-Clause

generator-bat's People

Contributors

cueedee avatar rthewhite avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

generator-bat's Issues

`yo bat` reports not ok.

Hi.
Installing the generator failed on my Mac. (running Mavericks)
Below is the relevant output from the install:
npm http 404 https://registry.npmjs.org/grunt-contrib-yuidoc-iq
npm ERR! 404 'grunt-contrib-yuidoc-iq' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404 It was specified as a dependency of 'windexchange-maps'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.

npm ERR! System Darwin 13.2.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/moakley/Sites/backbone/generator-bat
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.6
npm ERR! code E404

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.