Grunt htmlmin错误

时间:2015-10-10 17:57:50

标签: javascript gruntjs grunt-contrib-htmlmin

我正在使用grunt-contrib-htmlmin插件。这就是我Gruntfile.js的样子:

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']);
};

没什么特别的,真的。我的404.html也非常简单,但即使是更简单的HTML文件,grunt也不起作用。例如,我们假设请关注HTML文件:

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

它甚至不能解决这个问题。我在控制台中获得的结果是:

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

Done, without errors.

我在哪里可以看到失败的原因?

我尝试过很多事情,例如删除options,我也尝试更改file结构,我最终得到了这个结果:

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

但那也不起作用,我现在得到的错误就是:

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

Aborted due to warnings.

我做错了什么?

3 个答案:

答案 0 :(得分:4)

我不知道错误的实际原因。但是如下所示,通过添加方括号来修改源代码对我有用。

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

答案 1 :(得分:0)

错误可能与html文件的路径有关,你可以共享你的文件结构。找到错误会更有帮助。

答案 2 :(得分:0)

  1. 要查看日志运行命令: grunt任务:target --verbose

    在您的情况下,它将是: grunt htmlmin:dist --verbose

  2. 错误似乎出现在您的文件路径中:&#39; /views/build/404.html' 。 &#39; /&#39;意味着插件将开始从unix系统中的根文件夹进行搜索。使用相对路径:

    &#39; views / build / 404.html&#39;:&#39; view / src / 404.html&#39;

    OR

    &#39; ./ views / build / 404.html&#39;:&#39; ./ view / src / 404.html&#39;

  3. P.S。对于其他所有人,请注意&#39;文件&#39;你应该首先指定DESTINATION路径,然后才指定SRC路径。

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