| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- // Generated on 2013-10-07 using generator-webapp 0.4.3
- 'use strict';
- // # 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) {
- // show elapsed time at the end
- require('time-grunt')(grunt);
- // load all grunt tasks
- require('load-grunt-tasks')(grunt);
- grunt.initConfig({
- // configurable paths
- uglify: {
- options: {
- mangle: false
- },
- },
- yeoman: {
- app: 'app',
- dist: 'dist'
- },
- watch: {
- compass: {
- files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
- tasks: ['compass:server', 'autoprefixer']
- },
- styles: {
- files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
- tasks: ['copy:styles', 'autoprefixer']
- },
- livereload: {
- options: {
- livereload: '<%= connect.options.livereload %>'
- },
- files: [
- '<%= yeoman.app %>/*.html',
- '.tmp/styles/{,*/}*.css',
- '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
- '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
- ]
- }
- },
- connect: {
- options: {
- port: 9000,
- livereload: 35729,
- // change this to '0.0.0.0' to access the server from outside
- hostname: 'localhost'
- },
- livereload: {
- options: {
- open: true,
- base: [
- '.tmp',
- '<%= yeoman.app %>'
- ]
- }
- },
- test: {
- options: {
- base: [
- '.tmp',
- 'test',
- '<%= yeoman.app %>'
- ]
- }
- },
- dist: {
- options: {
- open: true,
- base: '<%= yeoman.dist %>'
- }
- }
- },
- clean: {
- dist: {
- files: [{
- dot: true,
- src: [
- '.tmp',
- '<%= yeoman.dist %>/*',
- '!<%= yeoman.dist %>/.git*'
- ]
- }]
- },
- server: '.tmp'
- },
- jshint: {
- options: {
- jshintrc: '.jshintrc'
- },
- all: [
- '<%= yeoman.app %>/scripts/{,*/}*.js',
- '!<%= yeoman.app %>/scripts/vendor/*',
- ]
- },
- mocha: {
- all: {
- options: {
- run: true,
- urls: ['http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.html']
- }
- }
- },
- compass: {
- options: {
- sassDir: '<%= yeoman.app %>/styles',
- cssDir: '.tmp/styles',
- generatedImagesDir: '.tmp/images/generated',
- imagesDir: '<%= yeoman.app %>/images',
- javascriptsDir: '<%= yeoman.app %>/scripts',
- fontsDir: '<%= yeoman.app %>/styles/fonts',
- importPath: '<%= yeoman.app %>/bower_components',
- httpImagesPath: '/images',
- httpGeneratedImagesPath: '/images/generated',
- httpFontsPath: '/styles/fonts',
- relativeAssets: false,
- assetCacheBuster: false
- },
- dist: {
- options: {
- generatedImagesDir: '<%= yeoman.dist %>/images/generated'
- }
- },
- server: {
- options: {
- debugInfo: true
- }
- }
- },
- autoprefixer: {
- options: {
- browsers: ['last 1 version']
- },
- dist: {
- files: [{
- expand: true,
- cwd: '.tmp/styles/',
- src: '{,*/}*.css',
- dest: '.tmp/styles/'
- }]
- }
- },
- // not used since Uglify task does concat,
- // but still available if needed
- /*concat: {
- dist: {}
- },*/
- requirejs: {
- dist: {
- // Options: https://github.com/jrburke/r.js/blob/master/build/example.build.js
- options: {
- // `name` and `out` is set by grunt-usemin
- baseUrl: '<%= yeoman.app %>/scripts',
- optimize: 'none',
- // TODO: Figure out how to make sourcemaps work with grunt-usemin
- // https://github.com/yeoman/grunt-usemin/issues/30
- //generateSourceMaps: true,
- // required to support SourceMaps
- // http://requirejs.org/docs/errors.html#sourcemapcomments
- preserveLicenseComments: false,
- useStrict: true,
- wrap: true
- //uglify2: {} // https://github.com/mishoo/UglifyJS2
- }
- }
- },
- useminPrepare: {
- options: {
- dest: '<%= yeoman.dist %>'
- },
- html: ['<%= yeoman.app %>/**/*.html']
- },
- usemin: {
- options: {
- dirs: ['<%= yeoman.dist %>']
- },
- html: ['<%= yeoman.dist %>/{,*/}*.html'],
- css: ['<%= yeoman.dist %>/styles/{,*/}*.css']
- },
- 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: {
- // This task is pre-configured if you do not wish to use Usemin
- // blocks for your CSS. By default, the Usemin block from your
- // `index.html` will take care of minification, e.g.
- //
- // <!-- build:css({.tmp,app}) styles/main.css -->
- //
- // 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',
- 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',
- 'images/{,*/}*.{webp,gif}',
- 'styles/fonts/{,*/}*.*',
- 'views/*.*',
- 'index.html',
- 'bower_components/sass-bootstrap/fonts/*.*'
- ]
- }]
- },
- styles: {
- expand: true,
- dot: true,
- cwd: '<%= yeoman.app %>/styles',
- dest: '.tmp/styles/',
- src: '{,*/}*.css'
- }
- },
- modernizr: {
- devFile: '<%= yeoman.app %>/bower_components/modernizr/modernizr.js',
- outputFile: '<%= yeoman.dist %>/bower_components/modernizr/modernizr.js',
- files: [
- '<%= yeoman.dist %>/scripts/{,*/}*.js',
- '<%= yeoman.dist %>/styles/{,*/}*.css',
- '!<%= yeoman.dist %>/scripts/vendor/*'
- ],
- uglify: true
- },
- concurrent: {
- server: [
- 'compass',
- 'copy:styles'
- ],
- test: [
- 'copy:styles'
- ],
- dist: [
- 'compass',
- 'copy:styles',
- 'imagemin',
- 'svgmin',
- 'htmlmin'
- ]
- },
- bower: {
- options: {
- exclude: ['modernizr']
- },
- all: {
- rjsConfig: '<%= yeoman.app %>/scripts/main.js'
- }
- }
- });
- grunt.registerTask('server', function (target) {
- if (target === 'dist') {
- return grunt.task.run(['build', 'connect:dist:keepalive']);
- }
- grunt.task.run([
- 'clean:server',
- 'concurrent:server',
- 'autoprefixer',
- 'connect:livereload',
- 'watch'
- ]);
- });
- grunt.registerTask('test', [
- 'clean:server',
- 'concurrent:test',
- 'autoprefixer',
- 'connect:test',
- 'mocha'
- ]);
- grunt.registerTask('build', [
- 'clean:dist',
- 'useminPrepare',
- 'concurrent:dist',
- 'autoprefixer',
- 'concat',
- 'cssmin',
- 'uglify',
- 'usemin',
- 'copy:dist'
- ]);
- grunt.registerTask('default', [
- 'jshint',
- 'test',
- 'build'
- ]);
- };
|