首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grunt html小型机任务失败

Grunt html小型机任务失败
EN

Stack Overflow用户
提问于 2016-06-17 15:41:20
回答 1查看 138关注 0票数 0

我正在使用grunt-contrib-htmlmin作为我的HTML文件。

我为node_modules目录添加了一个异常,所以我的Gruntfile.js如下所示:

代码语言:javascript
复制
module.exports = function(grunt) {

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

      htmlmin: {
        prod: {
          options: {
            removeComments: true,
            collapseWhitespace: true
          },
          files: {
            src: ['**/*.html', '!node_modules/'],
            dest: 'prod/'
          }
        }
      }
    });

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

当我运行grunt build时,我在控制台中得到的结果是:

运行"htmlmin:prod“(htmlmin)任务 缩小1个文件(1个失败)完成,没有错误。

我有4个HTML文件,没有一个是小型化的,我甚至看不到错误。我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-18 16:54:11

我无法复制您的具体错误,但我确实看到了您的grunt配置中存在的问题。

首先,在使用文件对象格式时,可以指定一个src-dest映射,目标路径作为键,源路径(或源路径数组)作为值。例如:

代码语言:javascript
复制
files: {
    'prod/minified.html': 'src/unminified.html'
}

对于当前的配置,src被解释为目标文件路径。

为了让您以您想要的方式使用srcdest属性,您必须使用文件阵列格式

代码语言:javascript
复制
files: [{
    src: ['**/*.html', '!node_modules/'],
    dest: 'prod/'
}]

不幸的是,这还不能使我们达到预期的产出。我们需要解决以下几个问题:

prod/被解释为单一目标路径,而不是预期的前缀。我们需要通过在文件对象上设置动态构建文件对象来告诉expand: true

接下来,我们需要在文件配置中设置flatten: true,告诉grunt在计算目标文件路径时删除源文件路径的路径。

第三,模式!node_modules/将只排除完全匹配,字面意思是“node_node/”。要豁免node_modules文件夹下的所有文件,我们必须使用球星匹配模式!node_modules/**

我们的结果如下:

代码语言:javascript
复制
files: [{
    expand: true,
    flatten: true,
    src: ['**/*.html', '!node_modules/**'],
    dest: 'prod/'
}]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37885512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档