여러로 분할 된 JSON 파일에서 swagger yaml 파일 생성

yaml 파일이 굉장히…
라는 상황이 되어 버려 갱신이 힘들어 버렸기 때문에.
어째서 이렇게 될 때까지 내버려 두었다든가, 그 관리 방법은 잘못되어 있군요! 라고 하면 그때까지입니다만……
이런 방법도 있잖아, 라는 것으로.

구현 예


{
  "swagger": "2.0",
  "info": {
    "description": "create-swagger-yml-from-many-json",
    "version": "1.0.0",
    "title": "create-swagger-yml-from-many-json"
  },
  "host": "localhost",
  "basePath": "/",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "$ref": "./path.json"
  }
}
const fs = require('fs');
const JsonRefs = require('json-refs');
const YAML = require('json2yaml');
const root = require('./sample/index.json');
const options = {
  filter: ['relative', 'remote']
};

const outputPath = process.cwd() + '/swagger.yml';

process.chdir('sample');

JsonRefs.resolveRefs(root, options)
  .then(function (res) {
    fs.writeFileSync(outputPath,
      YAML.stringify(res.resolved)
    );
  }, function (err) {
    console.log(err.stack);
  });

대상 json 파일을 읽고 jsonRefs라는 라이브러리에서 $ref 부분을 결합하고 있습니다.
키모는 process.chdir('sample') 입니다.
$ ref를 찾을 때 curret 디렉토리를 기반으로 찾아 버리므로 chdir에서 current 디렉토리를 변경해 드리겠습니다.

결과


---
  swagger: "2.0"
  info: 
    description: "create-swagger-yml-from-many-json"
    version: "1.0.0"
    title: "create-swagger-yml-from-many-json"
  host: "localhost"
  basePath: "/"
  schemes: 
    - "https"
  consumes: 
    - "application/json"
  produces: 
    - "application/json"
  paths: 
    /test_api: 
      get: 
        summary: "TEST API"
        parameters: []
        responses: 
          200: 
            schema: 
              type: "object"
              properties: 
                id: 
                  type: "integer"
                  description: "店舗ID"
                  example: 1
                name: 
                  type: "string"
                  description: "店舗名"
                  example: "店舗!"

merge한 결과가 생겼습니다!

추가



매일 갱신해 보려고 생각했지만, 재료 조각이 심하다!

좋은 웹페이지 즐겨찾기