如何解析'<%= =>'在咕噜声?

时间:2015-03-17 18:08:32

标签: javascript node.js file parsing gruntjs

许多grunt插件在告诉它包含文件时允许这种语法:

['<%= src_dir %>/common/**/*.js', '<%= src_dir %>/app/**/*.js']

['<%= test_files.js %>']

有什么方法可以调用一些解析这些并给我一个实际输出数组的库吗?或者这是直接建立在咕噜声?我不确定google甚至可以使用哪些术语。

由于

1 个答案:

答案 0 :(得分:1)

您要么正在寻找grunt.config.getgrunt.config.processgrunt.template.process,具体取决于您从哪里获取值以及如何处理它们。

  

<强> grunt.config.get

     

从项目的Grunt配置中获取值。如果指定了prop,则返回该属性的值,如果未定义该属性,则返回null。如果未指定prop,则返回整个配置对象的副本。模板字符串将使用grunt.config.process方法递归处理。

grunt.config.get([prop])

  

<强> grunt.config.process

     

处理一个值,在遇到Grunt配置的上下文中递归扩展<% %>模板(通过grunt.template.process方法)。此方法由grunt.config.get自动调用,但不是由grunt.config.getRaw调用。

grunt.config.process(value)
     

[...]


  

<强> grunt.template.process

     

处理Lo-Dash模板字符串。 template参数将以递归方式处理,直到没有更多要处理的模板为止。

     

默认数据对象是整个配置对象,但如果设置了options.data,则将使用该对象。默认模板分隔符为<% %>,但如果options.delimiters设置为自定义分隔符名称(使用grunt.template.addDelimiters设置),则将使用这些模板分隔符。

grunt.template.process(template [, options])
     

在模板内部,暴露了grunt对象,以便您可以执行<%= grunt.template.today('yyyy') %>之类的操作。 请注意,如果数据对象已具有grunt属性,则无法在模板中访问grunt API。

     

在此示例中,递归处理baz属性,直到不再需要处理<% %>个模板。

var obj = {
  foo: 'c',
  bar: 'b<%= foo %>d',
  baz: 'a<%= bar %>e'
};
grunt.template.process('<%= baz %>', {data: obj}) // 'abcde'