我被要求帮助在项目中使用ClientJade设置Gulp以支持客户端上的Jade模板使用。
目前有三个模板文件夹,每个模板都运行ClientJade,以生成三个模板JavaScript文件,这些文件在运行时导入和使用。
引入Gulp的目的是能够观察三个模板源文件夹,并在发生更改时重新编译构建文件夹中的相应JavaScript文件。
不幸的是没有gulp ClientJade插件,所以我的下一个想法是通过gulp-shell或gulp-run调用它。我尝试了以下各种版本:
gulp.task('clientTemplates', shell('clientjade src/templates/client/contacts > build/public/templates/contactsTemplates.js'));
gulp.task('clientTemplates', function() {
run('clientjade src/templates/client/contacts > build/public/templates/contactsTemplates.js').exec();
});
但这总是导致了这个错误:
/Users/helen/src/test/node_modules/clientjade/lib/compile.js:21
var queue = res.queue(function(file, callback) {
^
TypeError: Object function () {
if (!(this instanceof Resistance)) {
return new Resistance();
}
this.type = 'series';
this.flow = [];
} has no method 'queue'
at compile (/Users/helen/src/test/node_modules/clientjade/lib/compile.js:21:19)
在命令行上调用clientjade src/templates/client/contacts > build/public/templates/contactsTemplates.js
直接按预期工作。
我可以从错误消息中看出ClientJade compile.js文件中存在某种“需要”模块的问题(因此尝试在不正确的Object上调用队列方法)但我真的不知所措。如何解决它。
目前我正在使用此处发布的答案(Compile client-side Jade templates using Gulpjs)解决此问题,但这会生成全局模板函数,这与ClientJade不同,后者使模板可用于模板对象。
有没有人知道如何修复我通过gulp-shell或gulp-run调用ClientJade时遇到的错误,或者有关于如何使用gulp运行ClientJade的其他建议?