grunt-ng-modules
An opinionated plugin for organizing Angular source code
Allows devs to modularize their Angular code and separate it from distribution .js and .css files.
Module Structure
This plugin deals with Angular modules in a very strict way. Below is the recommended folder structure to be used in conjunction with the plugin
|-- /angular/modules (call this one whatever you want)
|-- /module-one
`-- /module-two
|-- module.js
|-- routes.js
|-- /providers
|-- /services
|-- /controllers
|-- /views
`-- /directives
|-- /directive-one
`-- /directive-two
|-- directive-two.js
|-- directive-two.css
`-- directive-two.html
In order to use this plugin you must have:
- A folder for every module (the name of the folder is the name of the distribution files)
- A
module.js
for every module (this must contain your module declaration, ie:angular.module('my-module', [])
);
Getting Started
This plugin requires Grunt ~0.4.5
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-ng-modules --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt;
The "ng_modules" task
Overview
In your project's Gruntfile, add a section named ng_modules
to the data object passed into grunt.initConfig()
.
grunt;
Options
options.minify
Type: Boolean|String|Object
Default value: false
Whether or not to create minified (.min.*
) versions of the distribution files.
Can also be a string 'only'
. If this is the value, only minified version of the files will be created.
Can also be an object, which allows you to specify .css
and .js
separately
minify: {
css: 'only,
js: true
}
options.jsDir
Type: String
Default value: ''
The name of the directory where all .js
files are copied to (appended to target.dest
)
options.cssDir
Type: String
Default value: ''
The name of the directory where all .css
files are copied to (appended to target.dest
)
options.viewDir
Type: String
Default value: 'html'
The name of the directory where all view (.html
) files are copied to.
options.cacheViews
Type: Boolean
Default value: false
If true - the plugin will create an Angular module (named templates.{module-name}
) and load all views for that module into the templateCache. This creates a new file, named {module-name}-templates.min.js
Targets
target.src
Type: String
Default value: ''
The source directory where all modules are stored.
target.dest
Type: String
Default value: ''
The destination directory where all distribution files should be created.
Usage Examples
grunt;
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
Release History
(Nothing yet)