获取代码中的部分代码

function getSections () {
  const sidebar = fs.readFileSync(path.resolve(__dirname, 'docs/sidebar.js'), 'utf8');
  return new Promise((resolve) => {
    walk.simple(acorn.parse(sidebar), {
      ObjectExpression(node) {
        if(node.properties[0].key.name == 'sections') {
          const value = node.properties[0].value;
          resolve(escodegen.generate({
            type: 'ArrayExpression',
            elements: value.elements.map(item => {
              return {
                ...item,
                properties: item.properties.filter(item  => {
                  return item.key.value !== 'sections'
                })
              }
            })
          }))
        }
      }
    })
  })
}
// 使用方法:
const sections = new Function(`return ${await getSections()}`)();
[
    {
        'title': '导航',
        'path': 'nav'
    },
    {
        'title': '按钮',
        'path': 'button'
    },
    {
        'title': '切换',
        'path': 'transition'
    },
    {
        'title': '弹窗',
        'path': 'dialog'
    },
    {
        'title': '整体效果',
        'path': 'integrated'
    }
]

注意❗

需要注意 escodegen.generate 返回的是 String,如果要以数组对象的方式使用需要转换为js对象

扩展阅读