Gulp-haml 任务在 OSX 10.10.4 上导致错误

Gulp-haml task causing an error on OSX 10.10.4

我正在使用 iMac 运行ning OSX 10.10.4 并使用以下工具(以及其他工具)创建演示网站。

haml v4.0.6 , gulp v3.9 , gulp-haml v0.1.5

我的开发站点的 haml 文件夹中的 index.haml 文件中有以下代码段

/ HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries
/[if lt IE 9]
  %script(src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js")
  %script(src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js")

当我直接从命令行 运行 haml 命令时,它将产生以下 html 代码

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
  <script src='https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js'></script>
  <script src='https://oss.maxcdn.com/respond/1.4.2/respond.min.js'></script>
<![endif]-->

这正是我所期待和得到的。但是,我在 gulpfile.js 文件

中设置了以下任务
gulp.task('haml', function() {
    gulp.src('haml/*.haml')
        .pipe(haml())
        .on('error', errorLog)
        .pipe(gulp.dest('./'));
});

每当我 运行 这个任务中包含上面的 haml 片段时,我都会遇到一个巨大的崩溃,基本上说有一个 "SyntaxError: Unexpected identifier" 后面跟着一个长的堆栈跟踪进入 gulp-haml 代码。

顺便说一句,gulpfile.js 文件顶部附近的 errorLog 函数很简单:

function errorLog(error) {
    console.error.bind(error);
    this.emit('end');
}

将上述 haml 代码从文件中取出并 运行 执行任务将创建 html 文件而不会出错。

我需要一些帮助。是我做错了什么,还是我使用的工具设置有问题。

我猜您的 haml CLI 工具是基于 Ruby 的版本,而不是基于节点的版本(称为 haml-js)。 Node 版本无法正确处理 IE 条件,is a known issue.

这有效,但是:

/ HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries
<!--[if lt IE 9]>
  %script(src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js")
  %script(src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js")
<![endif]-->