Created
March 31, 2014 14:58
-
-
Save scmx/9894281 to your computer and use it in GitHub Desktop.
Gruntfile.js #grunt-connect-proxy #rsync #deploy #jade
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
| // Generated on 2013-11-12 using generator-angular 0.5.1 | |
| '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' | |
| // | |
| var proxySnippet = require('grunt-connect-proxy/lib/utils').proxyRequest; | |
| var deployTo = 'user@host:/path/to/app/'; | |
| module.exports = function (grunt) { | |
| require('load-grunt-tasks')(grunt); | |
| require('time-grunt')(grunt); | |
| grunt.initConfig({ | |
| shell: { | |
| deploy: { | |
| options: { | |
| stdout: true | |
| }, | |
| command: 'rsync -avz --delete dist/ ' + deployTo | |
| } | |
| }, | |
| yeoman: { | |
| // configurable paths | |
| app: require('./bower.json').appPath || 'app', | |
| dist: 'dist' | |
| }, | |
| 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:server', 'autoprefixer'] | |
| }, | |
| styles: { | |
| files: ['<%= yeoman.app %>/styles/{,*/}*.css'], | |
| tasks: ['copy:styles', 'autoprefixer'] | |
| }, | |
| jade: { | |
| files: [ | |
| '<%= yeoman.app %>/*.jade', | |
| '<%= yeoman.app %>/views/{,*/}*.jade' | |
| ], | |
| tasks: ['jade'] | |
| }, | |
| livereload: { | |
| options: { | |
| livereload: '<%= connect.options.livereload %>' | |
| }, | |
| files: [ | |
| '{<%= yeoman.app %>,.tmp}/{,*/}*.html', | |
| '.tmp/styles/{,*/}*.css', | |
| '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js', | |
| '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' | |
| ] | |
| } | |
| }, | |
| jade: { | |
| dist: { | |
| options: { | |
| pretty: true | |
| }, | |
| files: [{ | |
| expand: true, | |
| cwd: '<%= yeoman.app %>', | |
| dest: '.tmp', | |
| src: '{,*/}*.jade', | |
| ext: '.html' | |
| }] | |
| } | |
| }, | |
| autoprefixer: { | |
| options: ['last 1 version'], | |
| dist: { | |
| files: [{ | |
| expand: true, | |
| cwd: '.tmp/styles/', | |
| src: '{,*/}*.css', | |
| dest: '.tmp/styles/' | |
| }] | |
| } | |
| }, | |
| connect: { | |
| options: { | |
| port: 9001, | |
| // Change this to '0.0.0.0' to access the server from outside. | |
| hostname: 'localhost', | |
| livereload: 35734 | |
| }, | |
| proxies: [{ | |
| context: '/api/', | |
| host: 'localhost', | |
| port: 3000, | |
| https: false, | |
| changeOrigin: false, | |
| xforward: false, | |
| rewrite: { | |
| '^/api': '' | |
| } | |
| }], | |
| livereload: { | |
| options: { | |
| open: true, | |
| base: [ | |
| '.tmp', | |
| '<%= yeoman.app %>' | |
| ], | |
| middleware: function (connect, options) { | |
| var middlewares = []; | |
| var directory = options.directory || options.base[options.base.length - 1]; | |
| if (!Array.isArray(options.base)) { | |
| options.base = [options.base]; | |
| } | |
| options.base.forEach(function(base) { | |
| //Serve static files | |
| middlewares.push(connect.static(base)); | |
| }); | |
| // Setup the proxy | |
| middlewares.push(require('grunt-connect-proxy/lib/utils').proxyRequest); | |
| // Make directory browse-able | |
| middlewares.push(connect.directory(directory)); | |
| return middlewares; | |
| } | |
| } | |
| }, | |
| 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' | |
| }, | |
| all: [ | |
| 'Gruntfile.js', | |
| '<%= yeoman.app %>/scripts/{,*/}*.js' | |
| ] | |
| }, | |
| coffee: { | |
| options: { | |
| sourceMap: true, | |
| sourceRoot: '' | |
| }, | |
| 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', | |
| 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 | |
| }, | |
| dist: {}, | |
| server: { | |
| options: { | |
| debugInfo: true | |
| } | |
| } | |
| }, | |
| // not used since Uglify task does concat, | |
| // but still available if needed | |
| /*concat: { | |
| 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/*' | |
| ] | |
| } | |
| } | |
| }, | |
| useminPrepare: { | |
| html: '.tmp/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' | |
| }] | |
| } | |
| }, | |
| svgmin: { | |
| dist: { | |
| files: [{ | |
| expand: true, | |
| cwd: '<%= yeoman.app %>/images', | |
| src: '{,*/}*.svg', | |
| dest: '<%= yeoman.dist %>/images' | |
| }] | |
| } | |
| }, | |
| cssmin: { | |
| // By default, your `index.html` <!-- Usemin Block --> will take care of | |
| // minification. This option is pre-configured if you do not wish to use | |
| // Usemin blocks. | |
| // 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', 'views/{,*/}*.html'], | |
| dest: '<%= yeoman.dist %>' | |
| }, { | |
| expand: true, | |
| cwd: '.tmp', | |
| src: ['*.html', 'views/{,*/}*.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', | |
| 'bower_components/**/*', | |
| 'images/{,*/}*.{gif,webp}', | |
| 'gfx/{,*/}*.{jpg,gif,png}', | |
| 'styles/fonts/*' | |
| ] | |
| }, { | |
| expand: true, | |
| cwd: '.tmp/images', | |
| dest: '<%= yeoman.dist %>/images', | |
| src: [ | |
| 'generated/*' | |
| ] | |
| }] | |
| }, | |
| styles: { | |
| expand: true, | |
| cwd: '<%= yeoman.app %>/styles', | |
| dest: '.tmp/styles/', | |
| src: '{,*/}*.css' | |
| } | |
| }, | |
| concurrent: { | |
| server: [ | |
| 'jade', | |
| 'coffee:dist', | |
| 'compass:server', | |
| 'copy:styles' | |
| ], | |
| test: [ | |
| 'coffee', | |
| 'compass', | |
| 'copy:styles' | |
| ], | |
| dist: [ | |
| 'coffee', | |
| 'compass:dist', | |
| 'copy:styles', | |
| 'imagemin', | |
| 'svgmin', | |
| 'htmlmin' | |
| ] | |
| }, | |
| karma: { | |
| unit: { | |
| configFile: 'karma.conf.js', | |
| autoWatch: true, | |
| singleRun: false | |
| } | |
| }, | |
| cdnify: { | |
| dist: { | |
| html: ['<%= yeoman.dist %>/*.html'] | |
| } | |
| }, | |
| ngmin: { | |
| dist: { | |
| files: [{ | |
| expand: true, | |
| cwd: '<%= yeoman.dist %>/scripts', | |
| src: '*.js', | |
| dest: '<%= yeoman.dist %>/scripts' | |
| }] | |
| } | |
| }, | |
| uglify: { | |
| dist: { | |
| files: { | |
| '<%= yeoman.dist %>/scripts/scripts.js': [ | |
| '<%= yeoman.dist %>/scripts/scripts.js' | |
| ] | |
| } | |
| } | |
| } | |
| }); | |
| grunt.loadNpmTasks('grunt-connect-proxy'); | |
| grunt.loadNpmTasks('grunt-shell'); | |
| grunt.registerTask('server', function (target) { | |
| if (target === 'dist') { | |
| return grunt.task.run(['build', 'connect:dist:keepalive']); | |
| } | |
| grunt.task.run([ | |
| 'clean:server', | |
| 'concurrent:server', | |
| 'autoprefixer', | |
| 'configureProxies', | |
| 'connect:livereload', | |
| 'watch' | |
| ]); | |
| }); | |
| grunt.registerTask('test', [ | |
| 'clean:server', | |
| 'concurrent:test', | |
| 'autoprefixer', | |
| 'connect:test', | |
| 'karma' | |
| ]); | |
| grunt.registerTask('build', [ | |
| 'clean:dist', | |
| 'jade', | |
| 'useminPrepare', | |
| 'concurrent:dist', | |
| 'autoprefixer', | |
| 'concat', | |
| 'copy:dist', | |
| 'cdnify', | |
| 'ngmin', | |
| 'cssmin', | |
| 'uglify', | |
| 'rev', | |
| 'usemin' | |
| ]); | |
| grunt.registerTask('default', [ | |
| 'jshint', | |
| 'test', | |
| 'build' | |
| ]); | |
| grunt.registerTask('deploy', [ | |
| 'shell:deploy' | |
| ]); | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment