node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »


choo-cli npm Build Status MIT Licensed

This is a tool for generating choo apps.


To Install (you'll need at least node v6):

npm install choo-cli -g

Using choo-cli will scaffold out a project and help generate additional files like models, pages, and elements. It also generates common scripts you can use to build/test/serve your choo app.

# generate a new project folder, 
# comes with package.json, readme, and recommended structure 
choo new my-new-project
# generate a new page 
choo generate page my-new-page
# generate a new model 
choo generate model my-new-model
# generate a new element 
choo generate element my-new-element
# run your app at localhost:8080 
npm start
# build your app for production 
npm run build:prod
# test your app 
npm test


Choo-cli runs off of node and npm, you can install choo-cli globably with the following command:

The basic signature of a choo-cli command look like this:

$ choo <command> <name> [options]

For example to create a new project skeleton we can run:

$ choo new my-project

You can now cd into my-project

cd my-project

Choo-cli will create a directory structure that we've found to be optimal for slim applications and reusability.

assets/        images and fonts, if you have any
elements/      standalone application-specific elements
lib/           generalized components, should be moved out of project later
models/        choo models
pages/         views that are directly mounted on the router
scripts/       shell scripts, to be interfaced with through `npm scripts`
client.js      main application entry; programmatic manifest file
package.json   manifest file

Custom templates

You can also install custom templates from Github, like this

$ choo new <project> from <github-user>/<github-repo>

Custom templates must have ejs templating syntax.

List of Generators

You can find a list of existing generators here.


You can use choo-cli to generate pieces of your project as you are developing. For example you can generate


$ choo generate page my-page


$ choo generate model my-model


$ choo generate element my-element

npm scripts

Choo-cli was made for generating choo projects and code, and leverages npm scripts for certain project task. So in our project a set of npm scripts have already been generated that perform various tasks such as testing/serving/building/etc.

At any time you can review the complete list of npm scripts available by viewing package.json or by running the following command:

$ npm run

Here is complete list the the commands and their function

  • start - start dev server at localhost:8080
  • build:prod - builds your project to deploy to a server
  • test - runs unit tests, for now it will just run linting.
  • lint - runs eslint against your code

So for example you can run npm start to start a dev server. You can now see your app running at localhost:8080 first time this will pull in your node deps and start a budo server