Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Generated on 2016-11-20 using generator-angular 0.15.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'
- module.exports = function (grunt) {
- // Time how long tasks take. Can help when optimizing build times
- require('time-grunt')(grunt);
- require('load-grunt-config')(grunt, {
- jitGrunt: true
- });
- // Automatically load required Grunt tasks
- require('jit-grunt')(grunt, {
- start: 'start',
- useminPrepare: 'grunt-usemin',
- ngtemplates: 'grunt-angular-templates',
- cdnify: 'grunt-google-cdn'
- });
- // Configurable paths for the application
- var appConfig = {
- app: require('./bower.json').appPath || 'app',
- dist: 'dist'
- };
- // Define the configuration for all the tasks
- grunt.initConfig({
- // Project settings
- config: appConfig,
- // Watches files for changes and runs tasks based on the changed files
- watch: {
- livereload: {
- options: { livereload: true }
- },
- bower: {
- files: ['bower.json'],
- tasks: ['wiredep']
- },
- js: {
- files: ['<%=config.app %>/scripts/{,*/}*.js'],
- tasks: ['newer:jshint:all', 'newer:jscs:all'],
- options: {
- livereload: '<%= connect.options.livereload %>'
- }
- },
- jsTest: {
- files: ['test/spec/{,*/}*.js'],
- tasks: ['newer:jshint:test', 'newer:jscs:test', 'karma']
- },
- compass: {
- files: ['<%=config.app %>/styles/{,*/}*.{scss,sass}'],
- tasks: ['compass:server', 'postcss:server']
- },
- gruntfile: {
- files: ['Gruntfile.js']
- },
- livereload: {
- options: {
- livereload: '<%= connect.options.livereload %>'
- },
- files: [
- '<%=config.app %>/{,*/}*.html',
- '.tmp/styles/{,*/}*.css',
- '<%=app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
- ]
- }
- },
- // The actual grunt server settings
- 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,
- middleware: function (connect) {
- return [
- connect.static('.tmp'),
- connect().use(
- '/bower_components',
- connect.static('./bower_components')
- ),
- connect().use(
- '/app/styles',
- connect.static('./app/styles')
- ),
- connect.static(appConfig.app)
- ];
- }
- }
- },
- test: {
- options: {
- port: 9001,
- middleware: function (connect) {
- return [
- connect.static('.tmp'),
- connect.static('test'),
- connect().use(
- '/bower_components',
- connect.static('./bower_components')
- ),
- connect.static(appConfig.app)
- ];
- }
- }
- },
- dist: {
- options: {
- open: true,
- base: '<%= config.dist %>'
- }
- }
- },
- // Make sure there are no obvious mistakes
- jshint: {
- options: {
- jshintrc: '.jshintrc',
- reporter: require('jshint-stylish')
- },
- all: {
- src: [
- 'Gruntfile.js',
- '<%= config.app %>/scripts/{,*/}*.js'
- ]
- },
- test: {
- options: {
- jshintrc: 'test/.jshintrc'
- },
- src: ['test/spec/{,*/}*.js']
- }
- },
- // Make sure code styles are up to par
- jscs: {
- options: {
- config: '.jscsrc',
- verbose: true
- },
- all: {
- src: [
- 'Gruntfile.js',
- '<%= config.app %>/scripts/{,*/}*.js'
- ]
- },
- test: {
- src: ['test/spec/{,*/}*.js']
- }
- },
- // Empties folders to start fresh
- clean: {
- dist: {
- files: [{
- dot: true,
- src: [
- '.tmp',
- '<%= config.dist %>/{,*/}*',
- '!<%= config.dist %>/.git{,*/}*'
- ]
- }]
- },
- server: '.tmp'
- },
- // Add vendor prefixed styles
- postcss: {
- options: {
- processors: [
- require('autoprefixer-core')({browsers: ['last version']})
- ]
- },
- server: {
- options: {
- map: true
- },
- files: [{
- expand: true,
- cwd: '.tmp/styles/',
- src: '{,*/}*.css',
- dest: '.tmp/styles/'
- }]
- },
- dist: {
- files: [{
- expand: true,
- cwd: '.tmp/styles/',
- src: '{,*/}*.css',
- dest: '.tmp/styles/'
- }]
- }
- },
- // Automatically inject Bower components into the app
- wiredep: {
- app: {
- src: ['<%= config.app %>/index.html'],
- ignorePath: /..//
- },
- test: {
- devDependencies: true,
- src: '<%= karma.unit.configFile %>',
- ignorePath: /..//,
- fileTypes:{
- js: {
- block: /(([st]*)/{2}s*?bower:s*?(S*))(n|r|.)*?(/{2}s*endbower)/gi,
- detect: {
- js: /'(.*.js)'/gi
- },
- replace: {
- js: ''{{filePath}}','
- }
- }
- }
- },
- sass: {
- src: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],
- ignorePath: /(../){1,2}bower_components//
- }
- },
- // Compiles Sass to CSS and generates necessary files if requested
- compass: {
- options: {
- sassDir: '<%= config.app %>/styles',
- cssDir: '.tmp/styles',
- generatedImagesDir: '.tmp/images/generated',
- imagesDir: '<%= config.app %>/images',
- javascriptsDir: '<%= config.app %>/scripts',
- fontsDir: '<%= config.app %>/styles/fonts',
- importPath: './bower_components',
- httpImagesPath: '/images',
- httpGeneratedImagesPath: '/images/generated',
- httpFontsPath: '/styles/fonts',
- relativeAssets: false,
- assetCacheBuster: false,
- raw: 'Sass::Script::Number.precision = 10n'
- },
- dist: {
- options: {
- generatedImagesDir: '<%= config.dist %>/images/generated'
- }
- },
- server: {
- options: {
- sourcemap: true
- }
- }
- },
- // Renames files for browser caching purposes
- filerev: {
- dist: {
- src: [
- '<%= config.dist %>/scripts/{,*/}*.js',
- '<%= config.dist %>/styles/{,*/}*.css',
- '<%= config.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
- '<%= config.dist %>/styles/fonts/*'
- ]
- }
- },
- // Reads HTML for usemin blocks to enable smart builds that automatically
- // concat, minify and revision files. Creates configurations in memory so
- // additional tasks can operate on them
- useminPrepare: {
- html: '<%= config.app %>/index.html',
- options: {
- dest: '<%= config.dist %>',
- flow: {
- html: {
- steps: {
- js: ['concat', 'uglifyjs'],
- css: ['cssmin']
- },
- post: {}
- }
- }
- }
- },
- // Performs rewrites based on filerev and the useminPrepare configuration
- usemin: {
- html: ['<%= config.dist %>/{,*/}*.html'],
- css: ['<%= config.dist %>/styles/{,*/}*.css'],
- js: ['<%= config.dist %>/scripts/{,*/}*.js'],
- options: {
- assetsDirs: [
- '<%= config.dist %>',
- '<%= config.dist %>/images',
- '<%= config.dist %>/styles'
- ],
- patterns: {
- js: [[/(images/[^''""]*.(png|jpg|jpeg|gif|webp|svg))/g, 'Replacing references to images']]
- }
- }
- },
- imagemin: {
- dist: {
- files: [{
- expand: true,
- cwd: '<%= config.app %>/images',
- src: '{,*/}*.{png,jpg,jpeg,gif}',
- dest: '<%= config.dist %>/images'
- }]
- }
- },
- svgmin: {
- dist: {
- files: [{
- expand: true,
- cwd: '<%= config.app %>/images',
- src: '{,*/}*.svg',
- dest: '<%= config.dist %>/images'
- }]
- }
- },
- htmlmin: {
- dist: {
- options: {
- collapseWhitespace: true,
- conservativeCollapse: true,
- collapseBooleanAttributes: true,
- removeCommentsFromCDATA: true
- },
- files: [{
- expand: true,
- cwd: '<%= config.dist %>',
- src: ['*.html'],
- dest: '<%= config.dist %>'
- }]
- }
- },
- ngtemplates: {
- dist: {
- options: {
- module: 'resourcesApp',
- htmlmin: '<%= htmlmin.dist.options %>',
- usemin: 'scripts/scripts.js'
- },
- cwd: '<%= config.app %>',
- src: 'views/{,*/}*.html',
- dest: '.tmp/templateCache.js'
- }
- },
- // ng-annotate tries to make the code safe for minification automatically
- // by using the Angular long form for dependency injection.
- ngAnnotate: {
- dist: {
- files: [{
- expand: true,
- cwd: '.tmp/concat/scripts',
- src: '*.js',
- dest: '.tmp/concat/scripts'
- }]
- }
- },
- // Replace Google CDN references
- cdnify: {
- dist: {
- html: ['<%= config.dist %>/*.html']
- }
- },
- // Copies remaining files to places other tasks can use
- copy: {
- dist: {
- files: [{
- expand: true,
- dot: true,
- cwd: '<%= config.app %>',
- dest: '<%= config.dist %>',
- src: [
- '*.{ico,png,txt}',
- '*.html',
- 'images/{,*/}*.{webp}',
- 'styles/fonts/{,*/}*.*'
- ]
- }, {
- expand: true,
- cwd: '.tmp/images',
- dest: '<%= config.dist %>/images',
- src: ['generated/*']
- }, {
- expand: true,
- cwd: '.',
- src: 'bower_components/bootstrap-sass-official/assets/fonts/bootstrap/*',
- dest: '<%= config.dist %>'
- }]
- },
- styles: {
- expand: true,
- cwd: '<%= config.app %>/styles',
- dest: '.tmp/styles/',
- src: '{,*/}*.css'
- }
- },
- // Run some tasks in parallel to speed up the build process
- concurrent: {
- server: [
- 'compass:server'
- ],
- test: [
- 'compass'
- ],
- dist: [
- 'compass:dist',
- 'imagemin',
- 'svgmin'
- ]
- },
- // Test settings
- karma: {
- unit: {
- configFile: 'test/karma.conf.js',
- singleRun: true
- }
- }
- });
- grunt.registerTask('serve', 'Compile then start a connect web server', function (target) {
- if (target === 'dist') {
- return grunt.task.run(['build', 'connect:dist:keepalive']);
- }
- grunt.task.run([
- 'clean:server',
- 'wiredep',
- 'concurrent:server',
- 'postcss:server',
- 'connect:livereload',
- 'watch'
- ]);
- });
- grunt.registerTask('server', 'DEPRECATED TASK. Use the "serve" task instead', function (target) {
- grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
- grunt.task.run(['serve:' + target]);
- });
- grunt.registerTask('test', [
- 'clean:server',
- 'wiredep',
- 'concurrent:test',
- 'postcss',
- 'connect:test',
- 'karma'
- ]);
- grunt.registerTask('build', [
- 'clean:dist',
- 'wiredep',
- 'useminPrepare',
- 'concurrent:dist',
- 'postcss',
- 'ngtemplates',
- 'concat',
- 'ngAnnotate',
- 'copy:dist',
- 'cdnify',
- 'cssmin',
- 'uglify',
- 'filerev',
- 'usemin',
- 'htmlmin'
- ]);
- grunt.registerTask('default', [
- 'newer:jshint',
- 'newer:jscs',
- 'test',
- 'build'
- ]);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement