我有一些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代码作为注释编写的原因
发布于 2016-05-02 00:17:41
yaml-front-matter模块被设置为读取常规的.yaml文件,而不是注释中最重要的JavaScript文件。所以,假设我们有someFile.yaml而不是someScript.js。
在本例中,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' }如果您的YAML代码的内容是您想要执行的某种代码(这可能就是为什么您在JavaScript文件中包含此内容的原因),那么您可以使用像safe-eval或Node的内置vm.runInThisContext()方法这样的模块。
发布于 2016-05-02 00:18:36
如果我简单地修改它,让它看起来像是文档化的(没有包含在注释中,顶部没有文件名注释,在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' }https://stackoverflow.com/questions/36968765
复制相似问题