用gulp将多个haml文件编译成一个html

时间:2017-03-22 06:22:29

标签: html gulp haml

我已经正在运行编译并正确缩小我的scss和js文件,但是对于我的生活,我似乎无法使用gulp-haml模块正确编译haml文件。

我的gulpfile.js中的相应代码如下所示:

gulp.task('haml', function() {
 gulp.src('.app/**/*.haml')
  .pipe(plumber())
  .pipe(haml())
  .pipe(gulp.dest('./hamltest'));
});

gulp.task('scripts', [
  'styles', 
  'app',
  'haml'
]);

gulp.task('watch', function() {
 gulp.watch([
    './styles/',
    '.app/**/*.js',
    '.app/**/*.haml'
],
[
    'styles',
    'app',
    'haml'
 ]);
});

gulp.task('default', [
 'styles', 
 'scripts',
 'haml', 
 'watch'
]);

我已经设置了所有的gulp变量,而且我正在运行:

  • gulp-haml -v 0.1.6
  • haml -v 0.4.3
  • gulp CLI -v 1.2.2
  • Local -v 3.9.1

使用命令:$ gulp在终端中运行一切

此时我想知道是否甚至可以将多个haml文件编译成一个html或将多个haml文件编译成一个主haml文件然后呈现为html。

使用haml partials更好的方法吗? Gulp甚至可以做到这一切吗?任何见解都会非常感激。

其他信息: 我也尝试过使用pipe order()和pipe concat()函数

1 个答案:

答案 0 :(得分:0)

使用gulp-haml不可能编译Ruby代码,如:

= Haml::Engine.new(File.read('./includes/menu-main.haml')).render

因为gulp-haml没有完整的Ruby引擎功能。如果你想使用Ruby,下载并安装,然后为它安装haml(但Ruby请求非常慢〜1-3s)。或者,使用其他一些templater,比如gulp-file-include,这样你就可以编译然后包含你编译的.HTML文件(即使用gulp-jhaml,它与gulp-haml具有相同的功能):

var haml        = require('gulp-jhaml'),
    gih         = require('gulp-include-html'),
    browserSync = require('browser-sync');

gulp.task('haml', function() {
  return gulp.src(['source-folder/*.haml'])
    .pipe(haml({}, {eval: false}))
    .on('error', function(err) {
      console.error(err.stack) 
    })
    .pipe(gulp.dest('source-folder/html'));
});
gulp.task('html-include', ['haml'], function () {  
  gulp.src(['source-folder/html/*.html'])
    .pipe(gih({
      prefix: '@@'
    }))
    .pipe(gulp.dest('result-folder'));
});
gulp.task('watch', ['html-include', 'browser-sync'], function() {
  gulp.watch('source-folder/*.haml', ['html-include']);
  gulp.watch('result-folder/*.html', browserSync.reload);
});
gulp.task('default', ['watch']);

您还可以尝试使用原生函数include gulp-pugPug - 之前被称为'Jade'。