首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Gulp handlebars将部分参数编译为单个HTML文件

使用Gulp handlebars将部分参数编译为单个HTML文件
EN

Stack Overflow用户
提问于 2016-05-11 18:11:12
回答 2查看 6.3K关注 0票数 3

我想创建一个gulpfile来编译成一个单独的HTML文件。这是我的文件结构:

代码语言:javascript
复制
| css/
| - main.css
| gulpfile.js
| less/
| - main.less
| index.html
| templates/
| - index.handlebars
| - partials /
| -- header.hbs
| -- footer.hbs

我的gulpfile.js看起来像这样:

代码语言:javascript
复制
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.handlebars文件看起来像这样:

代码语言:javascript
复制
{{> header}}
<p>Hello </p>
<p>there </p>
{{> footer}}

所以,其他一切看起来都很好,但是我不能让hbsToHTML函数工作。欢迎任何帮助!我知道可能会有很多错误:

EN

回答 2

Stack Overflow用户

发布于 2016-09-17 00:46:41

有一个很棒的吞咽插件就可以做到这一点。你可以在npm上找到它:https://www.npmjs.com/package/gulp-compile-handlebars

使用batch选项设置分部的路径。使用gulp.src设置模板的路径,并使用gulp.dest设置目标

npm页面上的示例代码演示了这一点,尽管在您的示例中不需要partials选项,并且您可能希望将ignorePartials设置为false,以便它拾取部分目录中的所有文件

票数 5
EN

Stack Overflow用户

发布于 2016-09-17 19:48:28

顺便说一句,我把它弄清楚了,并上传到了git。检查一下。

https://github.com/nikdelig/hbsToHTML

代码语言:javascript
复制
       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(''));
     });
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37159470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档