Permalink
| 'use strict'; | |
| // # 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) { | |
| // load all grunt tasks | |
| require('load-grunt-tasks')(grunt); | |
| // show elapsed time at the end | |
| require('time-grunt')(grunt); | |
| // configurable paths | |
| var yeomanConfig = { | |
| app: require('./bower.json').appPath || 'transfersh-web', | |
| dist: 'transfersh-server/static/' | |
| }; | |
| grunt.initConfig({ | |
| yeoman: yeomanConfig, | |
| watch: { | |
| less: { | |
| files: ['<%= yeoman.app %>/styles/{,*/}*.less'], | |
| tasks: ['less'] | |
| }, | |
| gruntfile: { | |
| files: ['Gruntfile.js'] | |
| }, | |
| includes: { | |
| files: ['<%= yeoman.app %>/*.html', '.tmp/*.html'], | |
| tasks: ['includes:server'] | |
| }, | |
| livereload: { | |
| options: { | |
| livereload: '<%= connect.options.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: ['includes:server'] | |
| } | |
| }, | |
| connect: { | |
| options: { | |
| port: 9000, | |
| // change this to '0.0.0.0' to access the server from outside | |
| hostname: 'localhost', | |
| livereload: 35729 | |
| }, | |
| livereload: { | |
| options: { | |
| open: true, | |
| base: [ | |
| '.tmp', | |
| '<%= yeoman.app %>' | |
| ] | |
| } | |
| }, | |
| test: { | |
| options: { | |
| port: 9001, | |
| base: [ | |
| '.tmp', | |
| 'test', | |
| '<%= yeoman.app %>' | |
| ] | |
| } | |
| }, | |
| dist: { | |
| options: { | |
| base: '<%= yeoman.dist %>' | |
| } | |
| } | |
| }, | |
| clean: { | |
| dist: { | |
| files: [{ | |
| dot: true, | |
| src: [ | |
| '.tmp', | |
| '<%= yeoman.dist %>/*', | |
| '!<%= yeoman.dist %>/.git*' | |
| ] | |
| }] | |
| }, | |
| server: '.tmp' | |
| }, | |
| jshint: { | |
| options: { | |
| jshintrc: '.jshintrc', | |
| reporter: require('jshint-stylish') | |
| }, | |
| all: [ | |
| 'Gruntfile.js', | |
| '<%= yeoman.app %>/scripts/{,*/}*.js', | |
| '!<%= yeoman.app %>/scripts/vendor/*', | |
| 'test/spec/{,*/}*.js' | |
| ] | |
| }, | |
| less: { | |
| dist: { | |
| files: { | |
| '<%= yeoman.app %>/styles/main.css': ['<%= yeoman.app %>/styles/main.less'] | |
| }, | |
| options: { | |
| sourceMap: true, | |
| sourceMapFilename: '<%= yeoman.app %>/styles/main.css.map', | |
| sourceMapBasepath: '<%= yeoman.app %>/', | |
| sourceMapRootpath: '/' | |
| } | |
| } | |
| }, | |
| includes: { | |
| build: { | |
| cwd: '<%= yeoman.app %>', | |
| src: ['*.html', 'includes/*.html'], | |
| dest: '<%= yeoman.dist %>', | |
| options: { | |
| flatten: true, | |
| banner: '' | |
| } | |
| }, | |
| server: { | |
| cwd: '<%= yeoman.app %>', | |
| src: ['*.html', 'includes/*.html'], | |
| dest: '.tmp/', | |
| options: { | |
| flatten: true, | |
| banner: '' | |
| } | |
| } | |
| }, | |
| // not used since Uglify task does concat, | |
| // but still available if needed | |
| /*concat: { | |
| dist: {} | |
| },*/ | |
| // not enabled since usemin task does concat and uglify | |
| // check index.html to edit your build targets | |
| // enable this task if you prefer defining your build targets here | |
| /*uglify: { | |
| dist: {} | |
| },*/ | |
| rev: { | |
| dist: { | |
| files: { | |
| src: [ | |
| '<%= yeoman.dist %>/scripts/{,*/}*.js', | |
| '<%= yeoman.dist %>/styles/{,*/}*.css', | |
| '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', | |
| '<%= yeoman.dist %>/fonts/{,*/}*.*' | |
| ] | |
| } | |
| } | |
| }, | |
| useminPrepare: { | |
| html: '<%= yeoman.app %>/*.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: { | |
| 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,png,txt}', | |
| 'fonts/{,*/}*.*', | |
| '.htaccess', | |
| 'index.txt', | |
| '404.txt', | |
| 'images/{,*/}*.{webp,gif,svg}' | |
| ] | |
| }] | |
| }, | |
| server: { | |
| files: [{ | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>/bower_components/font-awesome/fonts/', | |
| dest: '<%= yeoman.app %>/fonts/font-awesome', | |
| src: ['*'] | |
| }, { | |
| expand: true, | |
| dot: true, | |
| cwd: '<%= yeoman.app %>/bower_components/bootstrap/dist/fonts/', | |
| dest: '<%= yeoman.app %>/fonts/glyphicons', | |
| src: ['*'] | |
| }] | |
| } | |
| }, | |
| concurrent: { | |
| dist: [ | |
| 'less', | |
| 'imagemin', | |
| 'htmlmin' | |
| ] | |
| } | |
| }); | |
| grunt.registerTask('serve', function (target) { | |
| if (target === 'dist') { | |
| return grunt.task.run(['build', 'connect:dist:keepalive']); | |
| } | |
| grunt.task.run([ | |
| 'clean:server', | |
| 'less', | |
| 'includes:server', | |
| 'copy:server', | |
| 'connect:livereload', | |
| 'watch' | |
| ]); | |
| }); | |
| grunt.registerTask('server', function () { | |
| grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.'); | |
| grunt.task.run(['serve']); | |
| }); | |
| grunt.registerTask('test', [ | |
| 'clean:server', | |
| 'less', | |
| 'copy:server', | |
| 'connect:test', | |
| ]); | |
| grunt.registerTask('build', [ | |
| 'clean:dist', | |
| 'copy:server', | |
| 'useminPrepare', | |
| 'concurrent', | |
| 'cssmin', | |
| 'concat', | |
| 'includes:build', | |
| 'uglify', | |
| 'copy', | |
| 'usemin', | |
| ]); | |
| grunt.registerTask('default', [ | |
| 'jshint', | |
| 'test', | |
| 'build' | |
| ]); | |
| }; |