title: Duplicate CSS classes?
body: <p>Not even sure where I should begin debugging this issue, but all of my CSS classes seem to be duplicating for some reason. I'm attaching an image for reference, but other than that; I have zero idea where to begin looking. I created my project with a Yeoman AngularJS generator. No Sass or LESS. Anyone have any ideas? </p>
  
  <p>Edit: The CSS classes are not duplicated until the minified file is built for production. I'm not sure what to do other than post my Gruntfile.js online? Seems like overkill, but I'm not sure where to look.</p>
  
  <pre><code>// Generated on 2014-05-21 using generator-angular 0.8.0
  '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) {
  
      // Load grunt tasks automatically
      require('load-grunt-tasks')(grunt);
  
      // Time how long tasks take. Can help when optimizing build times
      require('time-grunt')(grunt);
  
      // Define the configuration for all the tasks
      grunt.initConfig({
  
          // Project settings
          yeoman: {
              // configurable paths
              app: require('./bower.json').appPath || 'app',
              dist: 'dist'
          },
  
          // Watches files for changes and runs tasks based on the changed files
          watch: {
              bower: {
                  files: ['bower.json'],
                  tasks: ['bowerInstall']
              },
              js: {
                  files: ['&lt;%= yeoman.app %&gt;/scripts/{,*/}*.js'],
                  tasks: ['newer:jshint:all'],
                  options: {
                      livereload: true
                  }
              },
              jsTest: {
                  files: ['test/spec/{,*/}*.js'],
                  tasks: ['newer:jshint:test', 'karma']
              },
              styles: {
                  files: ['&lt;%= yeoman.app %&gt;/styles/{,*/}*.css'],
                  tasks: ['newer:copy:styles', 'autoprefixer']
              },
              gruntfile: {
                  files: ['Gruntfile.js']
              },
              livereload: {
                  options: {
                      livereload: '&lt;%= connect.options.livereload %&gt;'
                  },
                  files: [
                      '&lt;%= yeoman.app %&gt;/{,*/}*.html',
                      '.tmp/styles/{,*/}*.css',
                      '&lt;%= yeoman.app %&gt;/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,
                      base: [
                          '.tmp',
                          '&lt;%= yeoman.app %&gt;']
                  }
              },
              test: {
                  options: {
                      port: 9001,
                      base: [
                          '.tmp',
                          'test',
                          '&lt;%= yeoman.app %&gt;']
                  }
              },
              dist: {
                  options: {
                      base: '&lt;%= yeoman.dist %&gt;'
                  }
              }
          },
  
          // Make sure code styles are up to par and there are no obvious mistakes
          jshint: {
              options: {
                  jshintrc: '.jshintrc',
                  reporter: require('jshint-stylish')
              },
              all: [
                  'Gruntfile.js',
                  '&lt;%= yeoman.app %&gt;/scripts/{,*/}*.js'],
              test: {
                  options: {
                      jshintrc: 'test/.jshintrc'
                  },
                  src: ['test/spec/{,*/}*.js']
              }
          },
  
          // Empties folders to start fresh
          clean: {
              dist: {
                  files: [{
                      dot: true,
                      src: [
                          '.tmp',
                          '&lt;%= yeoman.dist %&gt;/*',
                          '!&lt;%= yeoman.dist %&gt;/.git*']
                  }]
              },
              server: '.tmp'
          },
  
          // Add vendor prefixed styles
          autoprefixer: {
              options: {
                  browsers: ['last 1 version']
              },
              dist: {
                  files: [{
                      expand: true,
                      cwd: '.tmp/styles/',
                      src: '{,*/}*.css',
                      dest: '.tmp/styles/'
                  }]
              }
          },
  
          // Automatically inject Bower components into the app
          bowerInstall: {
              app: {
                  src: ['&lt;%= yeoman.app %&gt;/index.html'],
                  ignorePath: '&lt;%= yeoman.app %&gt;/'
              }
          },
  
          // Renames files for browser caching purposes
          rev: {
              dist: {
                  files: {
                      src: [
                          '&lt;%= yeoman.dist %&gt;/scripts/{,*/}*.js',
                          '&lt;%= yeoman.dist %&gt;/styles/{,*/}*.css',
                          '&lt;%= yeoman.dist %&gt;/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
                          '&lt;%= yeoman.dist %&gt;/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: '&lt;%= yeoman.app %&gt;/index.html',
              options: {
                  dest: '&lt;%= yeoman.dist %&gt;',
                  flow: {
                      html: {
                          steps: {
                              js: ['concat', 'uglifyjs'],
                              css: ['cssmin']
                          },
                          post: {}
                      }
                  }
              }
          },
  
          // Performs rewrites based on rev and the useminPrepare configuration
          usemin: {
              html: ['&lt;%= yeoman.dist %&gt;/{,*/}*.html'],
              css: ['&lt;%= yeoman.dist %&gt;/styles/{,*/}*.css'],
              options: {
                  assetsDirs: ['&lt;%= yeoman.dist %&gt;', '&lt;%= yeoman.dist %&gt;/images']
              }
          },
  
          // The following *-min tasks produce minified files in the dist folder
          cssmin: {
              options: {
                  //root: '&lt;%= yeoman.app %&gt;'
              }
          },
  
          imagemin: {
              dist: {
                  files: [{
                      expand: true,
                      cwd: '&lt;%= yeoman.app %&gt;/images',
                      src: '{,*/}*.{png,jpg,jpeg,gif}',
                      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'
                  }]
              }
          },
  
          htmlmin: {
              dist: {
                  options: {
                      collapseWhitespace: true,
                      collapseBooleanAttributes: true,
                      removeCommentsFromCDATA: true,
                      removeOptionalTags: true
                  },
                  files: [{
                      expand: true,
                      cwd: '&lt;%= yeoman.dist %&gt;',
                      src: ['*.html', 'views/{,*/}*.html'],
                      dest: '&lt;%= yeoman.dist %&gt;'
                  }]
              }
          },
  
          // ngmin tries to make the code safe for minification automatically by
          // using the Angular long form for dependency injection. It doesn't work on
          // things like resolve or inject so those have to be done manually.
          ngmin: {
              dist: {
                  files: [{
                      expand: true,
                      cwd: '.tmp/concat/scripts',
                      src: '*.js',
                      dest: '.tmp/concat/scripts'
                  }]
              }
          },
  
          // Replace Google CDN references
          cdnify: {
              dist: {
                  html: ['&lt;%= yeoman.dist %&gt;/*.html']
              }
          },
  
          // Copies remaining files to places other tasks can use
          copy: {
              dist: {
                  files: [{
                      expand: true,
                      dot: true,
                      cwd: '&lt;%= yeoman.app %&gt;',
                      dest: '&lt;%= yeoman.dist %&gt;',
                      src: [
                          '*.{ico,png,txt}',
                          '.htaccess',
                          '*.html',
                          'views/{,*/}*.html',
                          'images/{,*/}*.{webp}',
                          'fonts/**/*',
                          'bower_components/greensock/src/minified/**/*',
                          'bower_components/soundmanager/**/*',
                          'sounds/*', ]
                  }, {
                      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'
              },
              scripts: {
                  expand: true,
                  cwd: '&lt;%= yeoman.app %&gt;/bower_components/greensock/src/minified',
                  dest: '&lt;%= yeoman.dist %&gt;/scripts/gsap',
                  src: '{,*/}*.js'
              }
          },
  
          // Run some tasks in parallel to speed up the build process
          concurrent: {
              server: [
                  'copy:styles'],
              test: [
                  'copy:styles'],
              dist: [
                  'copy:styles',
                  'imagemin',
                  'svgmin']
          },
  
          // By default, your `index.html`'s &lt;!-- Usemin block --&gt; will take care of
          // minification. These next options are pre-configured if you do not wish
          // to use the Usemin blocks.
          // cssmin: {
          //   dist: {
          //     files: {
          //       '&lt;%= yeoman.dist %&gt;/styles/main.css': [
          //         '.tmp/styles/{,*/}*.css',
          //         '&lt;%= yeoman.app %&gt;/styles/{,*/}*.css'
          //       ]
          //     }
          //   }
          // },
          // uglify: {
          //   dist: {
          //     files: {
          //       '&lt;%= yeoman.dist %&gt;/scripts/scripts.js': [
          //         '&lt;%= yeoman.dist %&gt;/scripts/scripts.js'
          //       ]
          //     }
          //   }
          // },
          // concat: {
          //   dist: {}
          // },
  
          // Test settings
          karma: {
              unit: {
                  configFile: 'karma.conf.js',
                  singleRun: true
              }
          }
      });
  
  
      grunt.registerTask('serve', function (target) {
          if (target === 'dist') {
              return grunt.task.run(['build', 'connect:dist:keepalive']);
          }
  
          grunt.task.run([
              'clean:server',
              'bowerInstall',
              'concurrent:server',
              'autoprefixer',
              'connect:livereload',
              'watch']);
      });
  
      grunt.registerTask('server', 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',
          'concurrent:test',
          'autoprefixer',
          'connect:test',
          'karma']);
  
      grunt.registerTask('build', [
          'clean:dist',
          'bowerInstall',
          'useminPrepare',
          'concurrent:dist',
          'autoprefixer',
          'concat',
          'ngmin',
          'copy:dist',
          'cdnify',
          'cssmin',
          'uglify',
          'rev',
          'usemin',
          'htmlmin']);
  
      grunt.registerTask('default', [
          'newer:jshint',
          'test',
          'build']);
  };
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/wd758.png" alt="enter image description here"></p>