首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带yaml头的node.js文件

带yaml头的node.js文件
EN

Stack Overflow用户
提问于 2016-05-02 00:03:17
回答 2查看 698关注 0票数 0

我有一些node.js脚本文件,需要向其中添加某种文本元数据,并从另一个node.js应用程序中读取这些元数据。我尝试使用注释的yaml头,如下所示:

代码语言:javascript
复制
//someScript.js
/**
---
Title: some script
Description: script which does some things.
Params:
  -param1
  -param2
---
**/

//actual script code..

然后使用前面的内容:

代码语言:javascript
复制
//app.js
var frontMatter = require('yaml-front-matter')
var results = frontMatter.loadFront('someScript.js');

但是"results“返回了"_content”键中的所有代码和yaml,并且没有正确地解析yaml。

您是否知道实现此要求的另一种方法?或者是另一种类似的问题解决方案?一般来说,我想获取脚本的名称、参数和描述,以便显示。它不一定是yaml元数据-任何文本元数据都可以,但我没有找到另一个合理的选择。

提前感谢!

编辑: javascirpt脚本文件应该采用有效的javascript语法,这样我才能实际执行它们,这就是我将yaml代码作为注释编写的原因

EN

回答 2

Stack Overflow用户

发布于 2016-05-02 00:17:41

yaml-front-matter模块被设置为读取常规的.yaml文件,而不是注释中最重要的JavaScript文件。所以,假设我们有someFile.yaml而不是someScript.js

在本例中,someFile.yaml的内容为:

代码语言:javascript
复制
---
Title: some script
Description: script which does some things.
Params:
  -param1
  -param2
---

Your YAML content.

你现在可以这样做:

代码语言:javascript
复制
var frontMatter = require('yaml-front-matter');
var yaml = frontMatter.loadFront('./wow.yaml');

console.log(yaml);

以下内容将被记录到控制台中。

代码语言:javascript
复制
{ 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()方法这样的模块。

票数 1
EN

Stack Overflow用户

发布于 2016-05-02 00:18:36

如果我简单地修改它,让它看起来像是文档化的(没有包含在注释中,顶部没有文件名注释,在yaml开始之前也没有换行符),那么我就可以工作了

代码语言:javascript
复制
---
Title: some script
Description: script which does some things.
Params:
  -param1
  -param2
---

//actual script code..

记录frontmatter.loadFront()的输出

代码语言:javascript
复制
{ Title: 'some script',
  Description: 'script which does some things.',
  Params: '-param1 -param2',
  __content: '\n\n//actual script code..\n' }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36968765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档