- WIP
VSCode๋ก ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ํ์ด๋ฅผ ํ๊ณ ์๋๋ฐ ์ค๋ณต๋๋ ์์ ์ด ์์ด ์ด ๊ณผ์ ์ ์๋ํํ๊ธฐ ์ํด์ ์ ์ํ์๋ค. ๋๊ทธ ํธ๋ฉ ํด๋ณด๊ณ npm์ ํจํค์ง ํํ๋ก ๋ฐฐํฌํด๋ด์ผ๊ฒ ๋ค.
npm init -y
npm i -D turndown cheerio puppeteer jest @types/jest
node๊ฐ ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค. ํ๊ฒฝ ๊ตฌ์ฑ์ ์์ฒ๋ผ ํ๋ฉด ๋๋ค. ์ดํ template.js ํ์ผ์ package.json์ด ์๋ ๋ฃจํธ ํด๋์ ๋ณต์ฌํ๋ค.
node template.js 42587
์ซ์๋ ๋ฌธ์ ๋ฒํธ์ด๋ค. ์คํ์ํค๋ฉด ๋ฌธ์ ๋ฒํธ์ ํด๋นํ๋ ๋ฌธ์ ์ ๋ชฉ์ผ๋ก ํด๋๊ฐ ๋ง๋ค์ด์ง๊ณ ํด๋ ๋ด๋ถ์ README.md์ answer.test.js ํ์ผ์ด ์์ฑ๋๊ฒ ๋๋ค.
jest --watchAll --coverage
์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์ ์ฅํ ๋๋ง๋ค ํ ์คํธ์ผ์ด์ค๊ฐ ์คํ๋๊ฒ ๋๋ค. package.json scripts ํญ๋ชฉ์ ์ถ๊ฐํ๋ฉด ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. jest๊ฐ ์ค์ ๋์ด ์์ผ๋ ๊ธฐํธ์ ๋ฐ๋ผ TDD ๋ฐฉ์์ผ๋ก ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค!
์ฒซ ๋ฒ์งธ๋ก ํ๋ก๊ทธ๋๋จธ์ค์ robots.txt๋ฅผ ํ์ธํ๋ค. ๋ฌธ์ ์ ๊ด๋ จ๋ URL์๋ ํฌ๋กค๋ง ํ๋ ๋ถ๋ถ์ disallow๊ฐ ๋์ด์์ง ์์์ ํฌ๋กค๋ง์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋จํ๋ค.
ํ๋ก๊ทธ๋๋จธ์ค์์ cheerio ๋ง์ผ๋ก ํฌ๋กค๋ง์ด ๋ถ๊ฐ๋ฅํ๊ฒ๋ ๋์ด์์ด puppeteer๋ฅผ ๋ณํํ์ฌ ์ฌ์ฉํ๋ค. ํฌ๊ฒ ์ ๋ชฉ, ๋ฌธ์ ์ค๋ช ์ ๊ดํ ๋ถ๋ถ, ์ด๊ธฐ ์ฝ๋ ์ด๋ ๊ฒ ์ธ ๋ถ๋ถ์ ํฌ๋กค๋ง์ ์๋ํ์๊ณ ์กฐ๊ธ์ ์ด๋ ค์์ด ์์์ง๋ง ๋ชจ๋ ์ฑ๊ณตํ์๋ค.
jest์ --watch ์ต์ ์ ์ฃผ๊ณ ํ ์คํธ์ผ์ด์ค๋ฅผ ์ค์ ํ๋ฉด ์ ์ฅํ ๋๋ง๋ค ํ ์คํธ์ผ์ด์ค๋ฅผ ํต๊ณผํ๋์ง๋ฅผ ์ ์ ์์ด์ ํธํ๋ฐ ์ด๊ฒ๋ ์๋์ผ๋ก ๋ง๋ค์ด ์ฃผ๊ณ ์ถ์๋ค. ํฌ๋กค๋ง์ ํตํด ํ๋ณดํ ์ ์ถ๋ ฅ ์์ result ์ ๊น์ง๋ฅผ expect ๋ด๋ถ์ ์ธ์๋ก ๋ฃ๊ณ result๋ฅผ toBe์ ๋ฃ๋ ์์ผ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์๋ ์์ฑ๋๋๋ก ํ์๋ค.
README.md ํ์ผ์ ์์ฑํ ๋ ์ ๋ชฉ, ๋ฌธ์ ์ค๋ช , ์ด๋ป๊ฒ ํ์๋์ง, ํ๊ณ ๋ฑ์ ํญ๋ชฉ์ ๊ฐ๊ฐ Markdown์ผ๋ก ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๋๋ก ํ์๋ค. ์ฆ, ํ๋ก๊ทธ๋๋จธ์ค๋ฅผ ํค์ง ์๋๋ผ๋ VSCode๋ง์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ธํ ์ ์๋ค. ๋ฌธ์ ์ค๋ช ๋ถ๋ถ์ table์ ์ ์ธํ๊ณ TurnDown๋ฅผ ์ด์ฉํด ๋ชจ๋ html์์ markdown์ผ๋ก ๋ณ๊ฒฝํ์๋ค.
ํ์ผ์ ๋ง๋ค ๋ ์ ์๊ถ์ ํ๋ก๊ทธ๋๋จธ์ค์ ์๋ค๊ณ ๋ช ์ํ๋ ๋ถ๋ถ์ ์ถ๊ฐํ์๋ค.