Section 21: JavaScript Tooling - Beyond Basic Projects
The goals
๐ช๐ปWhat & Why?
โ๐ปExample Setup
ESLint
ESLint๋ ๋ค์ํ ์ต์ ์ ์ ๊ณตํ๋ฏ๋ก ์๊ตฌ์ฌํญ์ ์ ํํ ๋ง๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
์ฒ์๋ถํฐ ์์ ๋ง์ ๊ท์น์ ์ค์ ํ ์ ์์ง๋ง(๊ฐ์์์ ๋ฐฐ์ฐ๊ธฐ ์์ํ ์์ ์ด์ฃ ), ์ฌ์ ์ค์ ๊ณผ ๋ฏธ๋ฆฌ ๊ตฌ์ฑ๋ ๊ท์น ์งํฉ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
.eslintrc.json์์ ๊ตฌ์ฑํ ์ ์๋ ๋ชจ๋ ์ต์
์ ์์ ํ ์ดํดํ๋ ค๋ฉด ๊ณต์ ๋ฌธ์์ ์ด ๋ถ๋ถ์ด ๋์์ด ๋ ๊ฒ๋๋ค.
https://eslint.org/docs/user-guide/configuring
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ท์น๊ณผ ๊ทธ ์๋ฏธ๋ฅผ ์์๋ณด๋ ค๋ฉด ๊ณต์ ๋ฌธ์์ ์ด ๋ถ๋ถ์ ์ดํด๋ณด์ธ์.
https://eslint.org/docs/rules/
์ฌ์ ์ค์ ์ ์ฌ์ฉํ๊ณ ์ถ์ผ์ ๊ฐ์? ์ด ๋งํฌ๋ฅผ ํ์ธํด ๋ณด์ธ์.
https://www.npmjs.com/search?q=eslint-config (๊ฒฐ๊ณผ ์ค ํ๋๋ฅผ ํด๋ฆญํ๊ณ ๊ฑฐ๊ธฐ์ ์ ๊ณต๋ ์ง์นจ์ ๋ฐ๋ฅด๋ฉด ๋ฉ๋๋ค)
์ด ๋ฌธ์๋ ์ฐธ๊ณ ํด ๋ณด์ธ์.
https://eslint.org/docs/user-guide/getting-started
Webpack

์์ ํ๋ก์ ํธ์๋ ํ๋์ ๊ธฐ๋ณธ ์ํธ๋ฆฌ ํฌ์ธํธ app.js๋ง ์์ต๋๋ค.
์ฌ๋ฌ HTML ํ์ด์ง๊ฐ ์๋ ๋ํ ํ๋ก์ ํธ์์๋ ๋ค์์ ํ์ด์ง(HTML ํ์ผ)์ ๋ํด ๊ตฌ์ถํ ์ ์๋ ๋ค์ํ ์คํฌ๋ฆฝํธ๊ฐ ์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ ๊ฐ ์ด์์ ๋ฒ๋ค์ ๊ตฌ์ถํ๊ธฐ ์ํ๊ธฐ ๋๋ฌธ์ ํ๋ ์ด์์ ์ํธ๋ฆฌ ํฌ์ธํธ๊ฐ ํ์ํ ์ ์์ต๋๋ค(์ฆ ๋ชจ๋ HTML ํ์ด์ง๊ฐ ๋์ผํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ ๊ฒฝ์ฐ).
์ด๋ Webpack์ผ๋ก ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์๋์ ์ฝ๋ ๋์
entry: './src/app.js'
์๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ธ์
entry: {
welcome: './src/welcome-page/welcome.js',
about: './src/about-page/about.js',
// ๊ธฐํ ๋ฑ๋ฑ
}
์ด์ Webpack์ ์ด๋ฌํ ๋ชจ๋ ์ํธ๋ฆฌ ํฌ์ธํธ๋ฅผ ์กฐํํ๊ณ ์ํธ๋ฆฌ ํฌ์ธํธ๋น ํ๋์ ๋ฒ๋ค์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฐ HTML ํ์ผ์์ ์ด๋ฌํ ๋ฒ๋ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋๋ถ๋ถ์ ํ๋ก์ ํธ์ ์ ํฉํ ๊ฐ๋จํ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก HTML ํ์ผ๋น ํ๋์ ์คํฌ๋ฆฝํธ๊ฐ ์์ผ๋ฏ๋ก HTML ํ์ผ๋น ํ๋์ ์ํธ๋ฆฌ ํฌ์ธํธ ๊ฐ์ง๊ธฐ.
๋ฌผ๋ก ์ฌ๋ฌ HTML ํ์ผ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต์ ํ๊ฑฐ๋ ์คํฌ๋ฆฝํธ๊ฐ ํ์ํ์ง ์์ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ด ๊ท์น์ ๋ฐ๋ฅด์ง ์์๋ ๋ฉ๋๋ค.
๋ค์ ๋ ์๋ฃ๋ฅผ ํตํด ์ฌ๋ฌ ์ํธ๋ฆฌ ํฌ์ธํธ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ถํ (์ฆ ๋ ์ด์์ ๋ฒ๋ค ์์ฑ): https://webpack.js.org/guides/code-splitting/
- ์ํธ๋ฆฌ ํฌ์ธํธ ๊ตฌ์ฑ: https://webpack.js.org/concepts/#entry
๊ทธ๋ฆฌ๊ณ ๊ณต์ Webpack ๋ฌธ์๋ฅผ ํ์ธํ์ฌ ์์ธํ ํ์ธํด ๋ณด์ธ์. https://webpack.js.org/guides/
Sources
Find and fix problems in your JavaScript code - ESLint - Pluggable JavaScript Linter
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
eslint.org
webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
webpack.js.org