4

我正在使用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']
        }
      }
    }
    

正如您可以想象的那样,这可能会变得非常麻烦。

我知道对于大多数 grunt 特定的节点模块,您可以使用一些globbing 技术,所以我对此进行了修改。

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

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

编辑:添加更多背景信息(以防我因树木而失去森林)

问题

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

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

我是怎么做的(无论好坏)

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

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

  2. dev:一旦文件被“组装”起来,它们就会出现在这个目录中。在这里它们是未压缩的,并且带有 livereload 的连接服务器从这里运行。

  3. deploy:此时,我有一个名为“preflight”的繁重任务,它将我所有的文件压缩下来,并摆脱任何杂物,留下一个超级流畅的流线型文件夹,为另一个 rsync 任务发送到生产环境做好准备。

无论如何,如果你有不同的方法来实现这一点。我很想听听:)

谢谢!

4

2 回答 2

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'
        },
        ],
    }
于 2013-11-22T16:42:29.577 回答
1

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

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

processhtml: {
  deploy:{
    options: {
      process: true,
    },
    files: [
      {
      expand: true,     
      cwd: 'deploy/',   
      src: ['**/*.html', '!**/_includes/**'],
      dest: 'deploy/',  
      ext: '.html'
    },
    ],
}
于 2016-07-22T23:15:29.683 回答