Eskimo helps you to rapidly build Node powered API's, online stores, and apps in general (known as "igloos"). Requires Node >= 0.10.x, Redis for sessions, and your choice of either Knex/Bookshelf (SQL) or Mongoose (MongoDB) for data.
- Sponsor
- Install
- Screencast
- Commands
- Examples
- Free Stickers
- Tests
- Conventions
- Contributors
- Credits
- License
npm install -g eskimo
The wiki is the main source for additional documentation.
TODO: Basic screencast here
Bundled with the CLI are simple commands and options.
eskimo --help
Usage: eskimo [options] [command]
Commands:
create <dirname> create a new igloo
model <name> create a new model
view <name> create a new view
controller <name> create a new controller
mvc <name> create a new model, view, and controller
Options:
-h, --help output usage information
-V, --version output the version number
-N, --no-update-notifier disable update notifier
-T, --no-tracking disable anonymous tracking
Once you've created an igloo, see the generated Readme.md file.
Usage samples:
# To create a new igloo in `./awesome`:
eskimo create awesome
# To create a new model, views, and controller (with routes and tests) for "tags", in `./app/views/tags/*.jade`, `./app/models/tag.js`, `./app/controllers/tags.js`, `./app/routes/tags.js`, and `./test/99-tags.test.js`:
eskimo mvc tag
# Note: You could write "tags" as well (no quotes necessary if there are no spaces)
# To create a new controller (with routes and tests) in `./app/controllers/user-settings.js`, `./app/routes/user-settings.js`, and `./test/99-user-settings.test.js`
eskimo controller 'user settings'
# Note: You could write "user-settings" as well (no quotes necessary if there are no spaces)
Please read Igloo's documentation for more information. or your created igloo's
Readme.md
.
- Launching Soon Page
- Stripe-powered Store
- RESTful API
- Zero-downtime Reloads
- Referral System
- Facebook & Google Log In
- Webhook Deploys
- CDN-hosted Assets
Want a free Eskimo snow shoes sticker? Just submit this form.
To run tests you'll need to have configuration set up. Config lives under /boot/config.js
(as stated before). To quickly and dirty set your configuration you can run something like:
var _ = require('underscore');
var _str = require('underscore.string');
_.mixin(_str.exports());
var path = require('path');
var fs = require('fs');
var templates = path.join(__dirname, 'templates');
var Chance = require('chance');
var dirname = './';
var configPath = path.resolve(path.join(dirname, 'boot', 'config.js'));
fs.readFile(path.join(templates, 'boot', 'config.js'), 'utf8', function(err, data) {
if (err) {
console.error(err);
}
data = _.template(data)({
name: path.basename(dirname),
chance: new Chance()
});
fs.writeFile(configPath, data);
});
Running that in the root of the project will generate a base config.js which you can then tune.
npm install -d
npm test
Assets refer to static files (scripts, stylesheets and other assets) placed in assets/public. To build a production version of your app:
gulp build
Note: This will minify all assets and create a /dist folder optimized and ready for deployment.
List of tasks executed during gulp build
:
- Automatic LESS processing
- Automatic install of Bower packages
- Automatic images minification
- Automatic
usemin
implementation (concat, rev, ...)
Below is an example of a JADE file using usemin
blocks:
//- #layout
...
//- build:js /js/app.js
block scripts
script(src='/bower/jquery/dist/jquery.js')
script(src='/bower/bootstrap/dist/js/bootstrap.js')
script(src='/bower/bootbox/bootbox.js')
script(src='/js/plugins.js')
script(src='/js/main.js')
if settings.facebook.enabled
script(src='/js/fb-appended-hash-bug-fix.js')
//- endbuild
After, running gulp build
the file will be optimized:
//- #layout
...
script(src='/js/app-316568f4.js')
See nifty-conventions for code guidelines, general project requirements, and git workflow.
- Snow Shoes by Marc Serre from The Noun Project
- ESKIMO IGLOO (color palette)