123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 'use strict';
- var Compiler = require('./lib/compiler');
- var Appender = require('./lib/appender');
- var fs = require('fs');
- module.exports = function(grunt) {
- var bootstrapper = function(module, script, options) {
- return options.angular+".module('"+module+"'"+(options.standalone ? ', []' : '')+").run(['$templateCache', function($templateCache) {\n"+script+"\n}]);\n";
- };
- var ngtemplatesTask = function() {
- var options = this.options({
- angular: 'angular',
- bootstrap: bootstrapper,
- concat: null,
- htmlmin: {},
- module: this.target,
- prefix: '',
- source: function(source) { return source; },
- standalone: false,
- url: function(path) { return path; },
- usemin: null,
- append: false
- });
- grunt.verbose.writeflags(options, 'Options');
- this.files.forEach(function(file) {
- if (!file.src.length) {
- grunt.log.warn('No templates found');
- }
- var expanded = file.orig.expand;
- var cwd = file.orig.expand ? file.orig.cwd : file.cwd;
- var compiler = new Compiler(grunt, options, cwd, expanded);
- var appender = new Appender(grunt);
- var modules = compiler.modules(file.src);
- var compiled = [];
- for (var module in modules) {
- compiled.push(compiler.compile(module, modules[module]));
- }
- if (options.append){
- fs.appendFileSync(file.dest, compiled.join('\n'));
- grunt.log.writeln('File ' + file.dest.cyan + ' updated.');
- }
- else{
- grunt.file.write(file.dest, compiled.join('\n'));
- grunt.log.writeln('File ' + file.dest.cyan + ' created.');
- }
-
- if (options.usemin) {
- if (appender.save('generated', appender.concatUseminFiles(options.usemin, file))) {
- grunt.log.writeln('Added ' + file.dest.cyan + ' to ' + ('<!-- build:js ' + options.usemin + ' -->').yellow);
- }
- }
- if (options.concat) {
- if (appender.save(options.concat, appender.concatFiles(options.concat, file))) {
- grunt.log.writeln('Added ' + file.dest.cyan + ' to ' + ('concat:' + options.concat).yellow);
- }
- }
- });
- };
- grunt.registerMultiTask('ngtemplates', 'Compile AngularJS templates for $templateCache', ngtemplatesTask);
- };
|