Tommz
Tommz

Reputation: 3453

Grunt htmlmin errors

I'm using grunt-contrib-htmlmin plugin. This is how my Gruntfile.js looks like:

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    htmlmin: {
      dist: {
        options: {
          removeComments: true,
          collapseWhitespace: true
        },
        files: {
          '/views/build/404.html': '/view/src/404.html'
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-htmlmin');

  grunt.registerTask('default', ['htmlmin']);
};

Nothing special, really. My 404.html is also pretty simple, but even on simpler HTML files, grunt doesn't work. For example, let's say take following HTML file:

<html>
    <head>
    </head>
    <body>
    </body>
</html>

It doesn't even work on that. What I get as a result in console is:

Running "htmlmin:dist" (htmlmin) task
Minified 0 files (1 failed)

Done, without errors.

Where can I see why it failed?

I tried really many things like removing options and I also tried changing file structure where I ended up with this:

files: {
    expand: true,
    cwd: 'views/src/',
    src: '404.html',
    build: 'views/build/404.html'
}

But that doesn't work either and error that I'm getting now is this:

Running "htmlmin:dist" (htmlmin) task
Warning: pattern.indexOf is not a function Use --force to continue.

Aborted due to warnings.

What am I doing wrong?

Upvotes: 1

Views: 1875

Answers (2)

oliverfrost21
oliverfrost21

Reputation: 259

  1. To see the logs run command: grunt task:target --verbose

    In your case it will be: grunt htmlmin:dist --verbose

  2. The error seems to be in your file path: '/views/build/404.html'. '/' means that plugin will start to search from the root folder in unix systems. Use relative path:

    'views/build/404.html': 'view/src/404.html'

    OR

    './views/build/404.html': './view/src/404.html'

P.S. For all others please note that in 'files' you should specify DESTINATION path first and only then SRC path.

 htmlmin: {
      dist: {
        options: {
          /* options here*/
        },
        files: {
          'path/to/destination/folder/404.html': 'path/to/src/folder/404.html'
        }
      }
    }

Upvotes: 1

Mhmd Az
Mhmd Az

Reputation: 82

I don't know the actual reason for the error. But modifying the source by adding square brackes, as below, worked for me.

files: [{
    expand: true,
    cwd: 'views/src/',
    src: '404.html',
    build: 'views/build/404.html'
}]

Upvotes: 4

Related Questions