我刚开始在我的项目中使用Grunt。我的典型项目包括布局文件和多个视图文件。我想使用布局文件为每个视图文件生成一个HTML页面。
例如,这是一个布局文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Some title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- some css -->
</head>
<body>
<!-- some js -->
</body>
</html>
和一个视图文件:
<h1>Lorem</h1>
<p>Some other stuff</p>
我希望得到的结果是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Some title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- some css -->
</head>
<body>
<h1>Lorem</h1>
<p>Some other stuff</p>
<!-- some js -->
</body>
</html>
根据快速Google搜索,有许多插件表示他们可以生成HTML,例如grunt-html-build
和grunt-generator
。我仔细研究了grunt-html-build
,但它似乎不符合我的需要。那么我应该使用哪个Grunt插件,这样我才能得到我想要的结果?
答案 0 :(得分:0)
您可以使用一系列简单的HTML部分和Grunt Concat将它们拼凑在一起。
你的Gruntfile看起来像这样:
concat:
partials:
options:
process: true
files:
# destination as key, sources as value
"dist/index.html": ["partials/_header.html", "partials/_home-page.html", "partials/_footer.html"]
修改强>
我已经开始使用Assemble执行此任务了。 Assemble还允许您使用Handlebars和数据源来生成HTML。
答案 1 :(得分:0)
我的项目就这样做了!
简易版https://github.com/thierryc/grunt-handlebars-layouts
此任务有两个必需的属性src
和dest
。 src
是源文件的路径,dest
是此任务将写入的文件(相对于grunt.js文件)。如果此文件已存在,则会覆盖。
files: {
'dest.html': 'src.html'
},
示例配置如下所示:
grunt.initConfig({
handlebarslayouts: {
home: {
files: {
'dist/home.html': 'src/home.html'
},
options: {
partials: [
'src/partials/*.hbs',
'src/layout.html'
],
modules: [
'src/helpers/helpers-*.js'
],
basePath: 'src/',
context: {
title: 'Layout Test',
items: [
'apple',
'orange',
'banana'
]
}
}
}
}
});
grunt.registerTask('default', ['handlebarslayouts']);
```