title: Yeoman Gruntfile dist task Not copying styles from .tmp folder (AngularJs)
body: <p>For some reason my Angular grunt task is not copying the stylesheets from the .tmp folder when I run "grunt". "Grunt server" works fine.</p>
  
  <p>I've been staring at this for quite some time and have tried a couple different things, however it's not working for me, any help would be greatly appreciated!</p>
  
  <pre><code>// Generated on 2013-11-05 using generator-angular 0.5.1
  'use strict';
  var LIVERELOAD_PORT = 35729;
  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 recursively match all subfolders:
  // 'test/spec/**/*.js'
  
  module.exports = function (grunt) {
      require('load-grunt-tasks')(grunt);
      require('time-grunt')(grunt);
  
      // configurable paths
      var yeomanConfig = {
          app: 'app',
          dist: 'dist'
      };
  
      try {
          yeomanConfig.app = require('./bower.json').appPath || yeomanConfig.app;
      } catch (e) {}
  
      grunt.initConfig({
          yeoman: yeomanConfig,
          watch: {
              // coffee: {
              //   files: ['&lt;%= yeoman.app %&gt;/scripts/{,*/}*.coffee'],
              //   tasks: ['coffee:dist']
              // },
              // coffeeTest: {
              //   files: ['test/spec/{,*/}*.coffee'],
              //   tasks: ['coffee:test']
              // },
              compass: {
                  files: ['&lt;%= yeoman.app %&gt;/styles/{,*/}*.{scss,sass}'],
                  tasks: ['compass:server', 'autoprefixer']
              },
              styles: {
                  files: ['&lt;%= yeoman.app %&gt;/styles/{,*/}*.css'],
                  tasks: ['copy:styles', 'autoprefixer']
              },
              livereload: {
                  options: {
                      livereload: LIVERELOAD_PORT
                  },
                  files: [
                      '&lt;%= yeoman.app %&gt;/{,*/}*.html',
                      '.tmp/styles/{,*/}*.css',
                      '{.tmp,&lt;%= yeoman.app %&gt;}/scripts/{,*/}*.js',
                      '&lt;%= yeoman.app %&gt;/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
                  ]
              }
          },
          autoprefixer: {
              options: ['last 1 version'],
              dist: {
                  files: [{
                      expand: true,
                      cwd: '.tmp/styles/',
                      src: '{,*/}*.css',
                      dest: '.tmp/styles/'
                  }]
              }
          },
          connect: {
              options: {
                  port: 9000,
                  // Change this to '0.0.0.0' to access the server from outside.
                  hostname: 'localhost'
              },
              livereload: {
                  options: {
                      middleware: function (connect) {
                          return [
                              mountFolder(connect, '.tmp'),
                              mountFolder(connect, yeomanConfig.app)
                          ];
                      }
                  }
              },
              test: {
                  options: {
                      middleware: function (connect) {
                          return [
                              mountFolder(connect, '.tmp'),
                              mountFolder(connect, 'test')
                          ];
                      }
                  }
              },
              dist: {
                  options: {
                      middleware: function (connect) {
                          return [
                              mountFolder(connect, yeomanConfig.dist)
                          ];
                      }
                  }
              }
          },
          open: {
              server: {
                  url: 'http://localhost:&lt;%= connect.options.port %&gt;'
              }
          },
          clean: {
       options: { force: true },
              dist: {
                  files: [{
                      dot: true,
                      src: [
                          '.tmp',
                          '&lt;%= yeoman.dist %&gt;/*',
                          '!&lt;%= yeoman.dist %&gt;/.git*'
                      ]
                  }]
              },
              server: '.tmp'
          },
      // jshint: {
          //   options: {
          //       jshintrc: '.jshintrc'
          //   },
          //   all: [
          //       'Gruntfile.js',
          //       '&lt;%= yeoman.app %&gt;/scripts/{,*/}*.js'
          //   ]
          // },
          // coffee: {
          //   options: {
          //       sourceMap: true,
          //       sourceRoot: ''
          //   },
          //   dist: {
          //       files: [{
          //           expand: true,
          //           cwd: '&lt;%= yeoman.app %&gt;/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: '&lt;%= yeoman.app %&gt;/styles',
                  cssDir: '.tmp/styles',
                  generatedImagesDir: '.tmp/images/generated',
                  imagesDir: '&lt;%= yeoman.app %&gt;/images',
                  javascriptsDir: '&lt;%= yeoman.app %&gt;/scripts',
                  fontsDir: '&lt;%= yeoman.app %&gt;/fonts',
                  importPath: '&lt;%= yeoman.app %&gt;/bower_components',
                  httpImagesPath: '/images',
                  httpGeneratedImagesPath: '/images/generated',
                  httpFontsPath: '/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: [
                          // removed these as the prod server wont like all the new commits
                          // '&lt;%= yeoman.dist %&gt;/scripts/{,*/}*.js',
                          // '&lt;%= yeoman.dist %&gt;/styles/{,*/}*.css',
                          // '&lt;%= yeoman.dist %&gt;/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', HAD TO REMOVE THIS SINCE IT WASN"T REVVING SOME FILES
                          // '&lt;%= yeoman.dist %&gt;/fonts/*'
                      ]
                  }
              }
          },
          useminPrepare: {
              html: '&lt;%= yeoman.app %&gt;/index.html',
              options: {
                  dest: '&lt;%= yeoman.dist %&gt;'
              }
          },
          usemin: {
              html: ['&lt;%= yeoman.dist %&gt;/{,*/}*.html'],
              css: ['&lt;%= yeoman.dist %&gt;/styles/{,*/}*.css'],
              options: {
                  dirs: ['&lt;%= yeoman.dist %&gt;']
              }
          },
          imagemin: {
              dist: {
                  files: [{
                      expand: true,
                      cwd: '&lt;%= yeoman.app %&gt;/images',
                      src: '{,*/}*.{png,jpg,jpeg}',
                      dest: '&lt;%= yeoman.dist %&gt;/images'
                  }]
              }
          },
          // svgmin: {
          //   dist: {
          //       files: [{
          //           expand: true,
          //           cwd: '&lt;%= yeoman.app %&gt;/images',
          //           src: '{,*/}*.svg',
          //           dest: '&lt;%= yeoman.dist %&gt;/images'
          //       }]
          //   }
          // },
          cssmin: {
              // By default, your `index.html` &lt;!-- Usemin Block --&gt; will take care of
              // minification. This option is pre-configured if you do not wish to use
              // Usemin blocks.
              // dist: {
              //   files: {
              //       '&lt;%= yeoman.dist %&gt;/styles/main.css': [
              //           '.tmp/styles/{,*/}*.css',
              //           '&lt;%= yeoman.app %&gt;/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: '&lt;%= yeoman.app %&gt;',
                      src: ['*.html', 'views/{,*/}{,*/}{,*/}{,*/}{,*/}{,*/}*.html'],
                      dest: '&lt;%= yeoman.dist %&gt;'
                  }]
              }
          },
          // Put files not handled in other tasks here
          copy: {
              dist: {
                  files: [{
                      expand: true,
                      dot: true,
                      cwd: '&lt;%= yeoman.app %&gt;',
                      dest: '&lt;%= yeoman.dist %&gt;',
                      src: [
                          '*.{ico,png,txt}',
                          '.htaccess',
                          'bower_components/**/*',
                          'images/**/*',
                          'scripts/**/*',
                          'staticData/**/*',
                          'fonts/*'
                      ]
                  }, {
                      expand: true,
                      cwd: '.tmp/images',
                      dest: '&lt;%= yeoman.dist %&gt;/images',
                      src: [
                          'generated/*'
                      ]
                  }]
              },
              styles: {
                  expand: true,
                  cwd: '&lt;%= yeoman.app %&gt;/styles',
                  dest: '.tmp/styles/',
                  src: '{,*/}*.css'
              }
          },
          concurrent: {
              server: [
                  // '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',
          //       singleRun: true
          //   }
          // },
          cdnify: {
              dist: {
                  html: ['&lt;%= yeoman.dist %&gt;/*.html']
              }
          },
          ngmin: {
              dist: {
                  files: [{
                      expand: true,
                      cwd: '&lt;%= yeoman.dist %&gt;/scripts',
                      src: '*.js',
                      dest: '&lt;%= yeoman.dist %&gt;/scripts'
                  }]
              }
          },
          uglify: {
              dist: {
                  files: {
                      '&lt;%= yeoman.dist %&gt;/scripts/app.js': [
                          '&lt;%= yeoman.dist %&gt;/scripts/app.js'
                      ]
                  }
              }
          }
      });
  
      grunt.registerTask('server', function (target) {
          if (target === 'dist') {
              return grunt.task.run(['build', 'connect:dist:keepalive']);
          }
  
          grunt.task.run([
              'clean:server',
              'concurrent:server',
              'autoprefixer',
              'connect:livereload',
              'watch'
          ]);
      });
  
      grunt.registerTask('test', [
          'clean:server',
          'concurrent:test',
          'autoprefixer',
          'connect:test'
          // 'karma'
      ]);
  
      grunt.registerTask('build', [
          'clean:dist',
          // 'useminPrepare',
          'concurrent:dist',
          'autoprefixer',
          // 'concat',
          'copy:dist',
          'cdnify',
          'ngmin',
          // 'cssmin',
          // 'uglify',
          'rev',
          // 'usemin'
      ]);
  
      grunt.registerTask('default', [
          // 'jshint',
          'test',
          'build'
      ]);
  };
  </code></pre>