-
-
Save cemo/5899097 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)); | |
| }; | |
| // # Globbing | |
| // for performance reasons we're only matching one level down: | |
| // 'test/spec/{,*/}*.js' | |
| // use this if you want to match all subfolders: | |
| // 'test/spec/**/*.js' | |
| module.exports = function (grunt) { | |
| require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); | |
| var yeomanConfig = { | |
| app: 'app', | |
| dist: 'dist' | |
| }; | |
| grunt.initConfig({ | |
| yeoman: yeomanConfig, | |
| watch: { | |
| swig: { | |
| files: ['<%= yeoman.app %>/**/*.{swig,twig}'], | |
| tasks: ['swig'] | |
| }, | |
| recess: { | |
| files: ['<%= yeoman.app %>/styles/less/{,*/}*.less'], | |
| tasks: ['recess'] | |
| }, | |
| livereload: { | |
| files: [ | |
| '{.tmp,<%= 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: 9000, | |
| hostname: '0.0.0.0' | |
| }, | |
| livereload: { | |
| options: { | |
| middleware: function (connect) { | |
| return [ | |
| lrSnippet, | |
| mountFolder(connect, '.tmp'), | |
| mountFolder(connect, 'app') | |
| ]; | |
| } | |
| } | |
| }, | |
| test: { | |
| options: { | |
| middleware: function (connect) { | |
| return [ | |
| mountFolder(connect, '.tmp'), | |
| mountFolder(connect, 'test') | |
| ]; | |
| } | |
| } | |
| }, | |
| dist: { | |
| options: { | |
| middleware: function (connect) { | |
| return [ | |
| mountFolder(connect, 'dist') | |
| ]; | |
| } | |
| } | |
| } | |
| }, | |
| open: { | |
| server: { | |
| path: 'http://localhost:<%= connect.options.port %>' | |
| } | |
| }, | |
| clean: { | |
| dist: { | |
| files: [{ | |
| dot: true, | |
| src: [ | |
| '.tmp', | |
| '<%= yeoman.dist %>/*', | |
| '!<%= yeoman.dist %>/.git*' | |
| ] | |
| }] | |
| }, | |
| server: '.tmp', | |
| components: '<%= yeoman.dist %>/components' | |
| }, | |
| jshint: { | |
| options: { | |
| jshintrc: '.jshintrc' | |
| }, | |
| all: [ | |
| 'Gruntfile.js', | |
| '<%= yeoman.app %>/scripts/{,*/}*.js', | |
| '!<%= yeoman.app %>/scripts/vendor/*', | |
| 'test/spec/{,*/}*.js' | |
| ] | |
| }, | |
| mocha: { | |
| all: { | |
| options: { | |
| run: true, | |
| urls: ['http://localhost:<%= connect.options.port %>/index.html'] | |
| } | |
| } | |
| }, | |
| recess: { | |
| dist: { | |
| options: { | |
| compile: true | |
| }, | |
| files: { | |
| '.tmp/styles/main.css': ['<%= yeoman.app %>/styles/less/main.less'] | |
| } | |
| } | |
| }, | |
| swig: { | |
| dist: { | |
| init: { | |
| root: "<%= yeoman.app %>/", | |
| allowErrors: false, | |
| autoescape: true | |
| }, | |
| dest: "<%= yeoman.dist %>/", | |
| cwd: "<%= yeoman.app %>/", | |
| src: ['**/*.{swig,twig}'] | |
| }, | |
| server: { | |
| init: { | |
| root: "<%= yeoman.app %>/", | |
| allowErrors: false, | |
| autoescape: true | |
| }, | |
| dest: ".tmp/", | |
| cwd: "<%= yeoman.app %>/", | |
| src: ['**/*.{swig,twig}'] | |
| } | |
| }, | |
| rev: { | |
| dist: { | |
| files: { | |
| src: [ | |
| '<%= yeoman.dist %>/scripts/{,*/}*.js', | |
| '<%= yeoman.dist %>/styles/{,*/}*.css', | |
| '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}', | |
| '!<%= yeoman.dist %>/fonts/*' | |
| ] | |
| } | |
| } | |
| }, | |
| useminPrepare: { | |
| html: '<%= yeoman.dist %>/*.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: { | |
| 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 %>' | |
| }] | |
| } | |
| }, | |
| copy: { | |
| dist: { | |
| files: [ | |
| { | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>', | |
| dest: '<%= yeoman.dist %>', | |
| src: [ | |
| '*.{ico,txt}', | |
| 'fonts/*', | |
| '.htaccess', | |
| 'images/{,*/}*.{webp,gif}' | |
| ] | |
| }, | |
| { | |
| expand: true, | |
| cwd: '.tmp', | |
| dest: '<%= yeoman.dist %>', | |
| src: [ | |
| 'fonts/*' | |
| ] | |
| } | |
| ] | |
| }, | |
| server: { | |
| files: [ | |
| { | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>', | |
| dest: '<%= yeoman.dist %>', | |
| src: ['components/**'] | |
| }, | |
| { | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>/scripts/', | |
| dest: '<%= yeoman.dist %>/scripts/', | |
| src: ['*'] | |
| }, | |
| { | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>/components/font-awesome/font/', | |
| dest: '.tmp/fonts/', | |
| src: ['*'] | |
| }, | |
| { | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>/components/bootstrap/fonts/', | |
| dest: '.tmp/fonts/', | |
| src: ['*'] | |
| } | |
| ] | |
| } | |
| }, | |
| concurrent: { | |
| dist: [ | |
| 'recess', | |
| 'imagemin', | |
| 'svgmin', | |
| 'htmlmin' | |
| ] | |
| } | |
| }); | |
| grunt.renameTask('regarde', 'watch'); | |
| grunt.registerTask('server', function (target) { | |
| if (target === 'dist') { | |
| return grunt.task.run(['build', 'open', 'connect:dist:keepalive']); | |
| } | |
| grunt.task.run([ | |
| 'clean:server', | |
| 'swig:server', | |
| 'recess', | |
| 'copy:server', | |
| 'livereload-start', | |
| 'connect:livereload', | |
| 'open', | |
| 'watch' | |
| ]); | |
| }); | |
| grunt.registerTask('test', [ | |
| 'clean:server', | |
| 'recess', | |
| 'copy:server', | |
| 'connect:test', | |
| 'mocha' | |
| ]); | |
| grunt.registerTask('build', [ | |
| 'clean:dist', | |
| 'swig:dist', | |
| 'copy:server', | |
| 'useminPrepare', | |
| 'concurrent', | |
| 'cssmin', | |
| 'concat', | |
| 'uglify', | |
| 'copy', | |
| 'rev', | |
| 'usemin', | |
| 'clean:components', | |
| ]); | |
| grunt.registerTask('default', [ | |
| 'jshint', | |
| 'test', | |
| 'build' | |
| ]); | |
| }; |
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
| { | |
| "name": "project", | |
| "version": "0.0.0", | |
| "dependencies": {}, | |
| "devDependencies": { | |
| "grunt": "~0.4.1", | |
| "grunt-contrib-copy": "~0.4.1", | |
| "grunt-contrib-concat": "~0.1.3", | |
| "grunt-contrib-uglify": "~0.2.0", | |
| "grunt-contrib-jshint": "~0.4.1", | |
| "grunt-contrib-cssmin": "~0.6.0", | |
| "grunt-contrib-connect": "0.2.0", | |
| "grunt-contrib-clean": "0.4.0", | |
| "grunt-contrib-htmlmin": "0.1.3", | |
| "grunt-contrib-imagemin": "0.1.3", | |
| "grunt-contrib-livereload": "0.1.2", | |
| "grunt-swig": "~0.0.12", | |
| "grunt-rev": "~0.1.0", | |
| "grunt-usemin": "~0.1.10", | |
| "grunt-regarde": "~0.1.1", | |
| "grunt-mocha": "~0.3.0", | |
| "grunt-open": "~0.2.0", | |
| "grunt-svgmin": "0.1.0", | |
| "grunt-recess": "~0.3.1", | |
| "grunt-concurrent": "~0.1.0", | |
| "matchdep": "~0.1.1" | |
| }, | |
| "engines": { | |
| "node": ">=0.8.0" | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment