• [Tools] Batch Create Markdown Files from a Template with Node.js and Mustache


    Creating Markdown files from a template is a straightforward process with Node.js and Mustache. You can define a template, load it into your script, then push whatever data you have into your template, then write the files back out. Node.js built-in filesystem tools allow you to read and write the files while Mustache helps you to push the data into the template.

    Install:

    npm i --save mustache

    index.js:

    let fs = require("fs")
    let { render } = require("mustache")
    let template = fs.readFileSync("./template.md").toString()
    
    people.forEach(person => {
      let output = render(template, person)
      fs.writeFileSync(`./people/${person.name}.md`, output)
    })
    let fs = require("fs")
    let { render } = require("mustache")
    
    let people = [
      {
        name: "Luke Skywalker",
        height: "172",
        mass: "77",
        hair_color: "blond",
        skin_color: "fair",
        eye_color: "blue",
        birth_year: "19BBY",
        gender: "male",
        homeworld: "https://swapi.co/api/planets/1/",
        films: [
          "https://swapi.co/api/films/2/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/3/",
          "https://swapi.co/api/films/1/",
          "https://swapi.co/api/films/7/"
        ],
        species: ["https://swapi.co/api/species/1/"],
        vehicles: [
          "https://swapi.co/api/vehicles/14/",
          "https://swapi.co/api/vehicles/30/"
        ],
        starships: [
          "https://swapi.co/api/starships/12/",
          "https://swapi.co/api/starships/22/"
        ],
        created: "2014-12-09T13:50:51.644000Z",
        edited: "2014-12-20T21:17:56.891000Z",
        url: "https://swapi.co/api/people/1/"
      },
      {
        name: "C-3PO",
        height: "167",
        mass: "75",
        hair_color: "n/a",
        skin_color: "gold",
        eye_color: "yellow",
        birth_year: "112BBY",
        gender: "n/a",
        homeworld: "https://swapi.co/api/planets/1/",
        films: [
          "https://swapi.co/api/films/2/",
          "https://swapi.co/api/films/5/",
          "https://swapi.co/api/films/4/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/3/",
          "https://swapi.co/api/films/1/"
        ],
        species: ["https://swapi.co/api/species/2/"],
        vehicles: [],
        starships: [],
        created: "2014-12-10T15:10:51.357000Z",
        edited: "2014-12-20T21:17:50.309000Z",
        url: "https://swapi.co/api/people/2/"
      },
      {
        name: "R2-D2",
        height: "96",
        mass: "32",
        hair_color: "n/a",
        skin_color: "white, blue",
        eye_color: "red",
        birth_year: "33BBY",
        gender: "n/a",
        homeworld: "https://swapi.co/api/planets/8/",
        films: [
          "https://swapi.co/api/films/2/",
          "https://swapi.co/api/films/5/",
          "https://swapi.co/api/films/4/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/3/",
          "https://swapi.co/api/films/1/",
          "https://swapi.co/api/films/7/"
        ],
        species: ["https://swapi.co/api/species/2/"],
        vehicles: [],
        starships: [],
        created: "2014-12-10T15:11:50.376000Z",
        edited: "2014-12-20T21:17:50.311000Z",
        url: "https://swapi.co/api/people/3/"
      },
      {
        name: "Darth Vader",
        height: "202",
        mass: "136",
        hair_color: "none",
        skin_color: "white",
        eye_color: "yellow",
        birth_year: "41.9BBY",
        gender: "male",
        homeworld: "https://swapi.co/api/planets/1/",
        films: [
          "https://swapi.co/api/films/2/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/3/",
          "https://swapi.co/api/films/1/"
        ],
        species: ["https://swapi.co/api/species/1/"],
        vehicles: [],
        starships: ["https://swapi.co/api/starships/13/"],
        created: "2014-12-10T15:18:20.704000Z",
        edited: "2014-12-20T21:17:50.313000Z",
        url: "https://swapi.co/api/people/4/"
      },
      {
        name: "Leia Organa",
        height: "150",
        mass: "49",
        hair_color: "brown",
        skin_color: "light",
        eye_color: "brown",
        birth_year: "19BBY",
        gender: "female",
        homeworld: "https://swapi.co/api/planets/2/",
        films: [
          "https://swapi.co/api/films/2/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/3/",
          "https://swapi.co/api/films/1/",
          "https://swapi.co/api/films/7/"
        ],
        species: ["https://swapi.co/api/species/1/"],
        vehicles: ["https://swapi.co/api/vehicles/30/"],
        starships: [],
        created: "2014-12-10T15:20:09.791000Z",
        edited: "2014-12-20T21:17:50.315000Z",
        url: "https://swapi.co/api/people/5/"
      },
      {
        name: "Owen Lars",
        height: "178",
        mass: "120",
        hair_color: "brown, grey",
        skin_color: "light",
        eye_color: "blue",
        birth_year: "52BBY",
        gender: "male",
        homeworld: "https://swapi.co/api/planets/1/",
        films: [
          "https://swapi.co/api/films/5/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/1/"
        ],
        species: ["https://swapi.co/api/species/1/"],
        vehicles: [],
        starships: [],
        created: "2014-12-10T15:52:14.024000Z",
        edited: "2014-12-20T21:17:50.317000Z",
        url: "https://swapi.co/api/people/6/"
      },
      {
        name: "Beru Whitesun lars",
        height: "165",
        mass: "75",
        hair_color: "brown",
        skin_color: "light",
        eye_color: "blue",
        birth_year: "47BBY",
        gender: "female",
        homeworld: "https://swapi.co/api/planets/1/",
        films: [
          "https://swapi.co/api/films/5/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/1/"
        ],
        species: ["https://swapi.co/api/species/1/"],
        vehicles: [],
        starships: [],
        created: "2014-12-10T15:53:41.121000Z",
        edited: "2014-12-20T21:17:50.319000Z",
        url: "https://swapi.co/api/people/7/"
      },
      {
        name: "R5-D4",
        height: "97",
        mass: "32",
        hair_color: "n/a",
        skin_color: "white, red",
        eye_color: "red",
        birth_year: "unknown",
        gender: "n/a",
        homeworld: "https://swapi.co/api/planets/1/",
        films: ["https://swapi.co/api/films/1/"],
        species: ["https://swapi.co/api/species/2/"],
        vehicles: [],
        starships: [],
        created: "2014-12-10T15:57:50.959000Z",
        edited: "2014-12-20T21:17:50.321000Z",
        url: "https://swapi.co/api/people/8/"
      },
      {
        name: "Biggs Darklighter",
        height: "183",
        mass: "84",
        hair_color: "black",
        skin_color: "light",
        eye_color: "brown",
        birth_year: "24BBY",
        gender: "male",
        homeworld: "https://swapi.co/api/planets/1/",
        films: ["https://swapi.co/api/films/1/"],
        species: ["https://swapi.co/api/species/1/"],
        vehicles: [],
        starships: ["https://swapi.co/api/starships/12/"],
        created: "2014-12-10T15:59:50.509000Z",
        edited: "2014-12-20T21:17:50.323000Z",
        url: "https://swapi.co/api/people/9/"
      },
      {
        name: "Obi-Wan Kenobi",
        height: "182",
        mass: "77",
        hair_color: "auburn, white",
        skin_color: "fair",
        eye_color: "blue-gray",
        birth_year: "57BBY",
        gender: "male",
        homeworld: "https://swapi.co/api/planets/20/",
        films: [
          "https://swapi.co/api/films/2/",
          "https://swapi.co/api/films/5/",
          "https://swapi.co/api/films/4/",
          "https://swapi.co/api/films/6/",
          "https://swapi.co/api/films/3/",
          "https://swapi.co/api/films/1/"
        ],
        species: ["https://swapi.co/api/species/1/"],
        vehicles: ["https://swapi.co/api/vehicles/38/"],
        starships: [
          "https://swapi.co/api/starships/48/",
          "https://swapi.co/api/starships/59/",
          "https://swapi.co/api/starships/64/",
          "https://swapi.co/api/starships/65/",
          "https://swapi.co/api/starships/74/"
        ],
        created: "2014-12-10T16:16:29.192000Z",
        edited: "2014-12-20T21:17:50.325000Z",
        url: "https://swapi.co/api/people/10/"
      }
    ]
    
    let template = fs.readFileSync("./template.md").toString()
    
    people.forEach(person => {
      let output = render(template, person)
      fs.writeFileSync(`./people/${person.name}.md`, output)
    })
    View Code

    Code

  • 相关阅读:
    SQL中关于Left Join转为Inner Join的问题,即左关联转为内关联的问题
    Mybatis Plus 2 升到 Mybatis Plus 3 时,oracle 自增序列的相关问题
    Java项目启动时,oracle 驱动异常
    window 下安装 Arthas
    postman 中给所有接口token授权的配置
    探讨:在循环前与在循环中创建对象的区别
    当你无法发现问题所在时,不要简单地把代码或者数据还原
    http://875880923.iteye.com/blog/1963400
    2013成都网络赛 J A Bit Fun(水题)
    2013成都网络赛 C We Love MOE Girls(水题)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10343283.html
Copyright © 2020-2023  润新知