使用Grunt属性展开来创建基于折叠css之上的适当页面
Using Grunt Property Expand for creating appropriate page-based above the fold css
我的目标是为每个合适的.html
页面创建一个合适的折叠上方的.css
文件。
我正在使用grunt penthouse来提取css,它工作得很好。。只要您只有一个html
页面。我目前的配置是这样的:
penthouse: {
extract: {
outfile: '_dev/critical-css/index.css',
css: '_dev/css/main.css',
url: '_dev/index.html',
width: 1200,
height: 500
},
},
我想避免的是将我的gruntfile转换成这样的东西:
penthouse: {
index: {
outfile: '_dev/critical-css/index.css',
css: '_dev/css/main.css',
url: '_dev/index.html',
width: 1200,
height: 500
},
contact: {
outfile: '_dev/critical-css/contact.css',
css: '_dev/css/main.css',
url: '_dev/contact.html',
width: 1200,
height: 500
},
blog: {
outfile: '_dev/critical-css/blog.css',
css: '_dev/css/main.css',
url: '_dev/blog.html',
width: 1200,
height: 500
},
// and so on
},
我一直在读关于grunt扩展属性和grunt模板的文章,我觉得我走在了正确的道路上。我想我需要一个看起来像这样的语法:
expand: true,
cwd: '_src/',
src: ['**/<%= filename =%>.html'],
dest: '_dev/critical-css/',
ext: '<%= filename =%>.css'
但我真的不知道从哪里开始,也不知道我是否真的走上了正确的道路。
我希望,每当我修改.html
页面时,penthouse都会触发并吐出折叠.css
文件的正上方,该文件具有该特定页面的正确文件名。
如果你想要更多的上下文,我想在我正在创建的工作流中实现这一点:https://github.com/vlrprbttst/grunt-boilerplate-v2
任何帮助,甚至是一个简单的提醒,都将不胜感激
您可以使用类似的东西动态生成Gruntfile任务。您应该定义:
- destFolder:从中提取文件名的文件夹
- fileExt:需要外推的文件的扩展名
该代码检查文件夹中的文件,并清除它们的url,只获取不带扩展名的页面名称。多亏了grunt.file.expand方法,一切皆有可能。你可以提供很多选项,但我会传递一个空对象,因为在这种特殊情况下,它们没有用处。你可以在grunt.file文档中找到更多信息。
/*global module:false*/
module.exports = function(grunt) {
var destFolder = "pages/";
var fileExt = ".html";
var options = {};
var tempFileList = grunt.file.expand(
{ options },
[ destFolder + "*" + fileExt ] // structure to analyse
);
// I create an empty array to put all elements in, once cleaned.
var fileList = [];
tempFileList.forEach(function(url){
var pageUrl = url;
// remove the destination folder
pageUrl = pageUrl.replace(destFolder, "");
// remove file extension
pageUrl = pageUrl.replace(fileExt, "");
fileList.push(pageUrl);
})
var min = {};
fileList.forEach(function(name) {
min[name] = {
outfile: '_dev/critical-css/'+name+'.css',
css: '_dev/css/main.css',
url: '_dev/'+name+'.html',
width: 1200,
height: 500
};
});
// Project configuration.
grunt.initConfig({
penthouse: min
});
};
希望这会有所帮助。
如果您希望最小化重复任务目标,请在配置对象中使用模板字符串:
penthouse: {
extract: {
outfile: "_dev/critical-css/<%= grunt.option('fileName') %>.css",
css: '_dev/css/main.css',
url: "_dev/<%= grunt.option('fileName') %>.html",
width: 1200,
height: 500
},
}
接下来,您将需要编写一个函数。其目的:获取要处理的文件列表,遍历每个文件,将文件名分配给模板字符串,并为指定的文件运行任务。
function extractCSS() {
var fileName,
files = [];
// For each file that matches the glob pattern, get the file name
grunt.file.expand('_dev/*.html').forEach(function (filePath) {
files.push(filePath.split('/').pop().split('.')[0]);
});
for (fileName in files) {
grunt.option('fileName', fileName);
grunt.task.run('penthouse:extract');
}
}
grunt.registerTask('extract-css', extractCSS);
您是否考虑过通过迭代数组来生成配置对象?它既快捷又简单,适合您的用例。
var confTargets = ['index', 'contact', 'blog']
penthouse = {};
for (var i = 0; i < confTargets.length; i++) {
var target = confTargets[i];
penthouse[target] = {
outfile: '_dev/critical-css/' + target + '.css',
css: '_dev/css/main.css',
url: '_dev/' + target + '.html',
width: 1200,
height: 500
}
}
- CSS-如何定位内容数据标题
- 只使用CSS创建可折叠菜单或spry菜单
- 需要帮助调整 Fiddle 代码以使用 Javascript 和 CSS 折叠/展开 Div
- 如何使CSS淡出,但HTML折叠
- 使用Grunt属性展开来创建基于折叠css之上的适当页面
- 在可折叠内容标头(拆分链接)中添加链接 - 缺少 css
- 仅使用角度和css的折叠元素上的平滑过渡
- 在html 4中使用CSS或javascript折叠和扩展列表的最佳方式是什么
- 使用css表时折叠垂直菜单
- 折叠和展开在css中不起作用
- CSS:折叠导航,一次一个元素
- CSS和Javascript / jQuery - Facebook喜欢折叠的DIV节
- JavaScript/CSS折叠段落&取消选择单选按钮
- Materialize CSS:如何防止可折叠的默认行为
- 带自定义CSS复选框的引导折叠
- 延迟到折叠以上的CSS渲染突然无法通过Google Pagespeed Insight Test
- 无法禁用粘性导航栏标题上的折叠-(Bootstrap/CSS/JS)
- 解决折叠上方内容中JavaScript和CSS的选项
- 垂直滚动菜单CSS无法折叠
- 如何在html/css/js中创建一个折叠树表