Advertisement
Guest User

Untitled

a guest
Apr 18th, 2013
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Generated on 2013-04-17 using generator-webapp 0.1.7
  2. 'use strict';
  3. var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;
  4. var mountFolder = function (connect, dir) {
  5.     return connect.static(require('path').resolve(dir));
  6. };
  7.  
  8. // # Globbing
  9. // for performance reasons we're only matching one level down:
  10. // 'test/spec/{,*/}*.js'
  11. // use this if you want to match all subfolders:
  12. // 'test/spec/**/*.js'
  13.  
  14. module.exports = function (grunt) {
  15.     // load all grunt tasks
  16.     require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
  17.  
  18.     // configurable paths
  19.     var yeomanConfig = {
  20.         app: 'app',
  21.         dist: 'dist'
  22.     };
  23.  
  24.     grunt.initConfig({
  25.         pkg: grunt.file.readJSON('package.json'),
  26.         yeoman: yeomanConfig,
  27.         watch: {
  28.             compass: {
  29.                 files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
  30.                 tasks: ['compass:server']
  31.             },
  32.             livereload: {
  33.                 files: [
  34.                     '<%= yeoman.app %>/*.html',
  35.                     '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
  36.                     '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
  37.                     '<%= yeoman.app %>/images/{,*/,**/}*.{png,jpg,jpeg,gif,webp,svg}'
  38.                 ],
  39.                 tasks: ['livereload']
  40.             },
  41.             jst: {
  42.                 files: ['<%= yeoman.app %>/templates/*.html'],
  43.                 tasks: ['jst']
  44.             }
  45.         },
  46.         connect: {
  47.             options: {
  48.                 port: 9000,
  49.                 hostname: 'localhost'
  50.             },
  51.             livereload: {
  52.                 options: {
  53.                     middleware: function (connect) {
  54.                         return [
  55.                             lrSnippet,
  56.                             mountFolder(connect, '.tmp'),
  57.                             mountFolder(connect, 'app')
  58.                         ];
  59.                     }
  60.                 }
  61.             },
  62.             test: {
  63.                 options: {
  64.                     middleware: function (connect) {
  65.                         return [
  66.                             mountFolder(connect, '.tmp'),
  67.                             mountFolder(connect, 'test')
  68.                         ];
  69.                     }
  70.                 }
  71.             },
  72.             dist: {
  73.                 options: {
  74.                     middleware: function (connect) {
  75.                         return [
  76.                             mountFolder(connect, 'dist')
  77.                         ];
  78.                     }
  79.                 }
  80.             }
  81.         },
  82.         open: {
  83.             server: {
  84.                 path: 'http://<%= connect.options.hostname %>:<%= connect.options.port %>'
  85.             }
  86.         },
  87.         clean: {
  88.             dist: {
  89.                 files: [{
  90.                     dot: true,
  91.                     src: [
  92.                         '.tmp',
  93.                         '<%= yeoman.dist %>/*',
  94.                         '!<%= yeoman.dist %>/.git*'
  95.                     ]
  96.                 }]
  97.             },
  98.             server: '.tmp'
  99.         },
  100.         jshint: {
  101.             options: {
  102.                 jshintrc: '.jshintrc'
  103.             },
  104.             all: [
  105.                 'Gruntfile.js',
  106.                 '<%= yeoman.app %>/scripts/{,*/}*.js',
  107.                 '!<%= yeoman.app %>/scripts/vendor/*',
  108.                 'test/spec/{,*/}*.js'
  109.             ]
  110.         },
  111.         compass: {
  112.             options: {
  113.                 sassDir: '<%= yeoman.app %>/styles',
  114.                 cssDir: '.tmp/styles',
  115.                 imagesDir: '<%= yeoman.app %>/images',
  116.                 javascriptsDir: '<%= yeoman.app %>/scripts',
  117.                 fontsDir: '<%= yeoman.app %>/styles/fonts',
  118.                 importPath: 'app/components',
  119.                 relativeAssets: true
  120.             },
  121.             dist: {},
  122.             server: {
  123.                 options: {
  124.                     debugInfo: true
  125.                 }
  126.             }
  127.         },
  128.         uglify: {
  129.             options: {
  130.                 banner: grunt.file.read('MASTHEAD')
  131.             }
  132.         },
  133.         rev: {
  134.             dist: {
  135.                 files: {
  136.                     src: [
  137.                         '<%= yeoman.dist %>/scripts/{,*/}*.js',
  138.                         '<%= yeoman.dist %>/styles/{,*/}*.css',
  139.                         '<%= yeoman.dist %>/styles/fonts/*'
  140.                     ]
  141.                 }
  142.             }
  143.         },
  144.         useminPrepare: {
  145.             html: '<%= yeoman.app %>/index.html',
  146.             options: {
  147.                 dest: '<%= yeoman.dist %>'
  148.             }
  149.         },
  150.         usemin: {
  151.             html: ['<%= yeoman.dist %>/{,*/}*.html'],
  152.             css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
  153.             options: {
  154.                 dirs: ['<%= yeoman.dist %>']
  155.             }
  156.         },
  157.         imagemin: {
  158.             dist: {
  159.                 files: [{
  160.                     expand: true,
  161.                     cwd: '<%= yeoman.app %>/images',
  162.                     src: '**/*.{png,jpg,jpeg}',
  163.                     dest: '<%= yeoman.dist %>/images'
  164.                 }]
  165.             }
  166.         },
  167.         svgmin: {
  168.             dist: {
  169.                 files: [{
  170.                     expand: true,
  171.                     cwd: '<%= yeoman.app %>/images',
  172.                     src: '{,*/}*.svg',
  173.                     dest: '<%= yeoman.dist %>/images'
  174.                 }]
  175.             }
  176.         },
  177.         cssmin: {
  178.             options: {
  179.                 banner: grunt.file.read('MASTHEAD')
  180.             },
  181.             dist: {
  182.                 files: {
  183.                     '<%= yeoman.dist %>/styles/main.css': [
  184.                         '.tmp/styles/{,*/}*.css',
  185.                         '<%= yeoman.app %>/styles/{,*/}*.css'
  186.                     ]
  187.                 }
  188.             }
  189.         },
  190.         htmlmin: {
  191.             dist: {
  192.                 options: {
  193.                     // removeComments: true,
  194.                     // removeCommentsFromCDATA: true,
  195.                     // https://github.com/yeoman/grunt-usemin/issues/44
  196.                     // collapseWhitespace: true,
  197.                     // collapseBooleanAttributes: true,
  198.                     // removeAttributeQuotes: true,
  199.                     // removeRedundantAttributes: true,
  200.                     // useShortDoctype: true,
  201.                     // removeEmptyAttributes: true,
  202.                     // removeOptionalTags: true
  203.                 },
  204.                 files: [{
  205.                     expand: true,
  206.                     cwd: '<%= yeoman.app %>',
  207.                     src: '*.html',
  208.                     dest: '<%= yeoman.dist %>'
  209.                 }]
  210.             }
  211.         },
  212.         // Put files not handled in other tasks here
  213.         copy: {
  214.             dist: {
  215.                 files: [{
  216.                     expand: true,
  217.                     dot: true,
  218.                     cwd: '<%= yeoman.app %>',
  219.                     dest: '<%= yeoman.dist %>',
  220.                     src: [
  221.                         '*.{ico,txt}',
  222.                         '.htaccess',
  223.                         'images/{,*/}*.{webp,gif}',
  224.                         'styles/fonts/*'
  225.                     ]
  226.                 }]
  227.             }
  228.         },
  229.         concurrent: {
  230.             server: [
  231.                 'compass:server',
  232.                 'jst'
  233.             ],
  234.             test: [
  235.                 'compass'
  236.             ],
  237.             dist: [
  238.                 'compass:dist',
  239.                 'imagemin',
  240.                 'svgmin',
  241.                 'htmlmin',
  242.                 'jst'
  243.             ]
  244.         },
  245.         jst: {
  246.             compile: {
  247.                 options: {
  248.                     processName: function(filename) {
  249.                         var pathPieces = filename.split('/');
  250.                         return pathPieces[pathPieces.length -1].replace(/\.html$/, '');
  251.                     }
  252.                 },
  253.                 files: {
  254.                   '<%= yeoman.app %>/scripts/templates.js': ['<%= yeoman.app %>/templates/*.html']
  255.                 }
  256.             }
  257.         },
  258.         cdn: {
  259.             options: {
  260.                 flatten: true
  261.             },
  262.             dist: {
  263.                 cdn: 'http://acdn.com/',
  264.                 src: [
  265.                     '<%= yeoman.dist %>/index.html',
  266.                     '<%= yeoman.dist %>/styles/*.css'
  267.                 ]
  268.             }
  269.         }
  270.     });
  271.  
  272.     grunt.renameTask('regarde', 'watch');
  273.  
  274.     grunt.registerTask('server', function (target) {
  275.         if (target === 'dist') {
  276.             return grunt.task.run([
  277.                 'build',
  278.                 'open',
  279.                 'connect:dist:keepalive'
  280.             ]);
  281.         }
  282.  
  283.         grunt.task.run([
  284.             'clean:server',
  285.             'concurrent:server',
  286.             'livereload-start',
  287.             'connect:livereload',
  288.             'open',
  289.             'watch'
  290.         ]);
  291.     });
  292.  
  293.     grunt.registerTask('test', [
  294.         'clean:server',
  295.         'concurrent:test',
  296.         'connect:test',
  297.     ]);
  298.  
  299.     grunt.registerTask('build', [
  300.         'clean:dist',
  301.         'useminPrepare',
  302.         'concurrent:dist',
  303.         'cssmin',
  304.         'concat',
  305.         'uglify',
  306.         'copy',
  307.         'rev',
  308.         'usemin'
  309.     ]);
  310.  
  311.     grunt.registerTask('deploy', [
  312.         'build',
  313.         'cdn'
  314.     ]);
  315.  
  316.     grunt.registerTask('default', [
  317.         'jshint',
  318.         'test',
  319.         'build'
  320.     ]);
  321. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement