【发布时间】:2013-11-21 23:29:35
【问题描述】:
我正在使用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 techniques,所以我对此进行了修改。
processhtml: {
deploy: {
options: {
process: true,
},
files: {
'/**.html': ['/**.html']
}
}
},
但这似乎也不起作用......有什么建议吗?
编辑:添加更多背景信息(以防我因树木而失去森林)
问题
我的开发环境有几个主要目标。
- 使用非压缩文件在本地查看页面以进行调试(这适用于 html、css 和 js)
- 旅行时完全离线工作的能力,而且经常没有互联网。这也可能具有使页面重新加载更快的副作用。我遇到的一些问题,以及我为什么来到 processhtml:
- 使用 CDN 提供 jQuery 等服务。
- Google 字体:如果我引用 google 字体,它会根据我的浏览器在现场生成 CSS……但由于我在本地安装了我正在开发的字体,所以我只想使用这些字体,所以我需要一种插入谷歌字体的方法。
- 我希望能够在部署之前压缩和连接每个资产。
我是怎么做的(无论好坏)
那么,现在我将告诉你我设计的系统。我的项目中有三个顶级目录,其中存在三个不同的阶段
-
src:这是我所有的汇编文件所在的地方。在这里,我有大量的 hbs 文件和部分文件,从而保持我的标记干燥,以及我在 YAML 中的最小数据(我喜欢,因为我可以让同事填写它)。
-
dev:一旦文件被“组装”起来,它们就会出现在这个目录中。在这里它们是未压缩的,并且带有 livereload 的连接服务器从这里运行。
-
deploy:此时,我有一个名为“preflight”的繁重任务,它将我所有的文件压缩下来,并消除任何杂物,留下一个超级流畅的流线型文件夹,为另一个 rsync 任务发送到生产环境做好准备.
无论如何,如果您有不同的方法来实现这一点。我很想听听:)
谢谢!
【问题讨论】:
-
如果您可以与我们分享更多关于您在 Assemble 问题上尝试完成的工作,我们可能会有一个更简单的解决方案,不需要使用其他任务。
-
好点!我也想知道。我将编辑我的问题以包含更多背景信息。
-
太好了,感谢您提供更多信息。因此,grunt-processhtml 任务被用于将对非缩小资产(可能是多个链接或脚本标签)的引用替换为对缩小资产的引用(在这种情况下,多个链接标签将被替换为一个)。这是要点吗?
-
没错。尽管我认为指出我也使用它来替换对离线事物(特别是谷歌字体)的一些引用可能很重要,但这些引用是在线部署的。一种简单的方法是在生成所有文件的部分中进行替换,但这会在尝试脱机工作时产生问题。
-
感谢您提供更多详细信息,让我考虑一下,我认为 @doowb 和我可以想出一些办法 :-)