使用Gulp手柄部分编译为单个HTML文件
Compile using Gulp handlebars partials to single HTML file
我想创建一个gulpfile,将部分编译成一个HTML文件。这是我的文件结构:
| css/
| - main.css
| gulpfile.js
| less/
| - main.less
| index.html
| templates/
| - index.handlebars
| - partials /
| -- header.hbs
| -- footer.hbs
我的gullfile.js看起来是这样的:
var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var hbsAll = require('gulp-handlebars-all');
var handlebars = require('handlebars');
var gulpHandlebars = require('gulp-compile-handlebars')(handlebars); //default to require('handlebars') if not provided
var rename = require('gulp-rename');
var less = require('gulp-less-sourcemap');
var autoprefixer = require('gulp-autoprefixer');
var watch = require('gulp-watch');
handlebars.registerPartial('header', '{{header}}'),
handlebars.registerPartial('footer', '{{footer}}')
gulp.task('default', function () {
options = {
partialsDirectory : ['./templates/partials']
}
return gulp.src('templates/index.handlebars')
.pipe(gulpHandlebars( options))
.pipe(rename('index.html'))
.pipe(gulp.dest(''));
});
gulp.task('hbsToHTML', function() {
gulp.src('templates/*.hbs')
.pipe(hbsAll('html', {
context: {foo: 'bar'},
partials: ['templates/partials/*.hbs'],
}))
.pipe(gulp.dest('templates'));
});
gulp.task('less', function () {
gulp.src('./less/*.less')
.pipe(less({
sourceMap: {
sourceMapRootpath: '../less' // Optional absolute or relative path to your LESS files
}
}))
.pipe(gulp.dest('./css'));
});
gulp.task('prefix', function () {
return gulp.src('css/main.css')
.pipe(autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}))
.pipe(gulp.dest('./css'));
});
gulp.task('default', ['hbsToHTML', 'less', 'prefix']);
我的index.handlers文件看起来是这样的:
{{> header}}
<p>Hello </p>
<p>there </p>
{{> footer}}
所以,其他一切看起来都很好,但我无法让hbsToHTML函数工作。欢迎任何帮助!我知道可能有不止几个错误:(
有一个优秀的gull插件可以做到这一点。你可以在npm上找到它:https://www.npmjs.com/package/gulp-compile-handlebars
使用batch
选项设置部分的路径。使用gulp.src
设置模板的路径并使用gulp.dest
设置目的地
npm页面上的示例代码演示了这一点,尽管在您的情况下,您不需要partials
选项,并且您可能希望将ignorePartials
设置为false,以便它拾取您的部分目录
我找到了btw并将其上传到git。检查一下。
https://github.com/nikdelig/hbsToHTML
gulp.task('hbsToHTML', function() {
gulp.src('templates/*.hbs')
.pipe(hbsAll('html', {
context: {foo: 'bar'},
partials: ['templates/partials/**/*.hbs'],}))
.pipe(rename('index.html'))
.pipe(htmlmin({collapseWhitespace: true}))
.pipe(gulp.dest(''));
});
相关文章:
- 使用Gulp手柄部分编译为单个HTML文件
- 使用单个HTML文档添加多个页面
- 如何根据URL参数生成包含JS内容的单个HTML文件
- 用程序从单个HTML元素中删除CSS样式规则
- androidphonegap-在单个html页面中导航功能或事件时实现后退按钮
- 单个 HTML 页面上有多个计时器
- 单个 HTML 表单中的多个提交按钮
- 是否可以在单个html文件中添加两个谷歌地图API(绘图和几何)
- 对多个表行重用单个 HTML 选择/下拉列表
- 是否可以在单个HTML页面中包含多个传单/地图框地图
- 无法在单个 HTML 页面上显示 Java/CSS 图像库的多个实例
- 如何在单个 HTML 页面上打开多个表单
- htaccess - 将单个 HTML 页面重定向到 HTTPS
- 用于添加编辑视图的单个html文件或多个文件
- 如何使用Javascript从服务器页面读取单个HTML元素
- 如何在单个HTML文本字段上应用多个事件
- 单个HTML中的多个页面,页面之间具有连续性
- 使用Knockout.js将带有嵌套数组的JS对象扁平化为单个HTML表行
- 使用jQuery从单个HTML列表中进行实时搜索和排序
- 如何在单个html中为每个容器定义元标签