grunt-processhtml定义可变数量的文件

时间:2013-11-21 23:29:36

标签: gruntjs assemble

我正在使用grunt-processhtml在生产之前更换一些东西。诀窍是,我有assemble吐出的可变数量的文件,我真的想把我的数据与我的gruntfile分开。我似乎必须做一些事情来声明需要操作的每个文件:

    processhtml: {
      deploy: {
        options: {
          process: true,
        },
        files: {
          '/one_file.html': ['/one_file.html'],
          '/two_file.html': ['/two_file.html'],
          '/red_file.html': ['/red_file.html'],
          '/blue_file.html': ['/blue_file.html']
        }
      }
    }

你可以想象,这可能会非常繁琐。

我知道,对于大多数特定的grount节点模块,你可以使用一些globbing techniques,所以我修改了它。

    processhtml: {
      deploy: {
        options: {
          process: true,
        },
        files: {
          '/**.html': ['/**.html']
        }
      }
    },

但这似乎也不起作用......有什么建议吗?

编辑:添加更多背景信息(如果我正在丢失树木的森林)

问题

我的开发环境有几个主要目标。

  • 使用非压缩文件在本地查看页面以进行调试(适用于html,css和js)
  • 我旅行时完全离线工作的能力,而且经常没有互联网。这也可以使页面重新加载更快。我遇到的一些问题,以及为什么我来到processhtml:
    • 使用CDN提供jQuery之类的东西。
    • Google字体:如果我引用谷歌字体,它会根据我的浏览器现场生成CSS ...但由于我的字体是我正在开发的本地安装,我只是想使用它们,所以我需要一种方法来保持插入谷歌字体。
  • 我希望能够在部署之前压缩和连接每个资产。

我是怎么回事(无论好坏)

所以,现在我将告诉你我设计的系统。我的项目中有三个顶级目录,其中存在三个不同的阶段

  1. src:这是所有汇编文件都存在的地方。在这里,我有大量的hbs文件和部分,因此保持我的标记干燥,我的最小数据在YAML(我喜欢,因为我可以让同事填写它)。

  2. dev:一旦文件被“汇编”,它们就会在这个目录中结束。这里它们是未压缩的,带有livereload的连接服务器从这里运行。

  3. 部署:此时,我有一个名为'preflight'的繁琐任务,它压缩了我的所有文件,摆脱了任何残余,留下了一个超级流畅的精简文件夹准备好另一个rsync任务发送它达到生产。

  4. 无论如何,如果你有不同的方法来实现这一目标。我很乐意听到它:)

    谢谢!

2 个答案:

答案 0 :(得分:13)

在编写完成任务的方法,然后进一步检查手册之后,我发现了这个:

http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically

我的Gruntfile配置包含看起来像这样的东西,它就像一个魅力:

    processhtml: {
      deploy:{
        options: {
          process: true,
        },
        files: [
          {
          expand: true,     
          cwd: 'deploy/',   
          src: ['**/*.html'],
          dest: 'deploy/',  
          ext: '.html'
        },
        ],
    }

答案 1 :(得分:1)

counterbeing的解决方案就像一个魅力!

@ valerio0999 排除文件夹使用'!' “src”上的否定运算符

processhtml: {
  deploy:{
    options: {
      process: true,
    },
    files: [
      {
      expand: true,     
      cwd: 'deploy/',   
      src: ['**/*.html', '!**/_includes/**'],
      dest: 'deploy/',  
      ext: '.html'
    },
    ],
}