我有一些node.js脚本文件,我需要添加某种文本元数据并从另一个node.js应用程序读取此元数据。 我试着像这样使用评论的yaml标题:
//someScript.js
/**
---
Title: some script
Description: script which does some things.
Params:
-param1
-param2
---
**/
//actual script code..
然后使用前面的事情:
//app.js
var frontMatter = require('yaml-front-matter')
var results = frontMatter.loadFront('someScript.js');
但是“results”会返回“_content”键中的所有代码和yaml,并且没有正确解析yaml。
您是否知道实施此要求的另一种方法?或者也许是另一个类似问题的解决方案?一般来说,我想获取脚本的名称,参数和描述以供显示。 它不一定是yaml元数据 - 任何文本元数据都可以,但我没有找到另一个合理的选项。
提前致谢!
编辑:javascirpt脚本文件应该是有效的javascript语法,所以我可以实际执行它们,这就是为什么我将yaml代码写为注释
答案 0 :(得分:1)
yaml-front-matter
模块设置为读取常规.yaml
文件,而不是评论中YAML前面的JavaScript文件。所以,我们说someScript.js
而不是someFile.yaml
,而不是someFile.yaml
。
在这种情况下---
Title: some script
Description: script which does some things.
Params:
-param1
-param2
---
Your YAML content.
的内容将是:
var frontMatter = require('yaml-front-matter');
var yaml = frontMatter.loadFront('./wow.yaml');
console.log(yaml);
你现在可以这样做:
{ Title: 'some script',
Description: 'script which does some things.',
Params: '-param1 -param2',
__content: '\n\nYour YAML content.\n' }
以下内容将记录到控制台。
Sub MyControl_Leave(sender As Mycontrol, e As EventArgs)
If Me.Enabled Then
MsgBox(Property1)
End If
End Sub
如果你的YAML代码的内容是你想要执行的某种代码(也许这就是你在JavaScript文件中有这个问题的原因),那么你可以使用像safe-eval或Node这样的模块。内置vm.runInThisContext()
方法。
答案 1 :(得分:0)
如果我只是改变它,那么它适用于我,它看起来像是有记录的(没有包含在评论中,顶部没有文件名注释,yaml开始之前也没有新行)
---
Title: some script
Description: script which does some things.
Params:
-param1
-param2
---
//actual script code..
记录frontmatter.loadFront()的输出
{ Title: 'some script',
Description: 'script which does some things.',
Params: '-param1 -param2',
__content: '\n\n//actual script code..\n' }