Tuesday, 25 April 2017

Grunt: More than 2 directories to compress

This is the current directory structure I have:

├── public
│   └── static
│       ├── bootstrap.min.js
│       ├── general.min.js
│       ├── html.js
│       ├── html.min.js
│       ├── plugins
│       │   ├── jquery.magnific-popup.min.js
│       │   ├── jquery.range.min.js
│       │   └── jquery.validate.min.js
│       ├── rcss
│       │   ├── bootstrap.min.css
│       │   ├── font-awesome.min.css
│       │   ├── html.css
│       │   ├── html.min.css
│       │   ├── jquery.range.css
│       │   ├── magnific-popup.css
│       │   ├── responsive.css
│       │   ├── style.css
│       │   └── yamm.css
│       └── voting
│           └── jquery.cookie.js

and my Gruntfile.js:

module.exports = function(grunt) {

  grunt.initConfig({
    jsDir: 'public/static/',
    jsDistDir: 'public/static/',    
    cssDir: 'public/static/rcss/',
    cssDistDir: 'public/static/rcss/',
    pkg: grunt.file.readJSON('package.json'),
    concat: {
      js: {
        options: {
          separator: ';'
        },
        src: ['<%=jsDir%>*.js'],
        dest: '<%=jsDistDir%><%= pkg.name %>.js'
      },
      css: {
        src: ['<%=cssDir%>*.css'],
        dest: '<%=cssDistDir%><%= pkg.name %>.css'
      }
    },
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%=grunt.template.today("dd-mm-yyyy") %> */\n'
      },
      dist: {
        files: {
          '<%=jsDistDir%><%= pkg.name %>.min.js': ['<%= concat.js.dest %>']
        }
      }
    },
    cssmin: {
      add_banner: {
        options: {
          banner: '/*! <%= pkg.name %> <%=grunt.template.today("dd-mm-yyyy") %> */\n'
        },
        files: {
          '<%=cssDistDir%><%= pkg.name %>.min.css': ['<%= concat.css.dest %>']
        }
      }
    },
    watch: {
    files: ['<%=jsDir%>*.js', '<%=cssDir%>*.css'],
    tasks: ['concat', 'uglify', 'cssmin']
    }
  });

  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.registerTask('default', [
    'concat',
    'uglify',
    'cssmin',
    'watch'
  ]);

};

This takes only the 2 .js files within the "Static" directory. Is it possible to tell grunt to grab the files within "Plugins" and "voting" folders too without typing every folder separately?



via Rick Sanchez

No comments:

Post a Comment