Gulp-haml任务导致OSX 10.10.4出错

时间:2015-07-12 02:54:29

标签: javascript gulp haml

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

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文件而不会出错。

我需要一些帮助。有什么我做错了,或者我正在使用的工具设置中有错误。

1 个答案:

答案 0 :(得分:0)

我猜你的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]-->