Awesome
Mantri
Traditionaλ JS Dependency System.
Mantri helps you manage your application's dependencies.
Visit http://mantrijs.com
Attention 0.1.x The current 0.2.x version brings some rather breaking changes. Read the migration guide for more information.
WARNING NOT MAINTAINED
MantriJS is no longer actively maintained. We'd suggest you use browserify for your frontend packaging needs.
Mantri is...
- ✓ A Robust and discreet Dependency Management System.
- ✓ Synchronous. Everything is done before DOMContentLoaded event triggers.
- ✓ A Grunt plugin.
- ✓ A command line tool.
- ✓ Cross-browser.
Mantri does not...
- ✗ Dictate how you write your code. Vanilla JS, AMD, commonJS, knock yourselves out.
- ✗ Need any runtime on your production file.
- ✗ Need any dependency declarations in your production file.
- ✗ Have any problem moving around JS files or folders.
- ✗ Have any problem working with other dependency systems.
- ✗ Polute your namespace. But you are free to if you want.
Getting Started
Mantri consists of the Web Runtime and the Command Line Tools. The Web Runtime's job is to load the files of your application during development. The Command Line Tools perform various tasks like building your application and calculating dependencies.
Install
In order to get started, you'll want to install Mantri's command line interface (CLI) globally. You may need to use sudo (for OSX, *nix, BSD etc) or run your command shell as Administrator (for Windows) to do this.
npm install -g mantri-cli --silent
This will put the mantri
command in your system path, allowing it to be run from any directory.
Note that installing mantri-cli
does not install the mantri library! The job of the mantri CLI is simple: run the version of mantri which has been installed in your application. This allows multiple versions of mantri to be installed on the same machine simultaneously.
On your project, install the mantri library localy:
npm install mantri --silent --save-dev
Read the Getting Started Guide for a more detailed introduction.
Two things to keep in mind
-
Every time you edit or create a dependency declaration you need to run the
mantriDeps
task or themantri deps
command to re-calculate your dependencies. -
Mantri is not meant to be used on your production environment. Whenever you want to deploy your app use the
mantriBuild
task or themantri build
command to bundle and minify your application into one file.
The Web API
Each file should provide a unique namespace and can require any number of other namespaces:
goog.provide('app');
goog.require('app.router');
goog.require('app.controller');
goog.require('app.view');
Read more about the web API in this wiki page
Dependencies
Google Closure Tools have a couple dependencies, which are reasonable enough for any developer:
- Node Node.js 0.8.0 or later.
- Java Java 1.6 or later.
- Python Python 2.7.
Hands On
The classical ToDo MVC application has been refactored to use the Mantri Dependency System. You can find the repo here, or clone it:
git clone git@github.com:closureplease/todoAppMantri.git
Full Documentation
... can be found in the wiki or view the same on a more cozy web version at mantrijs.com
Start with the Getting Started Guide for a more detailed introduction.
Release History
- v0.2.3, 26 Feb 2015
- Upgraded all packages to latest.
- v0.2.2, 11 Nov 2013
- The web component will now warn if
mantriConf.json
could not be loaded.
- The web component will now warn if
- v0.2.1, 5 Nov 2013
- Added feature to use Closure Library in the codebase. Use the key
closureLibrary
and set the path.
- Added feature to use Closure Library in the codebase. Use the key
- v0.2.0, 4 Nov 2013 Breaking Changes Read the migration guide.
- New Feature: Can now build multiple targets (Built-Modules).
- Added support for SourceMaps, available through the
sourceMapFile
key. - Changed
mantriConf.json
keys:baseUrl
-->jsRoot
libs
-->vendorLibs
build.input
-->build.src
build.exclude
-->build.excludeVendor
- New key:
buildModules
- Changed format of
outputWrapper
, now uses Closure's pattern. - New experimental key
_noCompile
, to not perform any compilation steps. - Published web component on Bower repo.
- v0.1.5, 13 May 2013
- Fix bug in Firefox. Not a permanent fix, issue will remain open, bugzilla issue created.
- v0.1.1, 12 Apr 2013
- Bug fixes on web component for IE6,7,8,9
- v0.1.0, 03 Apr 2013
- First stable version
- Added CLI support
- v0.0.1, Mid Feb 2013
- Big Bang