生成模板与grunt -寻找一个任务
generating templates with grunt - looking for a task
我有一个HTML文件,内容如下:
<html>
<body>
<span>{{ secret }}</span>
</body>
</html>
我正在寻找一个grunt任务,可以采取这个源文件,采取值的映射:
grunt.initConfig({
myTask: {
myTarget: {
src: ...
dest: ...
values: {
secret: 'ABC'
}
}
}
})
并生成输出文件:
<html>
<body>
<span>ABC</span>
</body>
</html>
有这样的任务吗?我看到了grunt- moustache -html,但是它强迫很多东西存在,我真的不需要,我不想用它。我想简单地取一个小胡子(或hbs或其他),用grunt级对象的数据填充它,并将结果转储到另一个HTML文件中,这就是全部。
你可以试试grunt-template,它可以处理low -dash模板。下面是解决问题的基本设置:
//Gruntfile.js
config.template = {
myTask: {
options: {
data: function () {
return {
secret: 'ABC'
};
}
},
files: {
'output.html: ['template.html.tpl']
}
}
};
//template.html.tpl
<html>
<body>
<span><%= secret %></span>
</body>
</html>
#1。一种选择是使用grunt.template
实用程序(参见lagerone的答案)。使用自定义分隔符,您可以获得非常接近您想要的结果:
grunt.template.addDelimiters('myDelimiters', '{{', '}}');
在这种情况下,你的模板将不得不使用{{= secret }}
标签。
# 2 。另一个选择是,你可以总是写你自己的简单任务。在你的例子中,它看起来像这样:
grunt.initConfig({
myTask: {
options: {
data: {
secret: 'ABC'
},
src: 'index.html',
dest: 'index.output.html'
}
}
});
grunt.registerTask('myTask', function() {
var options = this.options(),
template = grunt.file.read(options.src);
var content = template.replace(/'{'{'s*(.*?)'s*'}'}/g, function(a, b) {
return typeof options.data[b] !== undefined ? options.data[b] : '';
});
grunt.file.write(options.dest, content);
});
grunt.registerTask('default', ['myTask']);
我以前使用过grunt-include-replace。很容易使用。在您的gruntfile中,您将创建一个类似于下面的任务(示例取自官方github repo):
grunt.initConfig({
includereplace: {
your_target: {
options: {
// Task-specific options go here.
},
// Files to perform replacements and includes with
src: '*.html',
// Destination directory to copy files to
dest: 'dist/'
}
}
})
相关文章:
- 如何在另一个任务中正确使用延迟的gump任务返回的值
- 从另一个grunt文件加载grunt任务
- 我需要将一个参数从另一个任务传递给gullow任务,或者用runSequence调用的函数替换一个任务
- 从gullow任务运行一个npm脚本
- 循环一个单调乏味的任务
- 一个咕哝的任务能运行其他咕哝的任务吗
- 我如何在谷歌Chrome上打开一个新的弹出窗口,它可以在不经过Windows'任务栏
- 如何让一个按钮根据点击次数执行多个任务?(Javascript)
- 如何将外部 JSON 数据从上一个任务中生成的文件传递到任务
- 一个 HTML 表单,其中包含用于不同任务的多个提交按钮
- 节点群集未将任务分派给另一个可用的工作线程
- 一个 Gulp 任务中的多个同步流
- 我的 gulp usemin 任务缺少一个 js 文件
- 在另一个任务之前异步运行 grunt 任务
- 在Laravel Elixir中创建一个任务,以指定的顺序运行Gulp任务
- 从另一个任务访问Grunt当前任务
- 编写的第一个Grunt插件-即使Grunt.registerMultiTask()名称正确,也找不到任务
- 与另一个grunt任务共享来自自定义grunt任务的数据
- 如何从另一个gull文件.js导入所有任务
- 如何定义一个(内部)任务,而不把它列在“grunt——help”中