์ƒˆ์†Œ์‹

IN DEPTH CAKE/Coding-WIKI

sphinx-js ๋กœ javascript ์ฝ”๋“œ ๋ฌธ์„œํ™”ํ•˜๊ธฐ

  • -
๋ฐ˜์‘ํ˜•

๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ๋‹จ/ํ•˜๋‹จ์— ๊ฐ„ํ—์ ์œผ๋กœ ๋œจ๋Š” ๊ด‘๊ณ ๋Š” ๋ธ”๋กœ๊ทธ ๊ฐœ์ธ ์ˆ˜์ต๊ณผ ๊ด€๋ จ ์—†๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ ์ธก ๊ด‘๊ณ ์ž…๋‹ˆ๋‹ค

 

 

์†Œ๊ฐœ

 

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ javascript๋กœ ์ฝ”๋”ฉ๋œ ํ”„๋กœ์ ํŠธ์˜ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•œ sphinx-js๋ฅผ ์„ค๋ช…ํ•ด๋“œ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

sphinx๋Š” python ํ”„๋กœ์ ํŠธ์˜ ๋ฌธ์„œ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ํˆด์ž…๋‹ˆ๋‹ค. python ํ”„๋กœ์ ํŠธ์˜ ํ•จ์ˆ˜, ๋ชจ๋“ˆ๋“ค์— ํŠน์ • ๋ฌธ๋ฒ•์„ ๋”ฐ๋ผ ์ฃผ์„์„ ์ž‘์„ฑํ•ด ๋‘๋ฉด ์ž๋™์œผ๋กœ latex ๋ฌธ์„œ, html๋กœ ๋นŒ๋“œํ•ด ์ฃผ๋Š” ํˆด์ด์—์š”. ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ๋ฌธ์„œํ™” ๋“ฑ์— ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

javascript์šฉ์œผ๋กœ ์œ ์‚ฌํ•œ ํˆด jsdoc ์ด ์žˆ์ง€๋งŒ, read-the-docs ์™€ ์—ฐ๋™ํ•ด์„œ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ์–ด์„œ ์ฐพ๊ฒŒ ๋œ ๊ฒŒ  ๋ฐ”๋กœ sphinx-js์˜ˆ์š”.

 

 

 

GitHub - mozilla/sphinx-js: Autodoc-style extraction into Sphinx for your JS project

Autodoc-style extraction into Sphinx for your JS project - GitHub - mozilla/sphinx-js: Autodoc-style extraction into Sphinx for your JS project

github.com

 

sphinx-js๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด์˜ python sphinx ํ”„๋กœ์ ํŠธ๋“ค ์ฒ˜๋Ÿผ docs html์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๊ณ , ๋”๋ถˆ์–ด latex ๋ฌธ์„œ๋กœ๋„ ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. docs ํด๋”๋ฅผ ํŽ˜์ด์ง€ ๋‚ด์— ๋„ฃ์–ด๋†“์œผ๋ฉด github์—์„œ ๋ฐ”๋กœ ํŽ˜์ด์ง€๋กœ redirection ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. sphinx์™€ ํ•จ๊ป˜ ๋งŽ์ด ์“ฐ์ด๋Š” Read-the-Docs (RTD)๋Š” sphinx๋กœ ๋งŒ๋“ค์–ด์ง„ html ๋ฌธ์„œ๋ฅผ ํ˜ธ์ŠคํŒ… ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ python ๊ธฐ๋ฐ˜์˜ ๋งŽ์€ open source ํ”„๋กœ์ ํŠธ๋“ค์ด ํ™œ์šฉํ•˜๊ณ  ์žˆ๋Š” ์›น ํ˜ธ์ŠคํŒ… ์‚ฌ์ดํŠธ์˜ˆ์š”.

 

์ •๋ฆฌํ•˜์ž๋ฉด,

  • sphinx๋Š” python์œผ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์„์„ ์ฝ์–ด ๋“ค์—ฌ html, latex ๋“ฑ์˜ ํฌ๋งท์œผ๋กœ ๋ฌธ์„œํ™”ํ•ด ์ค€๋‹ค.
  • RTD๋Š” sphinx๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ html์˜ ์›น ํ˜ธ์ŠคํŒ…์„ ๊น”๋”ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํˆด๋กœ, ๋‹ค์–‘ํ•œ ํ…Œ๋งˆ๋“ค์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค.
  • javascript ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์˜ RTD ์›น ํ˜ธ์ŠคํŒ…์„ ์œ„ํ•ด sphinx-js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Read-The-Docs๋ฅผ ์‚ฌ์šฉํ•ด์„œ deployํ•œ javascript ํ”„๋กœ์ ํŠธ ๋ฌธ์„œํ™” ํŽ˜์ด์ง€ ์˜ˆ์‹œ.

 

 

 

 

์„ค์น˜

 

sphinx-js๋Š” jsdoc๊ณผ sphinx-js๋ฅผ ๋ชจ๋‘ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ jsdoc์€ javascript ๋ชจ๋“ˆ์ด๊ณ  sphinx-js๋Š” python ๋ชจ๋“ˆ์ด์—์š”. ๊ทธ๋Ÿฌ๋‹ˆ ๊ฐ๊ฐ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ค์น˜ํ•ด ์ค๋‹ˆ๋‹ค.

 

npm install -g jsdoc

 

pip install sphinx-js

 

(+) ์ถ”๊ฐ€๋กœ sphinx๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. (sphinx-js๋ฅผ ์œ„ํ•ด์„œ ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ, RTD์™€์˜ ์—ฐ๋™ ๋ฐ MD ํŒŒ์ผ์˜ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.)

 

  • sphinx์—์„œ ๋งˆํฌ๋‹ค์šด์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€, myst_parser
  • RTD ํ…Œ๋งˆ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€, sphinx_rtd_theme
pip install sphinx_rtd_theme
pip install myst_parser

 

(+) ์—๋Ÿฌํ•ธ๋“ค๋ง

ImportError: cannot import name 'soft_unicode' from 'markupsafe' (~/opt/anaconda3/envs/sphinx/lib/python3.8/site-packages/markupsafe/init.py)

pip install markupsafe==2.0.1

 

์„ค์ •

 

sphinx-js๋Š” sphinx์—์„œ javascript๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ชจ๋“ˆ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ sphinx์˜ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์„ ๋”ฐ๋ผ๊ฐ€๋˜ sphinx-js ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€๋กœ ์„ค์ •ํ•ด ์ฃผ๊ณ  javascript ์ฝ”๋“œ ๋‚ด์˜ ์ฃผ์„ ๋ฌธ๋ฒ•์€ sphinx-js์—์„œ ์‚ฌ์šฉํ•˜๋Š” jsdoc ๋ช…๋ น์–ด๋ฅผ, docs ๋ฌธ์„œ์˜ ๋ฌธ๋ฒ•์€ sphinx์˜ RTD ํฌ๋งท์„ ๋”ฐ๋ฅด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

|       1.  sphinx ์„ธํŒ…ํ•˜๊ธฐ (sphinx-quickstart) 

 

์ด์ œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ ์ด๋™ ํ›„ sphinx-quickstart ๋ช…๋ น์–ด๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์ง„ํ–‰ ์‹œ ์‹ค์ œ documentation ๊ด€๋ จ ํŒŒ์ผ๋“ค์„ ์ €์žฅํ•  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ docs๋ผ๋Š” ํด๋” ๋‚ด์— ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ์ €๋Š” sphinx-quickstart docs๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•ด ์ค„๊ฒŒ์š”.

cd my-project
sphinx-quickstart docs

 

 

๊ทธ๋Ÿฌ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ sphinx์— ํ•„์š”ํ•œ ํด๋” ๋ฐ ํŒŒ์ผ๋“ค์ด docs/ ํด๋” ๋ฐ‘์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

/my_project
|_/yourcodes
|_/docs
|    |_Makefile
|    |_Requirement.txt
|    |_ build/
|    |_ source/
|    |    |_ _static
|    |    |_ _templates
|    |    |_ conf.py
|    |    |_ index.rst
|    |_ make.bat
|_jsdoc.json

 

 

|      2. sphinx_js๋ฅผ Requirement.txt์— ์ถ”๊ฐ€ํ•˜๊ธฐ

 

sphinx๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋นŒ๋“œํ•  ๋•Œ sphinx_js๋ฅผ ์“ฐ๋„๋ก ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, sphinx์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“ˆ (dependency)๋ฅผ ํ™•์ธํ•˜๋Š” ํŒŒ์ผ์ด Requirement.txt์ž…๋‹ˆ๋‹ค.  ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” sphinx-js ์™ธ์—๋„ rtd ํ…Œ๋งˆ, ๊ทธ๋ฆฌ๊ณ  mark down ์ž๋™ ํŒŒ์‹ฑ์„ ์œ„ํ•œ parser๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

myst-parser==0.18.0
sphinx_rtd_theme==1.1.1
sphinx-js==3.1.2

 

|      3. sphinx_js๋กœ ์„ค์ •ํ•ด ์ฃผ๊ธฐ

 

์ด์ œ sphinx_js extension์„ ์„ค์ •ํ•ด ์ค๋‹ˆ๋‹ค. docs/source/ ํด๋” ๋‚ด์— ์ƒ์„ฑ๋œ conf.py ํŒŒ์ผ์—์„œ extensions์— "sphinx_js"๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ primary_domain ์ด๋ž‘ js_source_path ๊ทธ๋ฆฌ๊ณ  jsdoc_config_path๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ ๊ฒฝ๋กœ๋Š” conf.py๊ฐ€ ์žˆ๋Š” source ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

์ฐธ๊ณ ๋กœ, sphinx_js extension ์™ธ์— ๋‹ค๋ฅธ ์˜ต์…˜๋“ค (sphinx_rtd_theme, sphinx.ext.autodoc, myst_parser)์€ sphinx ์‚ฌ์šฉ์—์„œ ํ•„์š”์— ๋”ฐ๋ผ ์„ค์ •ํ•ด ์ค€ extension๋“ค์ด์—์š”. sphinx ๋ฌธ์„œํ™”์—์„œ ํ•„์š”ํ•œ rtd_theme์ด๋‚˜ mark down import์šฉ extension๋“ค์€ sphinx ๋ฌธ์„œ๋“ค์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ฐธ๊ณ , sphinx ์„ค์ • ๊ฐ€์ด๋“œ (python์šฉ)

 

|      4.  jsdoc.json ํŽธ์ง‘ํ•˜๊ธฐ

 

3๋ฒˆ ๋‹จ๊ณ„๊นŒ์ง€ ์ˆ˜ํ–‰ํ•œ docs/source/ ํด๋” ์•„๋ž˜์—์„œ conf.py ํŒŒ์ผ ์„ค์ •๋“ค์€ sphinx์— ๋Œ€ํ•œ ์„ค์ •์ž…๋‹ˆ๋‹ค. sphinx ์„ค์ •์—  "java script๋ฅผ ์“ธ ๊ฑฐ์•ผ"๋ผ๊ณ  extension์„ ์ง€์ •ํ•ด ์ฃผ๊ณ  ์ด๋•Œ ์ฝ์–ด์˜ฌ jsdoc_conf_path๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด sphinx๊ฐ€ ๋ฌธ์„œํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ง€์ •๋œ jsdoc.json ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ javascript ํŒŒ์ผ๋“ค์˜ ์ฃผ์„์„ ๋ถ„์„ํ•ด์„œ ๋ฌธ์„œํ™”ํ•ด์ค๋‹ˆ๋‹ค. ์ด ๋•Œ javascript์˜ ๋ฌธ์„œํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํˆด๋กœ jsdoc์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 

 

์ œ ์ฝ”๋“œ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜์˜ main ํŒŒ์ผ์—์„œ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ import ํ•˜๋Š” ํ˜•ํƒœ์—ฌ์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์ฃผ์š” main ํŒŒ์ผ๋งŒ include๋กœ ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค (์•„๋‹ˆ๋ฉด ์žฌ๊ท€์ ์œผ๋กœ ๋ชจ๋“  ํŒŒ์ผ๋“ค์ด parsing ๋ผ์„œ ์—๋Ÿฌ๊ฐ€ ๋œจ๋”๋ผ๊ณ ์š”)

 

์—ฌ๊ธฐ์„œ๋„ ์ฃผ์˜ํ•  ์ ์€ sphinx ๊ฐ€ source ํด๋”๋ฅผ ๊ธฐ์ค€์œผ๋กœ parsing ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•ด ์ค„ ๋•Œ ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด include์˜ ๊ฒฝ์šฐ์—๋„ "../../yourcodes/main.js"๋กœ ์„ค์ •ํ•ด ์ฃผ์—ˆ๊ณ  destination๋„ "../../docs"๋กœ ์„ค์ •ํ•ด ์ฃผ์—ˆ์–ด์š”.

 

{
  "source": {
    "include": ["../../yourcodes/main.js"],
    "includePattern": ".js$",
    "excludePattern": "(node_modules/|docs)"
  },
  "templates": {
    "cleverLinks": true,
    "monospaceLinks": true
  },
  "opts": {
    "recurse": true,
    "destination": "../../docs/"
  }
}

 

 

๋ฌธ์„œํ™”

 

๋‘์„œ์—†์ด ์„ค๋ช…ํ–ˆ์ง€๋งŒ, ์ •๋ฆฌํ•˜์ž๋ฉด sphinx-js๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ ๋ฌธ์„œํ™”๋Š” ๋‘ ๊ฐœ์˜ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 1. sphinx 2. jsdoc.  ์ด ๋‘˜์„ ์—ฐ๊ฒฐ์‹œ์ผœ ์ฃผ๋Š” ๋ชจ๋“ˆ์ด sphinx-js์ธ ์…ˆ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ๊ฐ์˜ ํฌ๋งท์— ๋งž์ถฐ์„œ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ํŒŒ์ผ๋“ค์„ ์ž‘์„ฑํ•ด ์ค„ ๊ฒ๋‹ˆ๋‹ค.

 

sphinx์˜ ๋ฉ”์ธ ๋ฌธ์„œ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ rst ํฌ๋งท์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. make html ๋ช…๋ น์–ด๋ฅผ ๋‚ด๋ ธ์„ ๋•Œ ์„ค์ •ํ•œ docs/ ํด๋” ๋‚ด์— ์žˆ๋Š” rst ํŒŒ์ผ๋“ค์„ ์ฝ์–ด ๋“ค์—ฌ ๋ฌธ์„œํ™”๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

index
|_ Introduction
|	|_ intro
|_ Modules
	|_ module1
	|_ module2

 

๊ทธ๋ ‡๋‹ค๋ฉด index.rst๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋•Œ source ํด๋” ๋‚ด์—๋Š” ๊ฐ๊ฐ ๋Œ€์‘๋˜๋Š” rst ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

.. documentation master file, created by
   sphinx-quickstart on Tue Nov 29 21:07:28 2022.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

ํƒ€์ดํ‹€
======================================
๋ฌธ์„œ ์„ค๋ช…

.. image:: _static/image.png
    :alt: image example
    :align: center

**Figure**. static image example

====================================================================================

.. toctree::
    :maxdepth: 3
    :caption: Introduction

    intro


.. toctree::
   :maxdepth: 3
   :caption: Modules:

   module1
   module2
   module3


.. Indices and tables
   * :ref:`genindex`
   * :ref:`modindex`
   * :ref:`search`

 

์ด๋•Œ, ๊ฐ๊ฐ์— ๋Œ€์‘๋˜๋Š” rstํŒŒ์ผ์€ source ํด๋” ๋‚ด์— ๊ฐ™์€ ๋ ˆ๋ฒจ์—์„œ ์ž‘์„ฑ๋˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

/my_project
|_/yourcodes
|_/docs
|    |_Makefile
|    |_Requirement.txt
|    |_ build/
|    |_ source/
|    |    |_ _static
|    |    |_ _templates
|    |    |_ conf.py
|    |    |_ index.rst
|    |    |_ intro.rst
|    |    |_ module1.rst
|    |    |_ module2.rst
|    |_ make.bat
|_jsdoc.json

 

rst ํŒŒ์ผ ๋‚ด์—์„œ javascript ์ฝ”๋“œ์˜ ์ฃผ์„ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด.. js:autofunction:: someFunction๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ๋”ฐ๋ผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํƒ€์ž… ๋ณ„ ์„ค์ •์€ https://github.com/mozilla/sphinx-js์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

..js:autofunction::FunctionName

..js.autoclass:ClassName
  :members:
  :private-members:

 

 

rst ํŒŒ์ผ์—์„œ ์œ„์˜ jsDoc๋ฌธ๋ฒ•์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” javascript ์ฝ”๋“œ ๋‚ด์— ์ฃผ์„ ์„ค๋ช…์ด ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์„์ž‘์„ฑ์„ ์œ„ํ•œ ๋ฌธ๋ฒ•์€ jsdoc ๋ฌธ๋ฒ•์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.  JSDoc syntax๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์˜ˆ)

/**
 * Assign the project to an employee.
 * @param {Object} employee - The employee who is responsible for the project.
 * @param {string} employee.name - The name of the employee.
 * @param {string} employee.department - The employee's department.
 */
Project.prototype.assign = function(employee) {
    // ...
};

 

 

๋นŒ๋“œ

 

docs ํด๋” ๋‚ด์—์„œ make ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋นŒ๋“œํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

make html

 

 

์ฐธ๊ณ 

- https://github.com/mozilla/sphinx-js

 

GitHub - mozilla/sphinx-js: Autodoc-style extraction into Sphinx for your JS project

Autodoc-style extraction into Sphinx for your JS project - GitHub - mozilla/sphinx-js: Autodoc-style extraction into Sphinx for your JS project

github.com

- https://jsdoc.app/tags-param.html#parameters-with-properties

 

Use JSDoc: @param

@param Table of Contents Synonyms @arg @argument Overview The @param tag provides the name, type, and description of a function parameter. The @param tag requires you to specify the name of the parameter you are documenting. You can also include the parame

jsdoc.app

- https://www.sphinx-doc.org/en/master/usage/quickstart.html#defining-document-structure

 

Getting Started — Sphinx documentation

Getting Started Sphinx is a documentation generator or a tool that translates a set of plain text source files into various output formats, automatically producing cross-references, indices, etc. That is, if you have a directory containing a bunch of reStr

www.sphinx-doc.org

 

 

๋ โ—ผ๏ธŽ

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

# ๋กœ๋”ฉ ํ™”๋ฉด ๋™์ž‘ ์ฝ”๋“œ(Code) ์„ค์ •ํ•˜๊ธฐ