Created
April 29, 2013 15:43
-
-
Save andreareginato/5482470 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 'use strict'; | |
| var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet; | |
| var mountFolder = function (connect, dir) { | |
| return connect.static(require('path').resolve(dir)); | |
| }; | |
| module.exports = function (grunt) { | |
| // load all grunt tasks | |
| require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); | |
| // configurable paths | |
| var yeomanConfig = { | |
| app: 'app', | |
| dist: 'dist', | |
| test: 'test' | |
| }; | |
| try { | |
| var component = require('./component.json') | |
| yeomanConfig.name = component.name || 'no-name'; | |
| yeomanConfig.version = component.version || '0.0.0.undefined'; | |
| } catch (e) {} | |
| grunt.initConfig({ | |
| yeoman: yeomanConfig, | |
| watch: { | |
| coffee: { | |
| files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'], | |
| tasks: ['coffee:dist'] | |
| }, | |
| coffeeTest: { | |
| files: ['test/spec/{,*/}*.coffee'], | |
| tasks: ['coffee:test'] | |
| }, | |
| compass: { | |
| files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], | |
| tasks: ['compass'] | |
| }, | |
| livereload: { | |
| files: [ | |
| '<%= yeoman.app %>/{,*/}*.html', | |
| '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css', | |
| '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js', | |
| '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' | |
| ], | |
| tasks: ['livereload'] | |
| } | |
| }, | |
| connect: { | |
| options: { | |
| port: 3100, | |
| // Change this to '0.0.0.0' to access the server from outside. | |
| hostname: 'localhost' | |
| }, | |
| livereload: { | |
| options: { | |
| middleware: function (connect) { | |
| return [ | |
| lrSnippet, | |
| mountFolder(connect, '.tmp'), | |
| mountFolder(connect, yeomanConfig.app), | |
| mountFolder(connect, yeomanConfig.dist), | |
| mountFolder(connect, yeomanConfig.test) | |
| ]; | |
| } | |
| } | |
| }, | |
| test: { | |
| options: { | |
| middleware: function (connect) { | |
| return [ | |
| mountFolder(connect, '.tmp'), | |
| mountFolder(connect, yeomanConfig.app), | |
| mountFolder(connect, yeomanConfig.dist), | |
| mountFolder(connect, yeomanConfig.test) | |
| ]; | |
| } | |
| } | |
| } | |
| }, | |
| 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' | |
| ] | |
| }, | |
| karma: { | |
| unit: { | |
| configFile: 'karma.conf.js', | |
| singleRun: true | |
| } | |
| }, | |
| coffee: { | |
| dist: { | |
| files: [{ | |
| expand: true, | |
| cwd: '<%= yeoman.app %>/scripts', | |
| src: '{,*/}*.coffee', | |
| dest: '.tmp/scripts', | |
| ext: '.js' | |
| }] | |
| }, | |
| test: { | |
| files: [{ | |
| expand: true, | |
| cwd: 'test/spec', | |
| src: '{,*/}*.coffee', | |
| dest: '.tmp/spec', | |
| ext: '.js' | |
| }] | |
| } | |
| }, | |
| compass: { | |
| options: { | |
| sassDir: '<%= yeoman.app %>/styles', | |
| cssDir: '.tmp/styles', | |
| imagesDir: '<%= yeoman.app %>/images', | |
| javascriptsDir: '<%= yeoman.app %>/scripts', | |
| fontsDir: '<%= yeoman.app %>/styles/fonts', | |
| importPath: '<%= yeoman.app %>/components', | |
| relativeAssets: true | |
| }, | |
| dist: {}, | |
| server: { | |
| options: { | |
| debugInfo: true | |
| } | |
| } | |
| }, | |
| concat: { | |
| options: { | |
| banner: '/* <%= yeoman.name %> - v<%= yeoman.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %> */\n\n' | |
| }, | |
| dist: { | |
| files: { | |
| '<%= yeoman.dist %>/<%= yeoman.name %>.js': [ | |
| '.tmp/scripts/{,*/}*.js', | |
| '<%= yeoman.app %>/scripts/{,*/}*.js' | |
| ] | |
| } | |
| } | |
| }, | |
| 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' | |
| }] | |
| } | |
| }, | |
| cssmin: { | |
| options: { | |
| banner: '/* <%= yeoman.name %> - v<%= yeoman.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %> */' | |
| }, | |
| dist: { | |
| files: { | |
| '<%= yeoman.dist %>/<%= yeoman.name %>.min.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 %>' | |
| //}] | |
| } | |
| }, | |
| cdnify: { | |
| dist: { | |
| html: ['<%= yeoman.dist %>/*.html'] | |
| } | |
| }, | |
| ngmin: { | |
| dist: { | |
| files: [{ | |
| expand: true, | |
| cwd: '<%= yeoman.dist %>/scripts', | |
| src: '*.js', | |
| dest: '<%= yeoman.dist %>/scripts' | |
| }] | |
| } | |
| }, | |
| uglify: { | |
| options: { | |
| banner: '/* <%= yeoman.name %> - v<%= yeoman.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %> */\n' | |
| }, | |
| dist: { | |
| files: { | |
| '<%= yeoman.dist %>/<%= yeoman.name %>.min.js': [ | |
| '<%= yeoman.dist %>/<%= yeoman.name %>.js' | |
| ] | |
| } | |
| } | |
| }, | |
| min: { | |
| 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/*' | |
| ] | |
| } | |
| } | |
| }, | |
| copy: { | |
| dist: { | |
| files: [{ | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>', | |
| dest: '<%= yeoman.dist %>', | |
| src: [ | |
| 'images/{,*/}*.{gif,webp}', | |
| 'styles/fonts/*', | |
| 'views/templates/*' | |
| ] | |
| }] | |
| } | |
| } | |
| }); | |
| grunt.renameTask('regarde', 'watch'); | |
| grunt.registerTask('server', [ | |
| 'clean:server', | |
| 'coffee:dist', | |
| 'compass:server', | |
| 'livereload-start', | |
| 'connect:livereload', | |
| 'open', | |
| 'watch' | |
| ]); | |
| grunt.registerTask('test', [ | |
| 'clean:server', | |
| 'coffee', | |
| 'compass', | |
| 'connect:test', | |
| 'karma' | |
| ]); | |
| grunt.registerTask('build', [ | |
| 'clean:dist', | |
| //'test', | |
| 'coffee', | |
| 'compass:dist', | |
| 'useminPrepare', | |
| 'imagemin', | |
| 'cssmin', | |
| 'htmlmin', | |
| 'concat', | |
| 'copy', | |
| 'cdnify', | |
| 'ngmin', | |
| 'uglify', | |
| 'usemin', | |
| 'concat' | |
| ]); | |
| grunt.registerTask('default', ['build']); | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment