Combine AngularJS partials into a single HTML file.
This plugin is helpful for better performance in AngularJS template loading. You can use it to prepare templates for angular-combine.
This plugin requires Grunt ~0.4.1
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-angular-combine --save-devOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-angular-combine');In your project's Gruntfile, add a section named angularCombine to the data object passed into grunt.initConfig().
grunt.initConfig({
  angularCombine: {
    combine: {
      files : [ {
        cwd : 'app/modules',
        src : [ 'module1/foo.html', 'module2/woot.html' ],
        dest : 'tmp/combined/modules.html'
      } ]
    }
  }
})
// or
grunt.initConfig({
  angularCombine: {
    combine: {
      files : [ {
        expand : true,
        cwd : 'app/modules',
        src : '*',
        dest : 'tmp/combined',
        filter : 'isDirectory'
      } ]
    },
  }
})The default process doesn't need any option but which folder or wich files should be processed.
Type: function Default: function(id) { return id; }
grunt.initConfig({
  angularCombine : {
    combine : {
      options : {
        processIdentifier : function(id) {
          // just use the files name without extension as identifier
          return id.split('/').pop().replace('.html', '');
        }
      },
      files : [ {
        expand : true,
        cwd : 'app/modules',
        src : '*',
        dest : 'tmp/combined',
        filter : 'isDirectory'
      } ]
    }
  }
})With the processIdentifier options, you can define the fragment id strategy. By default, with the following files structures :
* app/modules
  * module1/
    * module1-template1.html
    * module1-template2.html
    * module1-template3.html
you'll get those fragment id :
- module1/module1-template1.html
 - module1/module1-template2.html
 - module1/module1-template3.html
 
With the function defined into options (like the example above, you'll get :
- module1-template1
 - module1-template2
 - module1-template3
 
Type: boolean Default: true
grunt.initConfig({
  angularCombine : {
    combineWithoutComment : {
      options : {
        includeComments : false
      },
      files : [ {
        expand : true,
        cwd : 'test/fixtures',
        src : 'combineWithoutComment',
        dest : 'tmp/combined',
        filter : 'isDirectory'
      } ]
    }
  }
})
This will remove the comment at the begining of the compiled files.
This should be a problem as template would certainly be minified anyway later in the delivery process.
### Usage Examples
Imagine a file structure like this :- app/modules
- module1/
- module1-template1.html
 - module1-template2.html
 - module1-template3.html
 
 - module2/
- module2-template1.html
 - module2-template2.html
 
 
 - module1/
 
With this grunt config :
```js
grunt.initConfig({
  angularCombine : {
    combine : {
      files : [ {
        expand : true,
        cwd : 'app/modules',
        src : '*',
        dest : 'tmp/combined',
        filter : 'isDirectory'
      } ]
    }
  },
})
By using the filter isDirectory, the plugin will process all HTML files found into each directory of you selection. So that, you will get :
* tmp/combined
  * module1.html (containing the concatenation of module1-template1.html, module1-template2.html and module1-template3.html)
  * module2.html (containing the concatenation of module2-template1.html and module2-template2.html)
By defaults, it works in the current base directory.
You'll find all contributors on this contributors page
See the changelog =)
The project use grunt-release for its versionning an tag process.