因此,我得到了运行良好的代码(我使用的是gulp,而不是对重要的内容咕哝):
var handlebars = require('handlebars'),
rename = require('gulp-rename'),
map = require('vinyl-map');
gulp.task('test', function(){
return gulp.src(config.path.template+"/*.handlebars")
.pipe(map(function(contents) {
return handlebars.precompile(contents.toString());
}))
.pipe(rename({ extname: '.js' }))
.pipe(gulp.dest(config.path.template+"/test"))
});所有东西都运行得很好,.js文件在好的文件夹中生成,但是我需要它们在没有-s参数的情况下生成。例如,当我运行handlebars path/to/my/hbs.handlebars -f path/to/my/out/folder.js -s (或--simple)时,生成的文件是相同的。但是我需要在没有-s参数的情况下运行这个命令,而且我找不到一种方法在我的gulpfile中传递这个参数。我尝试了很多东西,比如字符串、Json、数组,尝试使用-s false、simple false和isSimple false (我在工具栏代码中找到了一些东西)。
所有这些都不起作用,我真的需要将-s参数传递给false。我想我需要做这样的事情:
[...]
return handlebars.precompile(contents.toString(), options);
[...]但我无法找到正确的语法或方法来使用这些选项。这就是我的问题。
PS :我使用这个,而不是喝把手,这样我就可以使用我想要使用的那个版本,而不是其他的了。
编辑
在handlebars.js代码中搜索,我发现options是一个对象,但我找不到他所填充的内容,因为我不是一个好的javascript用户。
发布于 2014-11-06 17:04:52
在我看来,源中似乎没有这样的开关。取自命令行工具中使用的预编译器源:
if (opts.simple) {
output.push(Handlebars.precompile(data, options) + '\n');
} else if (opts.partial) {
if (opts.amd && (opts.templates.length == 1 && !fs.statSync(opts.templates[0]).isDirectory())) {
output.push('return ');
}
output.push('Handlebars.partials[\'' + template + '\'] = template(' + Handlebars.precompile(data, options) + ');\n');
} else {
if (opts.amd && (opts.templates.length == 1 && !fs.statSync(opts.templates[0]).isDirectory())) {
output.push('return ');
}
output.push('templates[\'' + template + '\'] = template(' + Handlebars.precompile(data, options) + ');\n');
}opts是您传入的内容,另一个变量options被传递给precompile。这个装饰是由命令行工具添加的。还有第二个块,在脚本的下面有几行尾括号。最好将该源代码复制到代码中,或者访问gulp脚本中的.cli对象。
https://stackoverflow.com/questions/23800299
复制相似问题