<commit_before>// Generated on 2013-08-07 using generator-angular 0.3.1
'use strict';
var LIVERELOAD_PORT = 8606;
var lrSnippet = require('connect-livereload')({ port: LIVERELOAD_PORT });
var mountFolder = function (connect, dir) {
  return connect.static(require('path').resolve(dir));
};
var modRewrite = require('connect-modrewrite');

// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'

module.exports = function (grunt) {
  // load all grunt tasks
  require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

  // configurable paths
  var yeomanConfig = {
    app: 'app',
    dist: 'dist'
  };

  try {
    yeomanConfig.app = require('./bower.json').appPath || yeomanConfig.app;
  } catch (e) {}

  grunt.initConfig({
    yeoman: yeomanConfig,
    watch: {
      sass: {
        files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
        tasks: ['sass', 'autoprefixer']
      },
      livereload: {
        options: {
          livereload: LIVERELOAD_PORT
        },
        files: [
          '<%= yeoman.app %>/{,*/}*.html',
          '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
          '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
          '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
        ]
      },
      styles: {
        files: ['{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css'],
        tasks: ['autoprefixer']
      }
    },
    autoprefixer: {
      dev: {
        files: {
          '.tmp/styles/main.css': '.tmp/styles/main.css'
        }
      }
    },
    connect: {
      options: {
        port: 8877,
        // Change this to '0.0.0.0' to access the server from outside.
        hostname: 'localhost'
      },
      livereload: {
        options: {
          middleware: function (connect) {
            var modRewrite = require('connect-modrewrite');
            return [
              modRewrite(['/api/(.*)$ http://horseback.variadic.me/api/$1 [P]']),
              lrSnippet,
              mountFolder(connect, '.tmp'),
              mountFolder(connect, yeomanConfig.app)
            ];
          }
        }
      },
      test: {
        options: {
          middleware: function (connect) {
            return [
              mountFolder(connect, '.tmp'),
              mountFolder(connect, 'test')
            ];
          }
        }
      },
      dist: {
        options: {
          middleware: function (connect) {
            return [
              mountFolder(connect, yeomanConfig.dist)
            ];
          }
        }
      }
    },
    open: {
      server: {
        url: 'http://localhost:<%= connect.options.port %>'
      }
    },
    clean: {
      dist: {
        files: [{
          dot: true,
          src: [
            '.tmp',
            '<%= yeoman.dist %>/*',
            '!<%= yeoman.dist %>/.git*'
          ]
        }]
      },
      server: '.tmp'
    },
    jshint: {
      options: {
        jshintrc: '.jshintrc'
      },
      all: [
        'Gruntfile.js',
        '<%= yeoman.app %>/scripts/{,*/}*.js'
      ]
    },
    sass: {
      options: {
        style: 'expanded'
      },
      dist: {
        files: {
          '.tmp/styles/main.css' : '<%= yeoman.app %>/styles/main.scss'
        }
      }
    },
    // not used since Uglify task does concat,
    // but still available if needed
    /*concat: {
      dist: {}
    },*/
    rev: {
      dist: {
        files: {
          src: [
            '<%= yeoman.dist %>/scripts/{,*/}*.js',
            '<%= yeoman.dist %>/styles/{,*/}*.css',
            '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
            '<%= yeoman.dist %>/styles/fonts/*'
          ]
        }
      }
    },
    useminPrepare: {
      html: '<%= yeoman.app %>/index.html',
      options: {
        dest: '<%= yeoman.dist %>'
      }
    },
    usemin: {
      html: ['<%= yeoman.dist %>/{,*/}*.html'],
      css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
      options: {
        dirs: ['<%= yeoman.dist %>']
      }
    },
    imagemin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '{,*/}*.{png,jpg,jpeg}',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    },
    svgmin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '{,*/}*.svg',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    },
    cssmin: {
      // By default, your `index.html` <!-- Usemin Block --> will take care of
      // minification. This option is pre-configured if you do not wish to use
      // Usemin blocks.
      // dist: {
      //   files: {
      //     '<%= yeoman.dist %>/styles/main.css': [
      //       '.tmp/styles/{,*/}*.css',
      //       '<%= yeoman.app %>/styles/{,*/}*.css'
      //     ]
      //   }
      // }
    },
    htmlmin: {
      dist: {
        options: {
          /*removeCommentsFromCDATA: true,
          // https://github.com/yeoman/grunt-usemin/issues/44
          //collapseWhitespace: true,
          collapseBooleanAttributes: true,
          removeAttributeQuotes: true,
          removeRedundantAttributes: true,
          useShortDoctype: true,
          removeEmptyAttributes: true,
          removeOptionalTags: true*/
        },
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>',
          src: ['*.html', 'views/*.html'],
          dest: '<%= yeoman.dist %>'
        }]
      }
    },
    // Put files not handled in other tasks here
    copy: {
      dist: {
        files: [{
          expand: true,
          dot: true,
          cwd: '<%= yeoman.app %>',
          dest: '<%= yeoman.dist %>',
          src: [
            '*.{ico,png,txt}',
            '.htaccess',
            'bower_components/**/*',
            'images/{,*/}*.{gif,webp}',
            'styles/fonts/*'
          ]
        }, {
          expand: true,
          cwd: '.tmp/images',
          dest: '<%= yeoman.dist %>/images',
          src: [
            'generated/*'
          ]
        }, {
          expand: true,
          cwd: 'app/bower_components/bootstrap/fonts',
          dest: '<%= yeoman.dist %>',
          src: [
            '*'
          ]
        }]
      }
    },
    concurrent: {
      server: [
        'sass',
        'autoprefixer'
      ],
      test: [
        'sass'
      ],
      dist: [
        'sass',
        'autoprefixer',
        'imagemin',
        'svgmin',
        'htmlmin'
      ]
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js',
        singleRun: true
      }
    },
    cdnify: {
      dist: {
        html: ['<%= yeoman.dist %>/*.html']
      }
    },
    ngmin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.dist %>/scripts',
          src: '*.js',
          dest: '<%= yeoman.dist %>/scripts'
        }]
      }
    },
    uglify: {
      dist: {
        files: {
          '<%= yeoman.dist %>/scripts/scripts.js': [
            '<%= yeoman.dist %>/scripts/scripts.js'
          ]
        }
      }
    },
    'ftp-deploy': {
      build: {
        auth: {
          host: 'ftpcluster.loopia.se',
          port: 21,
          authKey: 'key1'
        },
        src: 'dist/',
        dest: 'public_html/'
      }
    }
  });

  grunt.registerTask('server', function (target) {
    if (target === 'dist') {
      return grunt.task.run(['build', 'open', 'connect:dist:keepalive']);
    }

    grunt.task.run([
      'clean:server',
      'concurrent:server',
      'connect:livereload',
      'open',
      'watch'
    ]);
  });

  grunt.registerTask('test', [
    'clean:server',
    'concurrent:test',
    'connect:test',
    'karma'
  ]);

  grunt.registerTask('build', [
    'clean:dist',
    'useminPrepare',
    'concurrent:dist',
    'concat',
    'copy',
    'cdnify',
    'ngmin',
    'cssmin',
    'uglify',
    'rev',
    'usemin'
  ]);

  grunt.registerTask('deploy', [
    'build',
    'ftp-deploy'
  ]);

  grunt.registerTask('default', [
    'jshint',
    'test',
    'build'
  ]);
};
<commit_msg>Making sure /templates is in /dist :clock5:<commit_after>// Generated on 2013-08-07 using generator-angular 0.3.1
'use strict';
var LIVERELOAD_PORT = 8606;
var lrSnippet = require('connect-livereload')({ port: LIVERELOAD_PORT });
var mountFolder = function (connect, dir) {
  return connect.static(require('path').resolve(dir));
};
var modRewrite = require('connect-modrewrite');

// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'

module.exports = function (grunt) {
  // load all grunt tasks
  require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

  // configurable paths
  var yeomanConfig = {
    app: 'app',
    dist: 'dist'
  };

  try {
    yeomanConfig.app = require('./bower.json').appPath || yeomanConfig.app;
  } catch (e) {}

  grunt.initConfig({
    yeoman: yeomanConfig,
    watch: {
      sass: {
        files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
        tasks: ['sass', 'autoprefixer']
      },
      livereload: {
        options: {
          livereload: LIVERELOAD_PORT
        },
        files: [
          '<%= yeoman.app %>/{,*/}*.html',
          '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
          '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
          '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
        ]
      },
      styles: {
        files: ['{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css'],
        tasks: ['autoprefixer']
      }
    },
    autoprefixer: {
      dev: {
        files: {
          '.tmp/styles/main.css': '.tmp/styles/main.css'
        }
      }
    },
    connect: {
      options: {
        port: 8877,
        // Change this to '0.0.0.0' to access the server from outside.
        hostname: 'localhost'
      },
      livereload: {
        options: {
          middleware: function (connect) {
            var modRewrite = require('connect-modrewrite');
            return [
              modRewrite(['/api/(.*)$ http://horseback.variadic.me/api/$1 [P]']),
              lrSnippet,
              mountFolder(connect, '.tmp'),
              mountFolder(connect, yeomanConfig.app)
            ];
          }
        }
      },
      test: {
        options: {
          middleware: function (connect) {
            return [
              mountFolder(connect, '.tmp'),
              mountFolder(connect, 'test')
            ];
          }
        }
      },
      dist: {
        options: {
          middleware: function (connect) {
            return [
              mountFolder(connect, yeomanConfig.dist)
            ];
          }
        }
      }
    },
    open: {
      server: {
        url: 'http://localhost:<%= connect.options.port %>'
      }
    },
    clean: {
      dist: {
        files: [{
          dot: true,
          src: [
            '.tmp',
            '<%= yeoman.dist %>/*',
            '!<%= yeoman.dist %>/.git*'
          ]
        }]
      },
      server: '.tmp'
    },
    jshint: {
      options: {
        jshintrc: '.jshintrc'
      },
      all: [
        'Gruntfile.js',
        '<%= yeoman.app %>/scripts/{,*/}*.js'
      ]
    },
    sass: {
      options: {
        style: 'expanded'
      },
      dist: {
        files: {
          '.tmp/styles/main.css' : '<%= yeoman.app %>/styles/main.scss'
        }
      }
    },
    // not used since Uglify task does concat,
    // but still available if needed
    /*concat: {
      dist: {}
    },*/
    rev: {
      dist: {
        files: {
          src: [
            '<%= yeoman.dist %>/scripts/{,*/}*.js',
            '<%= yeoman.dist %>/styles/{,*/}*.css',
            '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
            '<%= yeoman.dist %>/styles/fonts/*'
          ]
        }
      }
    },
    useminPrepare: {
      html: '<%= yeoman.app %>/index.html',
      options: {
        dest: '<%= yeoman.dist %>'
      }
    },
    usemin: {
      html: ['<%= yeoman.dist %>/{,*/}*.html'],
      css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
      options: {
        dirs: ['<%= yeoman.dist %>']
      }
    },
    imagemin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '{,*/}*.{png,jpg,jpeg}',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    },
    svgmin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '{,*/}*.svg',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    },
    cssmin: {
      // By default, your `index.html` <!-- Usemin Block --> will take care of
      // minification. This option is pre-configured if you do not wish to use
      // Usemin blocks.
      // dist: {
      //   files: {
      //     '<%= yeoman.dist %>/styles/main.css': [
      //       '.tmp/styles/{,*/}*.css',
      //       '<%= yeoman.app %>/styles/{,*/}*.css'
      //     ]
      //   }
      // }
    },
    htmlmin: {
      dist: {
        options: {
          /*removeCommentsFromCDATA: true,
          // https://github.com/yeoman/grunt-usemin/issues/44
          //collapseWhitespace: true,
          collapseBooleanAttributes: true,
          removeAttributeQuotes: true,
          removeRedundantAttributes: true,
          useShortDoctype: true,
          removeEmptyAttributes: true,
          removeOptionalTags: true*/
        },
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>',
          src: ['*.html', 'views/*.html', 'templates/*.html'],
          dest: '<%= yeoman.dist %>'
        }]
      }
    },
    // Put files not handled in other tasks here
    copy: {
      dist: {
        files: [{
          expand: true,
          dot: true,
          cwd: '<%= yeoman.app %>',
          dest: '<%= yeoman.dist %>',
          src: [
            '*.{ico,png,txt}',
            '.htaccess',
            'bower_components/**/*',
            'images/{,*/}*.{gif,webp}',
            'styles/fonts/*'
          ]
        }, {
          expand: true,
          cwd: '.tmp/images',
          dest: '<%= yeoman.dist %>/images',
          src: [
            'generated/*'
          ]
        }, {
          expand: true,
          cwd: 'app/bower_components/bootstrap/fonts',
          dest: '<%= yeoman.dist %>',
          src: [
            '*'
          ]
        }]
      }
    },
    concurrent: {
      server: [
        'sass',
        'autoprefixer'
      ],
      test: [
        'sass'
      ],
      dist: [
        'sass',
        'autoprefixer',
        'imagemin',
        'svgmin',
        'htmlmin'
      ]
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js',
        singleRun: true
      }
    },
    cdnify: {
      dist: {
        html: ['<%= yeoman.dist %>/*.html']
      }
    },
    ngmin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.dist %>/scripts',
          src: '*.js',
          dest: '<%= yeoman.dist %>/scripts'
        }]
      }
    },
    uglify: {
      dist: {
        files: {
          '<%= yeoman.dist %>/scripts/scripts.js': [
            '<%= yeoman.dist %>/scripts/scripts.js'
          ]
        }
      }
    },
    'ftp-deploy': {
      build: {
        auth: {
          host: 'ftpcluster.loopia.se',
          port: 21,
          authKey: 'key1'
        },
        src: 'dist/',
        dest: 'public_html/'
      }
    }
  });

  grunt.registerTask('server', function (target) {
    if (target === 'dist') {
      return grunt.task.run(['build', 'open', 'connect:dist:keepalive']);
    }

    grunt.task.run([
      'clean:server',
      'concurrent:server',
      'connect:livereload',
      'open',
      'watch'
    ]);
  });

  grunt.registerTask('test', [
    'clean:server',
    'concurrent:test',
    'connect:test',
    'karma'
  ]);

  grunt.registerTask('build', [
    'clean:dist',
    'useminPrepare',
    'concurrent:dist',
    'concat',
    'copy',
    'cdnify',
    'ngmin',
    'cssmin',
    'uglify',
    'rev',
    'usemin'
  ]);

  grunt.registerTask('deploy', [
    'build',
    'ftp-deploy'
  ]);

  grunt.registerTask('default', [
    'jshint',
    'test',
    'build'
  ]);
};
<|endoftext|>


<commit_before>module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    // SASS is all about stylesheets
    sass: {
      dist: {
        options: {
          style: 'compressed'
        },
        files: {
          'source/css/style.min.css': 'source/css/style.scss'
        }
      },
      dev: {
        options: {
          style: 'expanded'
        },
        files: {
          'source/css/style.css': 'source/css/style.scss'
        }
      }
    },

    // Patternlab is build with the terminal
    shell: {
      buildPatternLab: {
        command: 'php core/builder.php -g'
      }
    },

    // Publish the public folder using gh-pages
    'gh-pages': {
      options: {
        base: 'public'
      },
      src: ['**']
    }

  });

  // Load the plugin that provides the "sass" task.
  grunt.loadNpmTasks('grunt-contrib-sass');
  // Load the plugin that provides the "shell" task.
  grunt.loadNpmTasks('grunt-shell');
  // Load the plugin that provides the "gh-pages" task.
  grunt.loadNpmTasks('grunt-gh-pages');

  // Default task(s).
  grunt.registerTask('default', ['sass', 'shell']);

  // Build the dist an publish it
  grunt.registerTask('dist', ['sass', 'shell', 'gh-pages']);

};<commit_msg>build only the clean CSS for dev<commit_after>module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    // SASS is all about stylesheets
    sass: {
      dist: {
        options: {
          style: 'compressed'
        },
        files: {
          'source/css/style.min.css': 'source/css/style.scss'
        }
      },
      dev: {
        options: {
          style: 'expanded'
        },
        files: {
          'source/css/style.css': 'source/css/style.scss'
        }
      }
    },

    // Patternlab is build with the terminal
    shell: {
      buildPatternLab: {
        command: 'php core/builder.php -g'
      }
    },

    // Publish the public folder using gh-pages
    'gh-pages': {
      options: {
        base: 'public'
      },
      src: ['**']
    }

  });

  // Load the plugin that provides the "sass" task.
  grunt.loadNpmTasks('grunt-contrib-sass');
  // Load the plugin that provides the "shell" task.
  grunt.loadNpmTasks('grunt-shell');
  // Load the plugin that provides the "gh-pages" task.
  grunt.loadNpmTasks('grunt-gh-pages');

  // Default task(s).
  grunt.registerTask('default', ['sass:dev', 'shell']);

  // Build the dist an publish it
  grunt.registerTask('dist', ['sass', 'shell', 'gh-pages']);

};<|endoftext|>


<commit_before>module.exports = function (grunt) {
  'use strict';

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    strip: {
      util: {
        src: ['src/util/core.js', 'src/util/dom.js'],
        dest: 'dest/util',
      },
      sites: {
        src: ['src/sites/*.js'],
        dest: 'dest/sites',
      },
    },
    concat: {
      nopicads: {
        options: {
          banner: '// ==UserScript==\n' + grunt.file.read('src/util/metadata.js') + '// ==/UserScript==\n',
        },
        src: ['dest/util/core.js', 'dest/util/dom.js', 'dest/sites/*.js', 'src/util/main.js'],
        dest: 'dest/nopicads.user.js',
      },
    },
    clean: ['dest'],
    mochaTest: {
      test: {
        src: ['tests/**/*.js'],
      },
    },
  });

  grunt.registerMultiTask('strip', function () {
    this.files.forEach(function (f) {
      grunt.file.mkdir(f.dest);

      f.src.forEach(function (filepath) {
        var script_file = f.dest + '/' + baseName(filepath) + '.js';

        var source = grunt.file.read(filepath);
        var script = removeModelines(source);
        script = removeSingleLineComments(script);
        script = removeEmptyLines(script);
        script = script.trim() + '\n';

        grunt.file.write(script_file, script);
      });
    });
  });

  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-mocha-test');

  grunt.registerTask('default', ['clean', 'strip', 'concat']);
  grunt.registerTask('test', 'mochaTest');

  function removeModelines (s) {
    return s.replace(/^\/\/\s*.+:.*[\r\n]+/gm, '');
  }

  function removeSingleLineComments (s) {
    return s.replace(/^\s*\/\/.*[\r\n]+/gm, '');
  }

  function removeEmptyLines (s) {
    return s.replace(/^\s*[\r\n]+/gm, '');
  }

  function baseName (s) {
    var m = s.match(/([^\/]+)\.js$/);
    return m[1];
  }

};

// ex: ts=2 sts=2 sw=2 et
// sublime: tab_size 2; translate_tabs_to_spaces true; detect_indentation false; use_tab_stops true;
// kate: space-indent on; indent-width 2;
<commit_msg>Change test reporter.<commit_after>module.exports = function (grunt) {
  'use strict';

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    strip: {
      util: {
        src: ['src/util/core.js', 'src/util/dom.js'],
        dest: 'dest/util',
      },
      sites: {
        src: ['src/sites/*.js'],
        dest: 'dest/sites',
      },
    },
    concat: {
      nopicads: {
        options: {
          banner: '// ==UserScript==\n' + grunt.file.read('src/util/metadata.js') + '// ==/UserScript==\n',
        },
        src: ['dest/util/core.js', 'dest/util/dom.js', 'dest/sites/*.js', 'src/util/main.js'],
        dest: 'dest/nopicads.user.js',
      },
    },
    clean: ['dest'],
    mochaTest: {
      test: {
        options: {
          reporter: 'spec',
        },
        src: ['tests/**/*.js'],
      },
    },
  });

  grunt.registerMultiTask('strip', function () {
    this.files.forEach(function (f) {
      grunt.file.mkdir(f.dest);

      f.src.forEach(function (filepath) {
        var script_file = f.dest + '/' + baseName(filepath) + '.js';

        var source = grunt.file.read(filepath);
        var script = removeModelines(source);
        script = removeSingleLineComments(script);
        script = removeEmptyLines(script);
        script = script.trim() + '\n';

        grunt.file.write(script_file, script);
      });
    });
  });

  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-mocha-test');

  grunt.registerTask('default', ['clean', 'strip', 'concat']);
  grunt.registerTask('test', 'mochaTest');

  function removeModelines (s) {
    return s.replace(/^\/\/\s*.+:.*[\r\n]+/gm, '');
  }

  function removeSingleLineComments (s) {
    return s.replace(/^\s*\/\/.*[\r\n]+/gm, '');
  }

  function removeEmptyLines (s) {
    return s.replace(/^\s*[\r\n]+/gm, '');
  }

  function baseName (s) {
    var m = s.match(/([^\/]+)\.js$/);
    return m[1];
  }

};

// ex: ts=2 sts=2 sw=2 et
// sublime: tab_size 2; translate_tabs_to_spaces true; detect_indentation false; use_tab_stops true;
// kate: space-indent on; indent-width 2;
<|endoftext|>


<commit_before>/**
 * Created by lft on 07/08/2015.
 */
<commit_msg>Commit<commit_after>module.exports = function(grunt) {

    // Project configuration.
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        jsdoc2md: {
            oneOutputFile: {
                src: 'index.js',
                dest: 'README.md'
            }
        },
        gitcommit: {
            task: {
                options: {
                    allowEmpty: true,
                    message: 'Commit'
                },
                files: {
                    src: ['*.js']
                }
            }
        }
    });

    grunt.loadNpmTasks("grunt-jsdoc-to-markdown");
    grunt.loadNpmTasks('grunt-git');

    grunt.registerTask('default', [])
    grunt.registerTask('generate doc', 'jsdoc2md')
    grunt.registerTask('commit github', 'gitcommit')

};

<|endoftext|>


<commit_before>/* global module */
module.exports = function (grunt) {
	'use strict';

	// Project configuration
	// ----------------------------------------------/

	grunt.initConfig({

		pkg: grunt.file.readJSON('package.json'),

		config: {
			dest: {
				path: "public_html/mysite",
				scripts: {
					path: "<%= config.dest.path %>/js",
					vendor: {
						path: "<%= config.dest.scripts.path %>/vendor"
					}
				},
				styles: {
					path: '<%= config.dest.path %>/css'
				},
				templates: {
					path: '<%= config.dest.path %>/templates'
				},
				images: {
					path: '<%= config.dest.path %>/images'
				},
				fonts: {
					path: '<%= config.dest.path %>/fonts'
				}
			},
			src: {
				path: "theme_src",
				scripts: {
					path: '<%= config.src.path %>/scripts',
					coffeescript: {
						path: '<%= config.src.scripts.path %>/coffee'
					},
					javascript: {
						path: '<%= config.src.scripts.path %>/js'
					}
				},
				styles: {
					path: '<%= config.src.path %>/styles',
					less: {
						path: '<%= config.src.styles.path %>/less'
					},
					sass: {
						path: '<%= config.src.styles.path %>/sass'
					},
					css: {
						path: '<%= config.src.styles.path %>/css'
					}
				},
				templates: {
					path: '<%= config.src.path %>/templates'
				},
				images: {
					path: '<%= config.src.path %>/images'
				},
				fonts: {
					path: '<%= config.src.path %>/fonts'
				},
				temp: {
					path: '<%= config.src.path %>/tmp'
				}
			},
			vendor_scripts: {
				bootstrap: [
					'bower_components/bootstrap/js/affix.js',
					'bower_components/bootstrap/js/alert.js',
					'bower_components/bootstrap/js/button.js',
					'bower_components/bootstrap/js/carousel.js',
					'bower_components/bootstrap/js/collapse.js',
					'bower_components/bootstrap/js/dropdown.js',
					'bower_components/bootstrap/js/modal.js',
					'bower_components/bootstrap/js/tooltip.js',
					'bower_components/bootstrap/js/popover.js',
					'bower_components/bootstrap/js/scrollspy.js',
					'bower_components/bootstrap/js/tab.js',
					'bower_components/bootstrap/js/transition.js',
					'bower_components/bootstrap/js/transition.js'
				],
				modernizr: [
					'bower_components/modernizr/modernizr.js'
				]
			}
		},

		banner: '/*!\n' +
			' * <%= pkg.name %> Theme version: <%= pkg.version %>\n' +
			' * <%= pkg.description %>\n' +
			' * Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author %> <%= pkg.url %>\n' +
			' * Distributed under the <%= pkg.license %> license\n' +
			' * <%= pkg.homepage %>\n' +
			' */\n',

		less: {
			dev:{
				options:{
					sourceMap: true,
					sourceMapFilename: "<%= config.dest.styles.path %>/core.css.map",
					sourceMapRootpath: "/"
				},
				files: {
					"<%= config.dest.styles.path %>/core.css": "<%= config.src.styles.less.path %>/core.less"
				}
			},
			dist: {
				options:{
					compress: true,
					cleancss: true
				},
				files: {
					"<%= config.dest.styles.path %>/core.min.css": "<%= config.dest.styles.path %>/core.css"
				}
			}
		},

		coffeelint: {
			app: ['<%= config.src.scripts.coffeescript.path %>/**/*.coffee']
		},

		coffee: {
			app: {
				options: {
					sourceMap: true
				},
				expand: true,
				flatten: true,
				cwd: '<%= config.src.scripts.coffeescript.path %>',
				src: ['*.coffee'],
				dest: '<%= config.src.scripts.javascript.path %>',
				ext: '.js'
			}
		},

		concat: {
			options:{
				separator: ';'
			},
			app: {
				options: {
					banner: '<%= banner %>'
				},

				/**
				 * List scripts to combine
				 */
				src: [
					'<%= config.src.scripts.javascript.path %>/functions.js',
					'<%= config.src.scripts.javascript.path %>/app.js'
				],

				dest: '<%= config.dest.scripts.path %>/<%= pkg.name %>.js'
			},
			bootstrap: {
				src: '<%= config.vendor_scripts.bootstrap %>',
				dest: '<%= config.dest.scripts.vendor.path %>/bootstrap.js'
			},
			modernizr: {
				src: '<%= config.vendor_scripts.modernizr %>',
				dest: '<%= config.dest.scripts.vendor.path %>/modernizr.js'
			}
		},

		jshint: {
			pre_concat: {
				src: ['<%= config.src.scripts.javascript.path %>/**/*.js']
			},
			post_concat: {
				src: ['<%= config.dest.scripts.path %>/<%= pkg.name %>.js']
			}
		},

		uglify: {
			app: {
				options: {
					sourceMap: true
				},
				src: '<%= config.dest.scripts.path %>/<%= pkg.name %>.js',
				dest: '<%= config.dest.scripts.path %>/<%= pkg.name %>.min.js'
			},
			bootstrap: {
				options: {
					title: 'Uglify',
					message: 'Conopnemts susescclfuly ugilfeid'
				},
				src: '<%= config.dest.scripts.vendor.path %>/bootstrap.js',
				dest: '<%= config.dest.scripts.vendor.path %>/bootstrap.min.js'
			},
			modernizr: {
				options: {
					title: 'Uglify',
					message: 'Conopnemts susescclfuly ugilfeid'
				},
				src: '<%= config.dest.scripts.vendor.path %>/modernizr.js',
				dest: '<%= config.dest.scripts.vendor.path %>/modernizr.min.js'
			}
		},

		imagemin: {
			options: {
				optimizationLevel: 3
			},
			dist: {
				files: [{
					expand: true,
					cwd: '<%= config.src.path %>/images',
					src: ['**/*.{png,jpg,gif}'],
					dest: '<%= config.dest.images.path %>'
				}]
			}
		},

		usebanner: {
			css: {
				options:{
					position: 'top',
					banner: '<%= banner %>'
				},
				files: {
					src: ['<%= config.dest.styles.path %>/core.min.css']
				}
			}
		},

		htmlmin: {
			templates: {
				options: {
					//conservativeCollapse: true,
					keepClosingSlash: true,
					removeComments: true,
					collapseWhitespace: true
				},
				files: [{
					expand: true,
					cwd: '<%= config.src.templates.path %>',
					src: ['**/*.ss'],
					dest: '<%= config.dest.templates.path %>'
				}]
			}
		},

		copy: {
			fonts: {
				files: [{
					expand: true,
					cwd: '<%= config.src.fonts.path %>',
					src: ['**/*.{eot,svg,ttf,woff}'],
					dest: '<%= config.dest.fonts.path %>'
				}]
			}
		},

		clean: [
			'<%= config.src.temp.path %>',
			'<%= config.dest.styles.path %>',
			'<%= config.dest.fonts.path %>',
			'<%= config.dest.images.path %>',
			'<%= config.dest.scripts.path %>',
			'<%= config.dest.templates.path %>'
		],

		watch: {
			options: {
				livereload: 9000 // Vagrant using default port 35729
			},

			less: {
				options: {
					atBegin: true
				},

				files: ['<%= config.src.styles.less.path %>/**/*.less'],

				tasks: ['less']
			},

			imagemin: {

				files: ['<%= config.src.images.path %>/**/*.{png,gif,jpg}'],

				tasks: ['newer:imagemin']
			},

			coffee: {
				options: {
					livereload: false
				},
				files: ['<%= config.src.scripts.coffeescript.path %>/**/*.coffee'],

				tasks: ['newer:coffeelint', 'newer:coffee']
			},

			js: {
				files: ['<%= config.src.scripts.javascript.path %>/**/*.js'],

				tasks: ['newer:jshint:pre_concat', 'concat:app', 'jshint:post_concat', 'newer:uglify']
			},

			htmlmin: {
				options: {
					atBegin: true
				},
				files: ['<%= config.src.templates.path %>/**/*.ss'],
				tasks: ['newer:htmlmin']
			},

			fonts: {
				files: ['<%= config.src.fonts.path %>/**/*.{eot,svg,ttf,woff}'],
				tasks: ['newer:copy:fonts']
			}
		}
	});

	// Tasks
	// ----------------------------------------------/

	// Default task(s).
	grunt.registerTask('default', ['watch']);

	grunt.registerTask('build', [
		'imagemin',
		'coffeelint',
		'coffee',
		'jshint:pre_concat',
		'concat',
		'uglify',
		'less',
		'htmlmin',
		'copy'
	]);

	// Plugins - autoload each dev dependency
	// ----------------------------------------------/
	require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
};<commit_msg>update concat task to do glob js files<commit_after>/* global module */
module.exports = function (grunt) {
	'use strict';

	// Project configuration
	// ----------------------------------------------/

	grunt.initConfig({

		pkg: grunt.file.readJSON('package.json'),

		config: {
			dest: {
				path: "public_html/mysite",
				scripts: {
					path: "<%= config.dest.path %>/js",
					vendor: {
						path: "<%= config.dest.scripts.path %>/vendor"
					}
				},
				styles: {
					path: '<%= config.dest.path %>/css'
				},
				templates: {
					path: '<%= config.dest.path %>/templates'
				},
				images: {
					path: '<%= config.dest.path %>/images'
				},
				fonts: {
					path: '<%= config.dest.path %>/fonts'
				}
			},
			src: {
				path: "theme_src",
				scripts: {
					path: '<%= config.src.path %>/scripts',
					coffeescript: {
						path: '<%= config.src.scripts.path %>/coffee'
					},
					javascript: {
						path: '<%= config.src.scripts.path %>/js'
					}
				},
				styles: {
					path: '<%= config.src.path %>/styles',
					less: {
						path: '<%= config.src.styles.path %>/less'
					},
					sass: {
						path: '<%= config.src.styles.path %>/sass'
					},
					css: {
						path: '<%= config.src.styles.path %>/css'
					}
				},
				templates: {
					path: '<%= config.src.path %>/templates'
				},
				images: {
					path: '<%= config.src.path %>/images'
				},
				fonts: {
					path: '<%= config.src.path %>/fonts'
				},
				temp: {
					path: '<%= config.src.path %>/tmp'
				}
			},
			vendor_scripts: {
				bootstrap: [
					'bower_components/bootstrap/js/affix.js',
					'bower_components/bootstrap/js/alert.js',
					'bower_components/bootstrap/js/button.js',
					'bower_components/bootstrap/js/carousel.js',
					'bower_components/bootstrap/js/collapse.js',
					'bower_components/bootstrap/js/dropdown.js',
					'bower_components/bootstrap/js/modal.js',
					'bower_components/bootstrap/js/tooltip.js',
					'bower_components/bootstrap/js/popover.js',
					'bower_components/bootstrap/js/scrollspy.js',
					'bower_components/bootstrap/js/tab.js',
					'bower_components/bootstrap/js/transition.js',
					'bower_components/bootstrap/js/transition.js'
				],
				modernizr: [
					'bower_components/modernizr/modernizr.js'
				]
			}
		},

		banner: '/*!\n' +
			' * <%= pkg.name %> Theme version: <%= pkg.version %>\n' +
			' * <%= pkg.description %>\n' +
			' * Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author %> <%= pkg.url %>\n' +
			' * Distributed under the <%= pkg.license %> license\n' +
			' * <%= pkg.homepage %>\n' +
			' */\n',

		less: {
			dev:{
				options:{
					sourceMap: true,
					sourceMapFilename: "<%= config.dest.styles.path %>/core.css.map",
					sourceMapRootpath: "/"
				},
				files: {
					"<%= config.dest.styles.path %>/core.css": "<%= config.src.styles.less.path %>/core.less"
				}
			},
			dist: {
				options:{
					compress: true,
					cleancss: true
				},
				files: {
					"<%= config.dest.styles.path %>/core.min.css": "<%= config.dest.styles.path %>/core.css"
				}
			}
		},

		coffeelint: {
			app: ['<%= config.src.scripts.coffeescript.path %>/**/*.coffee']
		},

		coffee: {
			app: {
				options: {
					sourceMap: true
				},
				expand: true,
				flatten: true,
				cwd: '<%= config.src.scripts.coffeescript.path %>',
				src: ['*.coffee'],
				dest: '<%= config.src.scripts.javascript.path %>',
				ext: '.js'
			}
		},

		concat: {
			options:{
				separator: ';'
			},
			app: {
				options: {
					banner: '<%= banner %>'
				},
				src: [ /* No guarantee of concat order */
					'<%= config.src.scripts.javascript.path %>/*.js'
				],

				dest: '<%= config.dest.scripts.path %>/<%= pkg.name %>.js'
			},
			bootstrap: {
				src: '<%= config.vendor_scripts.bootstrap %>',
				dest: '<%= config.dest.scripts.vendor.path %>/bootstrap.js'
			},
			modernizr: {
				src: '<%= config.vendor_scripts.modernizr %>',
				dest: '<%= config.dest.scripts.vendor.path %>/modernizr.js'
			}
		},

		jshint: {
			pre_concat: {
				src: ['<%= config.src.scripts.javascript.path %>/**/*.js']
			},
			post_concat: {
				src: ['<%= config.dest.scripts.path %>/<%= pkg.name %>.js']
			}
		},

		uglify: {
			app: {
				options: {
					sourceMap: true
				},
				src: '<%= config.dest.scripts.path %>/<%= pkg.name %>.js',
				dest: '<%= config.dest.scripts.path %>/<%= pkg.name %>.min.js'
			},
			bootstrap: {
				options: {
					title: 'Uglify',
					message: 'Conopnemts susescclfuly ugilfeid'
				},
				src: '<%= config.dest.scripts.vendor.path %>/bootstrap.js',
				dest: '<%= config.dest.scripts.vendor.path %>/bootstrap.min.js'
			},
			modernizr: {
				options: {
					title: 'Uglify',
					message: 'Conopnemts susescclfuly ugilfeid'
				},
				src: '<%= config.dest.scripts.vendor.path %>/modernizr.js',
				dest: '<%= config.dest.scripts.vendor.path %>/modernizr.min.js'
			}
		},

		imagemin: {
			options: {
				optimizationLevel: 3
			},
			dist: {
				files: [{
					expand: true,
					cwd: '<%= config.src.path %>/images',
					src: ['**/*.{png,jpg,gif}'],
					dest: '<%= config.dest.images.path %>'
				}]
			}
		},

		usebanner: {
			css: {
				options:{
					position: 'top',
					banner: '<%= banner %>'
				},
				files: {
					src: ['<%= config.dest.styles.path %>/core.min.css']
				}
			}
		},

		htmlmin: {
			templates: {
				options: {
					//conservativeCollapse: true,
					keepClosingSlash: true,
					removeComments: true,
					collapseWhitespace: true
				},
				files: [{
					expand: true,
					cwd: '<%= config.src.templates.path %>',
					src: ['**/*.ss'],
					dest: '<%= config.dest.templates.path %>'
				}]
			}
		},

		copy: {
			fonts: {
				files: [{
					expand: true,
					cwd: '<%= config.src.fonts.path %>',
					src: ['**/*.{eot,svg,ttf,woff}'],
					dest: '<%= config.dest.fonts.path %>'
				}]
			}
		},

		clean: [
			'<%= config.src.temp.path %>',
			'<%= config.dest.styles.path %>',
			'<%= config.dest.fonts.path %>',
			'<%= config.dest.images.path %>',
			'<%= config.dest.scripts.path %>',
			'<%= config.dest.templates.path %>'
		],

		watch: {
			options: {
				livereload: 9000 // Vagrant using default port 35729
			},

			less: {
				options: {
					atBegin: true
				},

				files: ['<%= config.src.styles.less.path %>/**/*.less'],

				tasks: ['less']
			},

			imagemin: {

				files: ['<%= config.src.images.path %>/**/*.{png,gif,jpg}'],

				tasks: ['newer:imagemin']
			},

			coffee: {
				options: {
					livereload: false
				},
				files: ['<%= config.src.scripts.coffeescript.path %>/**/*.coffee'],

				tasks: ['newer:coffeelint', 'newer:coffee']
			},

			js: {
				files: ['<%= config.src.scripts.javascript.path %>/**/*.js'],

				tasks: ['newer:jshint:pre_concat', 'concat:app', 'jshint:post_concat', 'newer:uglify']
			},

			htmlmin: {
				options: {
					atBegin: true
				},
				files: ['<%= config.src.templates.path %>/**/*.ss'],
				tasks: ['newer:htmlmin']
			},

			fonts: {
				files: ['<%= config.src.fonts.path %>/**/*.{eot,svg,ttf,woff}'],
				tasks: ['newer:copy:fonts']
			}
		}
	});

	// Tasks
	// ----------------------------------------------/

	// Default task(s).
	grunt.registerTask('default', ['watch']);

	grunt.registerTask('build', [
		'imagemin',
		'coffeelint',
		'coffee',
		'jshint:pre_concat',
		'concat',
		'uglify',
		'less',
		'htmlmin',
		'copy'
	]);

	// Plugins - autoload each dev dependency
	// ----------------------------------------------/
	require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
};<|endoftext|>


<commit_before>module.exports = function (grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        jshint: {
            files: ['polygonjs/**/*.js']
        },
        jasmine: {
            all: {
                options: {
                    specs: 'tests/specs/**/*-spec.js',
                    helpers: ['tests/spec/matchers.js'],
                    template: require('grunt-template-jasmine-requirejs')
                }
            }
        },
        requirejs: {
            compile: {
                options: {
                    baseUrl: '',
                    name: 'polygonjs/polygonjs',
                    out: 'dist/polygonjs.min.js'
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-jasmine');
    grunt.loadNpmTasks('grunt-contrib-requirejs');

    grunt.registerTask('default', ['jshint', 'jasmine']);
    grunt.registerTask('compile', ['jshint', 'jasmine', 'requirejs']);
};<commit_msg>Fix matcher path.<commit_after>module.exports = function (grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        jshint: {
            files: ['polygonjs/**/*.js']
        },
        jasmine: {
            all: {
                options: {
                    specs: 'tests/specs/**/*-spec.js',
                    helpers: ['tests/matchers.js'],
                    template: require('grunt-template-jasmine-requirejs')
                }
            }
        },
        requirejs: {
            compile: {
                options: {
                    baseUrl: '/',
                    name: 'polygonjs/polygonjs',
                    out: 'dist/polygonjs.min.js'
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-jasmine');
    grunt.loadNpmTasks('grunt-contrib-requirejs');

    grunt.registerTask('default', ['jshint', 'jasmine']);
    grunt.registerTask('compile', ['jshint', 'jasmine', 'requirejs']);
};<|endoftext|>


<commit_before>// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// If you want to recursively match all subfolders, use:
// 'test/spec/**/*.js'

module.exports = function (grunt) {

  // Time how long tasks take. Can help when optimizing build times
  require('time-grunt')(grunt);

  // Load grunt tasks automatically
  require('load-grunt-tasks')(grunt);

  // Configurable paths
  var config = {
    app: 'app',
    dist: 'dist'
  };

  // Define the configuration for all the tasks
  grunt.initConfig({

    // Project settings
    config: config,

    // Watches files for changes and runs tasks based on the changed files
    watch: {
      bower: {
        files: ['bower.json'],
        tasks: ['wiredep']
      },
      jscompiled: {
        files: ['<%= config.app %>/scripts/{,*/}*.js'],
        options: {
          livereload: true
        }
      },
      jsbrowserify: {
        files: ['jsapp/**/*.js'],
        tasks: ['browserify:app'],
      },
      jstest: {
        files: ['test/spec/{,*/}*.js'],
        tasks: ['test:watch']
      },
      gruntfile: {
        files: ['Gruntfile.js']
      },
      sass: {
        files: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],
        tasks: ['sass:server', 'autoprefixer']
      },
      styles: {
        files: ['<%= config.app %>/styles/{,*/}*.css'],
        tasks: ['newer:copy:styles', 'autoprefixer']
      },
      livereload: {
        options: {
          livereload: '<%= connect.options.livereload %>'
        },
        files: [
          '<%= config.app %>/{,*/}*.html',
          '.tmp/styles/{,*/}*.css',
          '<%= config.app %>/images/{,*/}*'
        ]
      }
    },

    // The actual grunt server settings
    connect: {
      options: {
        port: 9000,
        open: true,
        livereload: 35729,
        // Change this to '0.0.0.0' to access the server from outside
        hostname: 'localhost'
      },
      livereload: {
        options: {
          middleware: function(connect) {
            return [
              connect.static('.tmp'),
              connect().use('/bower_components', connect.static('./bower_components')),
              connect.static(config.app)
            ];
          }
        }
      },
      test: {
        options: {
          open: false,
          port: 9001,
          middleware: function(connect) {
            return [
              connect.static('.tmp'),
              connect.static('test'),
              connect().use('/bower_components', connect.static('./bower_components')),
              connect.static(config.app)
            ];
          }
        }
      },
      dist: {
        options: {
          base: '<%= config.dist %>',
          livereload: false
        }
      }
    },

    // Empties folders to start fresh
    clean: {
      dist: {
        files: [{
          dot: true,
          src: [
            '.tmp',
            '<%= config.dist %>/*',
            '!<%= config.dist %>/.git*'
          ]
        }]
      },
      server: '.tmp'
    },

    // Make sure code styles are up to par and there are no obvious mistakes
    jshint: {
      options: {
        jshintrc: '.jshintrc',
        reporter: require('jshint-stylish')
      },
      all: [
        'Gruntfile.js',
        'jsapp/**/*.js',
      ]
    },

    // Mocha testing framework configuration options
    mocha: {
      all: {
        options: {
          run: true,
          urls: ['http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.html']
        }
      }
    },

    // Compiles Sass to CSS and generates necessary files if requested
    sass: {
      options: {
        sourceMap: true,
        includePaths: ['bower_components']
      },
      dist: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/styles',
          src: ['*.{scss,sass}'],
          dest: '.tmp/styles',
          ext: '.css'
        }]
      },
      server: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/styles',
          src: ['*.{scss,sass}'],
          dest: '.tmp/styles',
          ext: '.css'
        }]
      }
    },

    // Add vendor prefixed styles
    autoprefixer: {
      options: {
        browsers: ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']
      },
      dist: {
        files: [{
          expand: true,
          cwd: '.tmp/styles/',
          src: '{,*/}*.css',
          dest: '.tmp/styles/'
        }]
      }
    },

    // Automatically inject Bower components into the HTML file
    wiredep: {
      app: {
        ignorePath: /^\/|\.\.\//,
        src: ['<%= config.app %>/index.html'],
        exclude: ['bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js']
      },
      sass: {
        src: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],
        ignorePath: /(\.\.\/){1,2}bower_components\//
      }
    },

    // Renames files for browser caching purposes
    rev: {
      dist: {
        files: {
          src: [
            '<%= config.dist %>/scripts/{,*/}*.js',
            '<%= config.dist %>/styles/{,*/}*.css',
            '<%= config.dist %>/images/{,*/}*.*',
            '<%= config.dist %>/styles/fonts/{,*/}*.*',
            '<%= config.dist %>/*.{ico,png}'
          ]
        }
      }
    },

    // Reads HTML for usemin blocks to enable smart builds that automatically
    // concat, minify and revision files. Creates configurations in memory so
    // additional tasks can operate on them
    useminPrepare: {
      options: {
        dest: '<%= config.dist %>'
      },
      html: '<%= config.app %>/index.html'
    },

    // Performs rewrites based on rev and the useminPrepare configuration
    usemin: {
      options: {
        assetsDirs: [
          '<%= config.dist %>',
          '<%= config.dist %>/images',
          '<%= config.dist %>/styles'
        ]
      },
      html: ['<%= config.dist %>/{,*/}*.html'],
      css: ['<%= config.dist %>/styles/{,*/}*.css']
    },

    // The following *-min tasks produce minified files in the dist folder
    imagemin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/images',
          src: '{,*/}*.{gif,jpeg,jpg,png}',
          dest: '<%= config.dist %>/images'
        }]
      }
    },

    svgmin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/images',
          src: '{,*/}*.svg',
          dest: '<%= config.dist %>/images'
        }]
      }
    },

    htmlmin: {
      dist: {
        options: {
          collapseBooleanAttributes: true,
          collapseWhitespace: true,
          conservativeCollapse: true,
          removeAttributeQuotes: true,
          removeCommentsFromCDATA: true,
          removeEmptyAttributes: true,
          removeOptionalTags: true,
          removeRedundantAttributes: true,
          useShortDoctype: true
        },
        files: [{
          expand: true,
          cwd: '<%= config.dist %>',
          src: '{,*/}*.html',
          dest: '<%= config.dist %>'
        }]
      }
    },

    browserify: {
      options: {
      },
      app: {
        files: {
          'app/scripts/app.src.js': ['jsapp/boot.js'],
        },
      },
    },

    // By default, your `index.html`'s <!-- Usemin block --> will take care
    // of minification. These next options are pre-configured if you do not
    // wish to use the Usemin blocks.
    // cssmin: {
    //   dist: {
    //     files: {
    //       '<%= config.dist %>/styles/main.css': [
    //         '.tmp/styles/{,*/}*.css',
    //         '<%= config.app %>/styles/{,*/}*.css'
    //       ]
    //     }
    //   }
    // },
    // uglify: {
    //   dist: {
    //     files: {
    //       '<%= config.dist %>/scripts/scripts.js': [
    //         '<%= config.dist %>/scripts/scripts.js'
    //       ]
    //     }
    //   }
    // },
    // concat: {
    //   dist: {}
    // },

    // Copies remaining files to places other tasks can use
    copy: {
      dist: {
        files: [{
          expand: true,
          dot: true,
          cwd: '<%= config.app %>',
          dest: '<%= config.dist %>',
          src: [
            '*.{ico,png,txt}',
            'images/{,*/}*.webp',
            '{,*/}*.html',
            'styles/fonts/{,*/}*.*'
          ]
        }, {
          src: 'node_modules/apache-server-configs/dist/.htaccess',
          dest: '<%= config.dist %>/.htaccess'
        }, {
          expand: true,
          dot: true,
          cwd: '.',
          src: 'bower_components/bootstrap-sass-official/assets/fonts/bootstrap/*',
          dest: '<%= config.dist %>'
        }]
      },
      styles: {
        expand: true,
        dot: true,
        cwd: '<%= config.app %>/styles',
        dest: '.tmp/styles/',
        src: '{,*/}*.css'
      },
      CNAME: {
        src: 'CNAME',
        dest: 'dist/CNAME',
      },
    },

    // Run some tasks in parallel to speed up build process
    concurrent: {
      server: [
        'sass:server',
        'copy:styles'
      ],
      test: [
        'copy:styles'
      ],
      dist: [
        'sass',
        'copy:styles',
        'imagemin',
        'svgmin'
      ]
    },
    buildcontrol: {
      dist: {
        options: {
          remote: 'git@github.com:skgtech/stepstepjump.git',
          branch: 'gh-pages',
          commit: true,
          push: true,
          dir: 'dist',
        }
      }
    },
  });

  grunt.registerTask('serve', 'start the server and preview your app, --allow-remote for remote access', function (target) {
    if (grunt.option('allow-remote')) {
      grunt.config.set('connect.options.hostname', '0.0.0.0');
    }
    if (target === 'dist') {
      return grunt.task.run(['build', 'connect:dist:keepalive']);
    }

    grunt.task.run([
      'clean:server',
      'wiredep',
      'concurrent:server',
      'autoprefixer',
      'connect:livereload',
      'watch'
    ]);
  });

  grunt.registerTask('server', function (target) {
    grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
    grunt.task.run([target ? ('serve:' + target) : 'serve']);
  });

  grunt.registerTask('test', function (target) {
    if (target !== 'watch') {
      grunt.task.run([
        'clean:server',
        'concurrent:test',
        'autoprefixer'
      ]);
    }

    grunt.task.run([
      // 'connect:test',
      'jshint',
      // 'mocha'
    ]);
  });

  grunt.registerTask('build', [
    'browserify:app',
    'clean:dist',
    'wiredep',
    'useminPrepare',
    'concurrent:dist',
    'autoprefixer',
    'concat',
    'cssmin',
    'uglify',
    'copy:dist',
    'copy:CNAME',
    'rev',
    'usemin',
    'htmlmin'
  ]);

  grunt.registerTask('default', [
    'newer:jshint',
    'test',
    'build'
  ]);

  grunt.registerTask('deploy', [
    'test',
    'build',
    'buildcontrol'
  ]);

};
<commit_msg>grunt-ejs configuration<commit_after>// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// If you want to recursively match all subfolders, use:
// 'test/spec/**/*.js'

module.exports = function (grunt) {

  // Time how long tasks take. Can help when optimizing build times
  require('time-grunt')(grunt);

  // Load grunt tasks automatically
  require('load-grunt-tasks')(grunt);

  // Configurable paths
  var config = {
    app: 'app',
    dist: 'dist'
  };

  // Define the configuration for all the tasks
  grunt.initConfig({

    // Project settings
    config: config,

    // Watches files for changes and runs tasks based on the changed files
    watch: {
      bower: {
        files: ['bower.json'],
        tasks: ['wiredep']
      },
      jscompiled: {
        files: ['<%= config.app %>/scripts/{,*/}*.js'],
        options: {
          livereload: true
        }
      },
      jsbrowserify: {
        files: ['jsapp/**/*.js'],
        tasks: ['browserify:app'],
      },
      jstest: {
        files: ['test/spec/{,*/}*.js'],
        tasks: ['test:watch']
      },
      gruntfile: {
        files: ['Gruntfile.js']
      },
      sass: {
        files: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],
        tasks: ['sass:server', 'autoprefixer']
      },
      ejs: {
        files: ['template/*.ejs'],
        tasks: ['ejs']
      },
      styles: {
        files: ['<%= config.app %>/styles/{,*/}*.css'],
        tasks: ['newer:copy:styles', 'autoprefixer']
      },
      livereload: {
        options: {
          livereload: '<%= connect.options.livereload %>'
        },
        files: [
          '<%= config.app %>/{,*/}*.html',
          '.tmp/styles/{,*/}*.css',
          '<%= config.app %>/images/{,*/}*'
        ]
      }
    },

    // The actual grunt server settings
    connect: {
      options: {
        port: 9000,
        open: false,
        livereload: 35729,
        // Change this to '0.0.0.0' to access the server from outside
        hostname: 'localhost'
      },
      livereload: {
        options: {
          middleware: function(connect) {
            return [
              connect.static('.tmp'),
              connect().use('/bower_components', connect.static('./bower_components')),
              connect.static(config.app)
            ];
          }
        }
      },
      test: {
        options: {
          open: false,
          port: 9001,
          middleware: function(connect) {
            return [
              connect.static('.tmp'),
              connect.static('test'),
              connect().use('/bower_components', connect.static('./bower_components')),
              connect.static(config.app)
            ];
          }
        }
      },
      dist: {
        options: {
          base: '<%= config.dist %>',
          livereload: false
        }
      }
    },

    // Empties folders to start fresh
    clean: {
      dist: {
        files: [{
          dot: true,
          src: [
            '.tmp',
            '<%= config.dist %>/*',
            '!<%= config.dist %>/.git*'
          ]
        }]
      },
      server: '.tmp'
    },

    // Make sure code styles are up to par and there are no obvious mistakes
    jshint: {
      options: {
        jshintrc: '.jshintrc',
        reporter: require('jshint-stylish')
      },
      all: [
        'Gruntfile.js',
        'jsapp/**/*.js',
      ]
    },

    // Mocha testing framework configuration options
    mocha: {
      all: {
        options: {
          run: true,
          urls: ['http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.html']
        }
      }
    },

    // Parse and compile .ejs Templates
    ejs: {
      all: {
        src: ['templates/index.ejs', 'templates/board.ejs'],
        dest: 'app/',
        expand: true,
        ext: '.html'
      }
    },

    // Compiles Sass to CSS and generates necessary files if requested
    sass: {
      options: {
        sourceMap: true,
        includePaths: ['bower_components']
      },
      dist: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/styles',
          src: ['*.{scss,sass}'],
          dest: '.tmp/styles',
          ext: '.css'
        }]
      },
      server: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/styles',
          src: ['*.{scss,sass}'],
          dest: '.tmp/styles',
          ext: '.css'
        }]
      }
    },

    // Add vendor prefixed styles
    autoprefixer: {
      options: {
        browsers: ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']
      },
      dist: {
        files: [{
          expand: true,
          cwd: '.tmp/styles/',
          src: '{,*/}*.css',
          dest: '.tmp/styles/'
        }]
      }
    },

    // Automatically inject Bower components into the HTML file
    wiredep: {
      app: {
        ignorePath: /^\/|\.\.\//,
        src: ['<%= config.app %>/**/*.html'],
        exclude: ['bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js']
      },
      sass: {
        src: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],
        ignorePath: /(\.\.\/){1,2}bower_components\//
      }
    },

    // Renames files for browser caching purposes
    rev: {
      dist: {
        files: {
          src: [
            '<%= config.dist %>/scripts/{,*/}*.js',
            '<%= config.dist %>/styles/{,*/}*.css',
            '<%= config.dist %>/images/{,*/}*.*',
            '<%= config.dist %>/styles/fonts/{,*/}*.*',
            '<%= config.dist %>/*.{ico,png}'
          ]
        }
      }
    },

    // Reads HTML for usemin blocks to enable smart builds that automatically
    // concat, minify and revision files. Creates configurations in memory so
    // additional tasks can operate on them
    useminPrepare: {
      options: {
        dest: '<%= config.dist %>'
      },
      html: '<%= config.app %>/**/*.html'
    },

    // Performs rewrites based on rev and the useminPrepare configuration
    usemin: {
      options: {
        assetsDirs: [
          '<%= config.dist %>',
          '<%= config.dist %>/images',
          '<%= config.dist %>/styles'
        ]
      },
      html: ['<%= config.dist %>/{,*/}*.html'],
      css: ['<%= config.dist %>/styles/{,*/}*.css']
    },

    // The following *-min tasks produce minified files in the dist folder
    imagemin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/images',
          src: '{,*/}*.{gif,jpeg,jpg,png}',
          dest: '<%= config.dist %>/images'
        }]
      }
    },

    svgmin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= config.app %>/images',
          src: '{,*/}*.svg',
          dest: '<%= config.dist %>/images'
        }]
      }
    },

    htmlmin: {
      dist: {
        options: {
          collapseBooleanAttributes: true,
          collapseWhitespace: true,
          conservativeCollapse: true,
          removeAttributeQuotes: true,
          removeCommentsFromCDATA: true,
          removeEmptyAttributes: true,
          removeOptionalTags: true,
          removeRedundantAttributes: true,
          useShortDoctype: true
        },
        files: [{
          expand: true,
          cwd: '<%= config.dist %>',
          src: '{,*/}*.html',
          dest: '<%= config.dist %>'
        }]
      }
    },

    browserify: {
      options: {
      },
      app: {
        files: {
          'app/scripts/app.src.js': ['jsapp/boot.js'],
        },
      },
    },

    // By default, your `index.html`'s <!-- Usemin block --> will take care
    // of minification. These next options are pre-configured if you do not
    // wish to use the Usemin blocks.
    // cssmin: {
    //   dist: {
    //     files: {
    //       '<%= config.dist %>/styles/main.css': [
    //         '.tmp/styles/{,*/}*.css',
    //         '<%= config.app %>/styles/{,*/}*.css'
    //       ]
    //     }
    //   }
    // },
    // uglify: {
    //   dist: {
    //     files: {
    //       '<%= config.dist %>/scripts/scripts.js': [
    //         '<%= config.dist %>/scripts/scripts.js'
    //       ]
    //     }
    //   }
    // },
    // concat: {
    //   dist: {}
    // },

    // Copies remaining files to places other tasks can use
    copy: {
      dist: {
        files: [{
          expand: true,
          dot: true,
          cwd: '<%= config.app %>',
          dest: '<%= config.dist %>',
          src: [
            '*.{ico,png,txt}',
            'images/{,*/}*.webp',
            '{,*/}*.html',
            'styles/fonts/{,*/}*.*'
          ]
        }, {
          src: 'node_modules/apache-server-configs/dist/.htaccess',
          dest: '<%= config.dist %>/.htaccess'
        }, {
          expand: true,
          dot: true,
          cwd: '.',
          src: 'bower_components/bootstrap-sass-official/assets/fonts/bootstrap/*',
          dest: '<%= config.dist %>'
        }]
      },
      styles: {
        expand: true,
        dot: true,
        cwd: '<%= config.app %>/styles',
        dest: '.tmp/styles/',
        src: '{,*/}*.css'
      },
      CNAME: {
        src: 'CNAME',
        dest: 'dist/CNAME',
      },
    },

    // Run some tasks in parallel to speed up build process
    concurrent: {
      server: [
        'sass:server',
        'copy:styles'
      ],
      test: [
        'copy:styles'
      ],
      dist: [
        'sass',
        'copy:styles',
        'imagemin',
        'svgmin'
      ]
    },
    buildcontrol: {
      dist: {
        options: {
          remote: 'git@github.com:skgtech/stepstepjump.git',
          branch: 'gh-pages',
          commit: true,
          push: true,
          dir: 'dist',
        }
      }
    },
  });

  grunt.registerTask('serve', 'start the server and preview your app, --allow-remote for remote access', function (target) {
    if (grunt.option('allow-remote')) {
      grunt.config.set('connect.options.hostname', '0.0.0.0');
    }
    if (target === 'dist') {
      return grunt.task.run(['build', 'connect:dist:keepalive']);
    }

    grunt.task.run([
      'clean:server',
      'wiredep',
      'ejs',
      'concurrent:server',
      'autoprefixer',
      'connect:livereload',
      'watch'
    ]);
  });

  grunt.registerTask('server', function (target) {
    grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
    grunt.task.run([target ? ('serve:' + target) : 'serve']);
  });

  grunt.registerTask('test', function (target) {
    if (target !== 'watch') {
      grunt.task.run([
        'clean:server',
        'concurrent:test',
        'autoprefixer'
      ]);
    }

    grunt.task.run([
      // 'connect:test',
      'jshint',
      // 'mocha'
    ]);
  });

  grunt.registerTask('build', [
    'browserify:app',
    'clean:dist',
    'wiredep',
    'useminPrepare',
    'concurrent:dist',
    'autoprefixer',
    'ejs',
    'concat',
    'cssmin',
    'uglify',
    'copy:dist',
    'copy:CNAME',
    'rev',
    'usemin',
    'htmlmin'
  ]);

  grunt.registerTask('default', [
    'newer:jshint',
    'test',
    'build'
  ]);

  grunt.registerTask('deploy', [
    'test',
    'build',
    'buildcontrol'
  ]);

};
<|endoftext|>


<commit_before>module.exports = function (grunt) {
    grunt.initConfig({
        concat: {
            css:{
             files: {
                    'static/build/css/sync_styles.css': [
                      'static/src/css/font-awesome.min.css',
                      'static/src/css/bootstrap.min.css',
                      'static/src/css/wysiwyg-color.css',
                      'static/src/css/style-metronic.css',
                      'static/src/css/style.css',
                      'static/src/css/style-responsive.css',
                      'static/src/css/plugins.css',
                      'static/src/css/light.css',
                      'static/src/css/hopscotch.css',
                      'static/src/css/datepicker.css'
                    ],
                    'static/build/css/asyn_styles.css': [
                      'static/src/css/select2_metro.css',
                      'static/src/css/uniform.default.css',
                      'static/src/css/jquery.simple-dtpicker.css',
                      'static/src/css/xeditable.css',
                      'static/src/css/fullcalendar.css',
                      'static/src/css/fullcalendar.print.css'
                    ]
                }
            },
            js_libs:{
                     files: {
                          'static/build/js/async_scripts.js': [
                          'static/src/js/select2.min.js',
                          'static/src/js/ui-select2.js',
                          'static/src/js/angular.easypiechart.js',
                          'static/src/js/xeditable.min.js',
                          'static/src/js/wysihtml5-0.3.0.min.js',
                          'static/src/js/bootstrap-wysihtml5.js',
                          'static/src/js/jquery.slimscroll.min.js',
                          'static/src/js/jquery.uniform.min.js',
                          'static/src/js/jquery.textfill.min.js',
                          'static/src/js/jquery.simple-dtpicker.js',
                          'static/src/js/bootstrap-datetimepicker.min.js',
                          'static/src/js/jquery.caret.js',
                          'static/src/js/twitter-bootstrap-hover-dropdown.min.js'
                        ],
                        'static/build/js/sync_scripts.js': [
                          'static/src/js/bootstrap.min.js',
                          'static/src/js/ui-bootstrap-0.5.0.min.js',
                          'static/src/js/ui-bootstrap-tpls-0.5.0.js',
                          'static/src/js/angular.moment.js',
                          'static/src/js/zepto.js',
                          'static/src/js/jquery.waterfall.js',
                          'static/src/js/jquery.ui.map.min.js',
                          'static/src/js/jquery.ui.map.services.js'
                        ],
                        'static/build/js/first_sync_scripts.js': [
                          'static/src/js/jquery.min.js',
                          'static/src/js/jquery-ui-1.10.3.custom.min.js',
                          'static/src/js/moment.min.js',
                          'static/src/js/angular.min.js',
                          'static/src/js/socket.io.js',
                          'static/src/js/ng-google-chart.js'
                        ]
                     }

            },
            js_servs_ctrls: {
                src: ['static/app/scripts/services/authservices.js',
                    'static/app/scripts/services/infonodeservices.js',
                    'static/app/scripts/services/mapservices.js',
                    'static/app/scripts/services/accountservices.js',
                    'static/app/scripts/services/contactservices.js',
                    'static/app/scripts/services/opportunityservices.js',
                    'static/app/scripts/services/leadservices.js',
                    'static/app/scripts/services/caseservices.js',
                    'static/app/scripts/services/discoverservices.js',
                    'static/app/scripts/services/topicservices.js',
                    'static/app/scripts/services/taskservices.js',
                    'static/app/scripts/services/eventservices.js',
                    'static/app/scripts/services/userservices.js',
                    'static/app/scripts/services/billingservices.js',
                    'static/app/scripts/services/noteservices.js', 'static/app/scripts/services/commentservices.js',
                    'static/app/scripts/services/settingservices.js',
                    'static/app/scripts/services/edgeservices.js', 'static/app/scripts/services/reportservices.js',
                    'static/app/scripts/services/profileservices.js', 'static/app/scripts/services/linkedinservices.js',
                    'static/app/scripts/app.js', 'static/app/scripts/directives/directives.js',
                    'static/app/scripts/controllers/admin/**/*.js',
                    'static/app/scripts/controllers/discovercontrollers.js', 'static/app/scripts/controllers/mysettingcontrollers.js', 'static/app/scripts/controllers/searchcontrollers.js', 'static/app/scripts/controllers/accountcontrollers.js', 'static/app/scripts/controllers/leadcontrollers.js', 'static/app/scripts/controllers/casecontrollers.js', 'static/app/scripts/controllers/billingController.js', 'static/app/scripts/controllers/contactcontroller.js', 'static/app/scripts/controllers/opportunitycontroller.js', 'static/app/scripts/controllers/documentcontrollers.js', 'static/app/scripts/controllers/notecontrollers.js', 'static/app/scripts/controllers/taskcontrollers.js', 'static/app/scripts/controllers/eventcontrollers.js', 'static/app/scripts/controllers/dashboardController.js', 'static/app/scripts/controllers/usercontrollers.js', 'static/app/scripts/controllers/settingscontrollers.js'],
                dest: 'static/build/js/sync_ctrls_sers_scripts.js',
            }
        },
        cssmin: {
            /*css: {
             files: {
             'static/build/css/asyn_styles.min.css': ['static/build/css/asyn_styles.css']
             }
             },*/
            /*custom_css: {
             files: {
             'static/build/css/custom_css.min.css': ['static/build/css/test.css']
             }
             },*/
            sync_css: {
                files: {
                    'static/build/css/sync_styles.min.css': ['static/build/css/sync_styles.css']
                }
            },
        },
        uglify: {
            options: {
                mangle: false
            },
            /*sync_js: {
             files: {
             'static/build/js/hopscotch.min.js': ['static/hopscotch/js/hopscotch.js']
             }
             }*/
            /* sync_js: {
             files: {
             'static/build/js/sync_scripts.min.js': ['static/build/js/sync_scripts.js']
             }
             },
             async_js: {
             files: {
             'static/build/js/async_scripts.min.js': ['static/build/js/async_scripts.js']
             }
             },*/
            /* first_sync_js: {
             files: {
             'static/build/js/first_sync_scripts.min.js': ['static/build/js/first_sync_scripts.js']
             }
             }*/
            sync_ctrls_sers_js: {
                files: {
                    'static/build/js/sync_scripts.min.js': ['static/build/js/sync_scripts.js'],
                    'static/build/js/async_scripts.min.js': ['static/build/js/async_scripts.js'],
                    'static/build/js/first_sync_scripts.min.js': ['static/build/js/first_sync_scripts.js'],
                    'static/build/js/sync_ctrls_sers_scripts.min.js': ['static/build/js/sync_ctrls_sers_scripts.js']
                }
            },
            /*sync_ctrls_sers_js: {
             files: {
             'static/build/js/async_scripts_2.min.js': ['static/build/js/async_scripts_2.js']
             }
             },
             sync_ctrls_sers_js: {
             files: {
             'static/build/js/first_sync_scripts.min.js': ['static/build/js/first_sync_scripts.js']
             }
             },    */
            /*async_ctrls_sers_js: {
             files: {
             'static/build/js/async_ctrls_sers_scripts.min.js': ['static/app/scripts/services/mapservices.js','static/app/scripts/services/caseservices.js','static/app/scripts/services/discoverservices.js','static/app/scripts/services/topicservices.js','static/app/scripts/services/eventservices.js','static/app/scripts/services/noteservices.js','static/app/scripts/services/commentservices.js','static/app/scripts/services/reportservices.js','static/app/scripts/controllers/discovercontrollers.js','static/app/scripts/controllers/casecontrollers.js','static/app/scripts/controllers/documentcontrollers.js','static/app/scripts/controllers/notecontrollers.js','static/app/scripts/controllers/eventcontrollers.js','static/app/scripts/controllers/dashboardController.js']
             }
             },*/
        },
        watch: {
            /*js: {
             files: ['static/build/css/test.css'],
             tasks: ['cssmin'],
             },
             sync_ctrls_servs: {
             files: ['static/app/scripts/services/authservices.js','static/app/scripts/services/infonodeservices.js','static/app/scripts/services/mapservices.js','static/app/scripts/services/accountservices.js','static/app/scripts/services/contactservices.js','static/app/scripts/services/opportunityservices.js','static/app/scripts/services/leadservices.js','static/app/scripts/services/caseservices.js','static/app/scripts/services/discoverservices.js','static/app/scripts/services/topicservices.js','static/app/scripts/services/taskservices.js','static/app/scripts/services/eventservices.js','static/app/scripts/services/userservices.js','static/app/scripts/services/noteservices.js','static/app/scripts/services/commentservices.js','static/app/scripts/services/settingservices.js','static/app/scripts/services/edgeservices.js','static/app/scripts/services/reportservices.js','static/app/scripts/services/profileservices.js','static/app/scripts/services/linkedinservices.js','static/app/scripts/app.js','static/app/scripts/directives/directives.js','static/app/scripts/controllers/discovercontrollers.js','static/app/scripts/controllers/mysettingcontrollers.js','static/app/scripts/controllers/searchcontrollers.js','static/app/scripts/controllers/accountcontrollers.js','static/app/scripts/controllers/leadcontrollers.js','static/app/scripts/controllers/casecontrollers.js','static/app/scripts/controllers/billingController.js','static/app/scripts/controllers/contactcontroller.js','static/app/scripts/controllers/opportunitycontroller.js','static/app/scripts/controllers/documentcontrollers.js','static/app/scripts/controllers/notecontrollers.js','static/app/scripts/controllers/taskcontrollers.js','static/app/scripts/controllers/eventcontrollers.js','static/app/scripts/controllers/dashboardController.js','static/app/scripts/controllers/usercontrollers.js','static/app/scripts/controllers/settingscontrollers.js'],
             tasks: ['uglify'],
             },*/
            async_ctrls_servs: {
                files: ['static/app/scripts/services/authservices.js',
                    'static/app/scripts/services/infonodeservices.js',
                    'static/app/scripts/services/mapservices.js',
                    'static/app/scripts/services/accountservices.js',
                    'static/app/scripts/services/contactservices.js',
                    'static/app/scripts/services/opportunityservices.js',
                    'static/app/scripts/services/leadservices.js',
                    'static/app/scripts/services/caseservices.js',
                    'static/app/scripts/services/discoverservices.js',
                    'static/app/scripts/services/topicservices.js',
                    'static/app/scripts/services/taskservices.js',
                    'static/app/scripts/services/eventservices.js',
                    'static/app/scripts/services/userservices.js',
                    'static/app/scripts/services/billingservices.js',
                    'static/app/scripts/services/noteservices.js',
                    'static/app/scripts/services/commentservices.js',
                    'static/app/scripts/services/settingservices.js',
                    'static/app/scripts/services/edgeservices.js',
                    'static/app/scripts/services/reportservices.js', 'static/app/scripts/services/profileservices.js',
                    'static/app/scripts/services/linkedinservices.js', 'static/app/scripts/app.js',
                    'static/app/scripts/directives/directives.js',
                    'static/app/scripts/controllers/discovercontrollers.js',
                    'static/app/scripts/controllers/mysettingcontrollers.js',
                    'static/app/scripts/controllers/searchcontrollers.js',
                    'static/app/scripts/controllers/accountcontrollers.js',
                    'static/app/scripts/controllers/admin/**/*.js',
                    'static/app/scripts/controllers/leadcontrollers.js',
                    'static/app/scripts/controllers/casecontrollers.js',
                    'static/app/scripts/controllers/billingController.js',
                    'static/app/scripts/controllers/contactcontroller.js',
                    'static/app/scripts/controllers/opportunitycontroller.js',
                    'static/app/scripts/controllers/documentcontrollers.js',
                    'static/app/scripts/controllers/notecontrollers.js',
                    'static/app/scripts/controllers/taskcontrollers.js',
                    'static/app/scripts/controllers/eventcontrollers.js',
                    'static/app/scripts/controllers/dashboardController.js',
                    'static/app/scripts/controllers/usercontrollers.js', 'static/app/scripts/controllers/settingscontrollers.js'],
                tasks: ['concat', 'uglify'],
            },
        },
        imagemin: {
            dynamic: {
                files: [{
                    expand: true,
                    cwd: '/static/img/',
                    src: ['**/*.{png,jpg,gif}'],
                    dest: '/static/build/img/'
                }]
            }
        },
        htmlmin: {
            dist: {
                options: {
                    removeComments: true,
                    collapseWhitespace: true
                },
                files: {
                    'templates/new_web_site/index.html': 'templates/new_web_site/index_opt.html'
                }
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-htmlmin');
};<commit_msg>remove built hopscotch.min.js<commit_after>module.exports = function (grunt) {
    grunt.initConfig({
        concat: {
            css:{
             files: {
                    'static/build/css/sync_styles.css': [
                      'static/src/css/font-awesome.min.css',
                      'static/src/css/bootstrap.min.css',
                      'static/src/css/wysiwyg-color.css',
                      'static/src/css/style-metronic.css',
                      'static/src/css/style.css',
                      'static/src/css/style-responsive.css',
                      'static/src/css/plugins.css',
                      'static/src/css/light.css',
                      'static/src/css/hopscotch.css',
                      'static/src/css/datepicker.css'
                    ],
                    'static/build/css/asyn_styles.css': [
                      'static/src/css/select2_metro.css',
                      'static/src/css/uniform.default.css',
                      'static/src/css/jquery.simple-dtpicker.css',
                      'static/src/css/xeditable.css',
                      'static/src/css/fullcalendar.css',
                      'static/src/css/fullcalendar.print.css'
                    ]
                }
            },
            js_libs:{
                     files: {
                          'static/build/js/async_scripts.js': [
                          'static/src/js/select2.min.js',
                          'static/src/js/ui-select2.js',
                          'static/src/js/angular.easypiechart.js',
                          'static/src/js/xeditable.min.js',
                          'static/src/js/wysihtml5-0.3.0.min.js',
                          'static/src/js/bootstrap-wysihtml5.js',
                          'static/src/js/jquery.slimscroll.min.js',
                          'static/src/js/jquery.uniform.min.js',
                          'static/src/js/jquery.textfill.min.js',
                          'static/src/js/jquery.simple-dtpicker.js',
                          'static/src/js/bootstrap-datetimepicker.min.js',
                          'static/src/js/jquery.caret.js',
                          'static/src/js/twitter-bootstrap-hover-dropdown.min.js'
                        ],
                        'static/build/js/sync_scripts.js': [
                          'static/src/js/bootstrap.min.js',
                          'static/src/js/ui-bootstrap-0.5.0.min.js',
                          'static/src/js/ui-bootstrap-tpls-0.5.0.js',
                          'static/src/js/angular.moment.js',
                          'static/src/js/zepto.js',
                          'static/src/js/jquery.waterfall.js',
                          'static/src/js/jquery.ui.map.min.js',
                          'static/src/js/jquery.ui.map.services.js'
                        ],
                        'static/build/js/first_sync_scripts.js': [
                          'static/src/js/jquery.min.js',
                          'static/src/js/jquery-ui-1.10.3.custom.min.js',
                          'static/src/js/moment.min.js',
                          'static/src/js/angular.min.js',
                          'static/src/js/socket.io.js',
                          'static/src/js/ng-google-chart.js'
                        ]
                     }

            },
            js_servs_ctrls: {
                src: ['static/app/scripts/services/authservices.js',
                    'static/app/scripts/services/infonodeservices.js',
                    'static/app/scripts/services/mapservices.js',
                    'static/app/scripts/services/accountservices.js',
                    'static/app/scripts/services/contactservices.js',
                    'static/app/scripts/services/opportunityservices.js',
                    'static/app/scripts/services/leadservices.js',
                    'static/app/scripts/services/caseservices.js',
                    'static/app/scripts/services/discoverservices.js',
                    'static/app/scripts/services/topicservices.js',
                    'static/app/scripts/services/taskservices.js',
                    'static/app/scripts/services/eventservices.js',
                    'static/app/scripts/services/userservices.js',
                    'static/app/scripts/services/billingservices.js',
                    'static/app/scripts/services/noteservices.js', 'static/app/scripts/services/commentservices.js',
                    'static/app/scripts/services/settingservices.js',
                    'static/app/scripts/services/edgeservices.js', 'static/app/scripts/services/reportservices.js',
                    'static/app/scripts/services/profileservices.js', 'static/app/scripts/services/linkedinservices.js',
                    'static/app/scripts/app.js', 'static/app/scripts/directives/directives.js',
                    'static/app/scripts/controllers/admin/**/*.js',
                    'static/app/scripts/controllers/discovercontrollers.js', 'static/app/scripts/controllers/mysettingcontrollers.js', 'static/app/scripts/controllers/searchcontrollers.js', 'static/app/scripts/controllers/accountcontrollers.js', 'static/app/scripts/controllers/leadcontrollers.js', 'static/app/scripts/controllers/casecontrollers.js', 'static/app/scripts/controllers/billingController.js', 'static/app/scripts/controllers/contactcontroller.js', 'static/app/scripts/controllers/opportunitycontroller.js', 'static/app/scripts/controllers/documentcontrollers.js', 'static/app/scripts/controllers/notecontrollers.js', 'static/app/scripts/controllers/taskcontrollers.js', 'static/app/scripts/controllers/eventcontrollers.js', 'static/app/scripts/controllers/dashboardController.js', 'static/app/scripts/controllers/usercontrollers.js', 'static/app/scripts/controllers/settingscontrollers.js'],
                dest: 'static/build/js/sync_ctrls_sers_scripts.js',
            }
        },
        cssmin: {
            /*css: {
             files: {
             'static/build/css/asyn_styles.min.css': ['static/build/css/asyn_styles.css']
             }
             },*/
            /*custom_css: {
             files: {
             'static/build/css/custom_css.min.css': ['static/build/css/test.css']
             }
             },*/
            sync_css: {
                files: {
                    'static/build/css/sync_styles.min.css': ['static/build/css/sync_styles.css']
                }
            },
        },
        uglify: {
            options: {
                mangle: false
            },
            /* sync_js: {
             files: {
             'static/build/js/sync_scripts.min.js': ['static/build/js/sync_scripts.js']
             }
             },
             async_js: {
             files: {
             'static/build/js/async_scripts.min.js': ['static/build/js/async_scripts.js']
             }
             },*/
            /* first_sync_js: {
             files: {
             'static/build/js/first_sync_scripts.min.js': ['static/build/js/first_sync_scripts.js']
             }
             }*/
            sync_ctrls_sers_js: {
                files: {
                    'static/build/js/sync_scripts.min.js': ['static/build/js/sync_scripts.js'],
                    'static/build/js/async_scripts.min.js': ['static/build/js/async_scripts.js'],
                    'static/build/js/first_sync_scripts.min.js': ['static/build/js/first_sync_scripts.js'],
                    'static/build/js/sync_ctrls_sers_scripts.min.js': ['static/build/js/sync_ctrls_sers_scripts.js']
                }
            },
            /*sync_ctrls_sers_js: {
             files: {
             'static/build/js/async_scripts_2.min.js': ['static/build/js/async_scripts_2.js']
             }
             },
             sync_ctrls_sers_js: {
             files: {
             'static/build/js/first_sync_scripts.min.js': ['static/build/js/first_sync_scripts.js']
             }
             },    */
            /*async_ctrls_sers_js: {
             files: {
             'static/build/js/async_ctrls_sers_scripts.min.js': ['static/app/scripts/services/mapservices.js','static/app/scripts/services/caseservices.js','static/app/scripts/services/discoverservices.js','static/app/scripts/services/topicservices.js','static/app/scripts/services/eventservices.js','static/app/scripts/services/noteservices.js','static/app/scripts/services/commentservices.js','static/app/scripts/services/reportservices.js','static/app/scripts/controllers/discovercontrollers.js','static/app/scripts/controllers/casecontrollers.js','static/app/scripts/controllers/documentcontrollers.js','static/app/scripts/controllers/notecontrollers.js','static/app/scripts/controllers/eventcontrollers.js','static/app/scripts/controllers/dashboardController.js']
             }
             },*/
        },
        watch: {
            /*js: {
             files: ['static/build/css/test.css'],
             tasks: ['cssmin'],
             },
             sync_ctrls_servs: {
             files: ['static/app/scripts/services/authservices.js','static/app/scripts/services/infonodeservices.js','static/app/scripts/services/mapservices.js','static/app/scripts/services/accountservices.js','static/app/scripts/services/contactservices.js','static/app/scripts/services/opportunityservices.js','static/app/scripts/services/leadservices.js','static/app/scripts/services/caseservices.js','static/app/scripts/services/discoverservices.js','static/app/scripts/services/topicservices.js','static/app/scripts/services/taskservices.js','static/app/scripts/services/eventservices.js','static/app/scripts/services/userservices.js','static/app/scripts/services/noteservices.js','static/app/scripts/services/commentservices.js','static/app/scripts/services/settingservices.js','static/app/scripts/services/edgeservices.js','static/app/scripts/services/reportservices.js','static/app/scripts/services/profileservices.js','static/app/scripts/services/linkedinservices.js','static/app/scripts/app.js','static/app/scripts/directives/directives.js','static/app/scripts/controllers/discovercontrollers.js','static/app/scripts/controllers/mysettingcontrollers.js','static/app/scripts/controllers/searchcontrollers.js','static/app/scripts/controllers/accountcontrollers.js','static/app/scripts/controllers/leadcontrollers.js','static/app/scripts/controllers/casecontrollers.js','static/app/scripts/controllers/billingController.js','static/app/scripts/controllers/contactcontroller.js','static/app/scripts/controllers/opportunitycontroller.js','static/app/scripts/controllers/documentcontrollers.js','static/app/scripts/controllers/notecontrollers.js','static/app/scripts/controllers/taskcontrollers.js','static/app/scripts/controllers/eventcontrollers.js','static/app/scripts/controllers/dashboardController.js','static/app/scripts/controllers/usercontrollers.js','static/app/scripts/controllers/settingscontrollers.js'],
             tasks: ['uglify'],
             },*/
            async_ctrls_servs: {
                files: ['static/app/scripts/services/authservices.js',
                    'static/app/scripts/services/infonodeservices.js',
                    'static/app/scripts/services/mapservices.js',
                    'static/app/scripts/services/accountservices.js',
                    'static/app/scripts/services/contactservices.js',
                    'static/app/scripts/services/opportunityservices.js',
                    'static/app/scripts/services/leadservices.js',
                    'static/app/scripts/services/caseservices.js',
                    'static/app/scripts/services/discoverservices.js',
                    'static/app/scripts/services/topicservices.js',
                    'static/app/scripts/services/taskservices.js',
                    'static/app/scripts/services/eventservices.js',
                    'static/app/scripts/services/userservices.js',
                    'static/app/scripts/services/billingservices.js',
                    'static/app/scripts/services/noteservices.js',
                    'static/app/scripts/services/commentservices.js',
                    'static/app/scripts/services/settingservices.js',
                    'static/app/scripts/services/edgeservices.js',
                    'static/app/scripts/services/reportservices.js', 'static/app/scripts/services/profileservices.js',
                    'static/app/scripts/services/linkedinservices.js', 'static/app/scripts/app.js',
                    'static/app/scripts/directives/directives.js',
                    'static/app/scripts/controllers/discovercontrollers.js',
                    'static/app/scripts/controllers/mysettingcontrollers.js',
                    'static/app/scripts/controllers/searchcontrollers.js',
                    'static/app/scripts/controllers/accountcontrollers.js',
                    'static/app/scripts/controllers/admin/**/*.js',
                    'static/app/scripts/controllers/leadcontrollers.js',
                    'static/app/scripts/controllers/casecontrollers.js',
                    'static/app/scripts/controllers/billingController.js',
                    'static/app/scripts/controllers/contactcontroller.js',
                    'static/app/scripts/controllers/opportunitycontroller.js',
                    'static/app/scripts/controllers/documentcontrollers.js',
                    'static/app/scripts/controllers/notecontrollers.js',
                    'static/app/scripts/controllers/taskcontrollers.js',
                    'static/app/scripts/controllers/eventcontrollers.js',
                    'static/app/scripts/controllers/dashboardController.js',
                    'static/app/scripts/controllers/usercontrollers.js', 'static/app/scripts/controllers/settingscontrollers.js'],
                tasks: ['concat', 'uglify'],
            },
        },
        imagemin: {
            dynamic: {
                files: [{
                    expand: true,
                    cwd: '/static/img/',
                    src: ['**/*.{png,jpg,gif}'],
                    dest: '/static/build/img/'
                }]
            }
        },
        htmlmin: {
            dist: {
                options: {
                    removeComments: true,
                    collapseWhitespace: true
                },
                files: {
                    'templates/new_web_site/index.html': 'templates/new_web_site/index_opt.html'
                }
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-htmlmin');
};<|endoftext|>