For Meteor 1.2+ and Node v5.4.0+.
An opinionated command line utility for quickly creating Meteor projects.
npm install -g space-kitty
mpm install -g space-kitty kitty meow kitty create MyProject cd MyProject meteor
- CamelCase file names and class names (except for migrations, which are timestamps and dashed)
- React is used for views
- Namespaced components are the norm
- Automatic BEM classnames
- Flow Router for routing
- percolate:migrations for data migrations
- There is no reason to pick CamelCase over dash delimited. However, much of the community uses CamelCase.
- Migrations are dashed because of the timestamp that proceeds them.
- React is a very thin and flexible view layer.
- Blaze is being deprecated by MDG.
- BEM is used to keep in the spirit of React styles.
- BEM keeps a shallow hierarchy, making CSS faster to render.
- SCSS is used due to the shortcomings of inline React styles, namely psuedo-selectors and media queries are not supported.
- Materialize is included by default, feel free to swap this out with no repercussions.
- Flow Router is preferred over Iron Router within the Meteor community.
- Percolate migrations were chosen due to their popularity and simplicity.
Make sure you have the CLI installed correctly, should just print
Meow to the stdout.
kitty create ProjectName
This command will copy the project scaffolding into
kitty make:collection [Namespace] CollectionName [--self-publishes] [--with-schema] [--local] [--class]
This command will create a Mongo Collection:
lib └──collections └──[Namespace] └── CollectionName.js
kitty make:command [Namespace] CommandName [--server|client|(both)]
This command will create a command (defaults to both a client and server):
lib └──commands └──[Namespace] └── CommandName.js
You can then call your command using
dispatch(CommandName, arg1, arg2) or
dispatchAsync(CommandName, arg1, arg2, callback);.
kitty make:meteor-method [Namespace] MethodName
This command will create a new file containing a single Meteor method.
server └──methods └──[Namespace] └── MethodName.js
The side-effect of using this command is that you will have many different files with one Meteor method in each of them, which is different than how most developers are used to writing Meteor methods.
kitty make:migration [Namespace] MigrationName
This command will create a Migration using percolate:migrations:
server └──migrations └──[Namespace] └── timestamp-migration-name.js
Migrations are automatically versioned by the timestamp of when they were created.
The migration package and project scaffolding will not be created until you create your first migration. The
.meteor/packages files will have
percolate:migrations added to it if does not already exist.
server/RunMigrations.js will automatically be created if it does not already exist.
kitty make:view [Namespace] ViewName
This command will create a module consisting of:
client └──components └──[Namespace] └── ViewName ├── ViewName.jsx └── _ViewName.scss
It will also add an import statement to
client/styles/main.scss to import your new
Space Kitty is there for you by having reminders on how to do common stuff: