Meanie is a boilerplate for developing, testing and building full-stack modular javascript applications using MEAN (MongoDB, Express, AngularJS and Node.js). Meanie is powered by the Gulp task runner.
This package contains the Meanie CLI tool which can be used to create new Meanie projects and install other Meanie modules. For more information about the boilerplate itself, please check the Meanie Boilerplate GitHub repository or the Meanie Boilerplate npm page.
Installation
# Install meanie CLI globally
npm install -g meanie
Usage
1. Create a new Meanie project
meanie create AppName
This will install the following core Meanie module(s):
2. Install any additional modules you'd like
meanie install angular-storage angular-api
To find out what Meanie modules are available, check Meanie on github or find Meanie modules in the npm registry.
3. Build and run the app!
gulp
4. Advanced features
# Create a local environment file
meanie env
# Create a new named environment
meanie env pre-prod
Gulp tasks
Meanie comes with fully configured Gulp tasks for all common development and build tasks.
Note: The gulpfile for Meanie has been configured for use with Gulp version 4. This version is not officially released yet, but you can install and use the alpha version by following these instructions.
Default
The default task, which you can run by simply typing gulp
is to run the three main tasks, build, watch and start. This is perfect for ongoing development.
$ gulp
You can also run these tasks individually if needed.
Build
Build the application and populate the public folder with compiled javascript, stylesheets and static assets. The build task also lints your files and runs your tests prior to building.
$ gulp build
Watch
Watch your files for changes and runs linters, unit tests and recompiles the application files as needed.
$ gulp watch
The watch task also comes with livereload, which gets triggered every time the index file is rebuilt. To use it, simply install the Chrome livereload plugin.
Start
Starts the Node server using Nodemon.
$ gulp start
Testing
You can test your client and server side code without building by using one of the following tasks:
# Test server side code and client side code
$ gulp test
# Test server side code
$ gulp test-server
# Test client side code
$ gulp test-client
Versioning
There are three versioning tasks which help you bump your version numbers in your package files and automatically update the version in your README file, as well as commit the bump to the repository and tag it with the new version.
This process uses semantic versioning.
# Bump the patch version (0.1.0 -> 0.1.1)
$ gulp patch
# Bump the minor version (0.1.0 -> 0.2.0)
$ gulp minor
# Bump the major version (0.1.0 -> 1.0.0)
$ gulp major
Helpers
Some of the helper tasks have also been exposed to the CLI:
# Cleans the public folder
$ gulp clean
# Copy all static assets to the public folder
$ gulp static
FAQ
How is Meanie different from other MEAN boilerplates?
The most important difference between Meanie and other MEAN boilerplates like MEAN.JS, is that Meanie uses a modular approach to folder/file structuring, whereas most others use more of a "sock drawer" approach to organizing files. Meanie thinks that a modular approach is easier to navigate, easier to reuse/refactor, and easier to develop with.
Other differences are:
- Meanie uses Gulp 4 as it's task runner instead of Grunt.
- Meanie doesn't serve the Angular HTML files as views, but instead leverages powerful Gulp tasks to compile and pre-process these files.
- Meanie has a simple overarching environment/configuration system that makes it a breeze to use your specific environment configuration options in your server app, client app, and even in your gulpfile and Karma configuration file.
Why can't I install the boilerplate with npm?
Unfortunately, npm currently doesn't support moving package code outside of the node_modules
folder. Since the Meanie boilerplate has to reside in your project folder and not in node_modules
, it was necessary to circumvent this limitation by creating a custom CLI tool.
The Meanie CLI tool can install front-end or full-stack packages and copy files over to your project directory, or to your bower_components directory, while also updating bower.json dependencies for you.
Why doesn't Meanie use Yeoman?
Yeoman prescribes a particular folder structure (e.g. must have /app in your root), whereas Meanie likes to split your code between server/ and client/ first.
What if I want to use different server architecture?
Just delete the server
folder and replace it with whatever you'd like to use. You can use backend mocks for the client application by installing the Meanie Backend Mocks module.
What if I want to use different client architecture?
The Meanie client app is built on the AngularJS framework. If you want to use a different framework, it is recommended you find a different boilerplate, suited for that specific framework.
Issues & feature requests
Please report any bugs, issues, suggestions and feature requests in the appropriate issue tracker:
Feedback in general is also welcome!
Roadmap
Please check ROADMAP.md to see what the future of Meanie looks like and what we're currently working on.
Contributing
If you would like to contribute to Meanie, please check out CONTRIBUTING.md.
Further reading
Credits
License
(MIT License)
Copyright 2015, Adam Buczynski