【发布时间】:2015-03-07 17:20:32
【问题描述】:
我正在尝试创建一个终极gulpfile,我们可以在我们的一个大型网站上使用它(一个具有多个主题的网站,具体取决于您所在的网站部分)。我试图让它只运行它需要运行的进程,而不是重新编译所有东西。
让我准确地布局我想要实现的目标:
文件夹结构
src/
master-theme/
css/
style.scss
partials/
_a.scss
_b.scss
img/
a.jpg
b.jpg
sub-theme/
css/
style.scss
partials/
_c.scss
_d.scss
img/
c.png
d.jpg
我希望这些文件被压缩/编译并最终在具有相同文件夹结构的目标文件夹中(只需将 src 替换为 dest)
问题
目前我可以让它做我想做的事——但是 gulpfile 编译和压缩一切。例如。如果我将图像添加到sub-theme/img,它将为所有“主题”运行图像压缩。我正在使用gulp-changed,但这仍然意味着它正在查看整个站点的所有图像。
sass 也是如此 - 如果我更新 _c.scss,但主 css 和子主题 css 被编译,这显然是不希望的。
当前解决方案
我现在真的没有。现在我正在使用gulp-file-tree 生成文件夹结构的 json 文件,然后每当文件更改时,循环遍历该文件
有一个功能(我知道这很可怕 - 但目前有效的解决方案)
var tree = require('./build/tree.json');
var children = tree.children;
for (var i = children.length - 1; i >= 0; i--) {
var child = children[i];
if(child.isDirectory)
task(child)
}
其中task()是传入的gulp任务(例如Sass编译)
文件夹结构不讨论 - 我不希望这变成“以不同的方式构建文件”之类的事情。还有其他几个与这个问题无关的因素,我们为什么会这样(对不起,我不得不这么说......)
我已经盯着这个文件好几天了,我愿意尝试任何事情。我要运行的任务是:
- Sass 编译
- 精灵生成
- SVG 精灵到 PNG 精灵
- 图像压缩
- Javascript 压缩
提前感谢您的帮助。如果找到解决方案,我会写一篇适当的帖子,希望其他人不会感受到我的痛苦......
【问题讨论】:
-
请问你最后做了什么?您是坚持原来的解决方案,还是使用了以下任何答案?
-
嗨@walker - 目前仍然只是重新编译所有内容 - 仍在寻找圣杯!