Webpack์ ์์กด์ฑ์ ๊ฐ์ง ์์ญ,์๋ฐฑ ๊ฐ์ ํ์ผ๋ก ๊ตฌ์ฑ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ฒ๋ฆฌ๋ฅผ ๋๋๋ค.
Webpack์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์์ ์ ๋ชจ์ ์ ์ ์์ ์ผ๋ก ๋ฒ๋ค๋งํ๋ค. ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๋ ๋ฐฑ์ฌ ๊ฐ์ JavaScript ํ์ผ์ด ํ๋๋ก ํฉ์ณ์ ธ์ ํ ์คํฌ๋ฆฝํธ๋ก ๋ถ๋ฌ์ฌ ์ ์๋ ๋ฒ๋ค ํ์ผ์ด ๋๋ค.
Webpack ํจํค์ง ์ค์น
npm install --save-dev webpack webpack-cli typescript ts-loader
Webpack์ ๋ชจ๋ ๋ฒ๋ค๋ฌ์ด์ง๋ง Webpack์ ๋ช
๋ น์ค์์ ์ฌ์ฉํ๊ฑฐ๋ package.json ํ์ผ ๋ด์์ ํธ์ถํ๋ ค๋ฉด
webpack-cli๊ฐ ํ์ํ๋ค. ๊ทธ๋์ ๋์ ํจ๊ป ์ฌ์ฉ๋๋ค.
webpack-cli ๋ Webpack์ ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ก Webpack ์์ด๋ ์ฌ์ฉํ ์ ์์ผ๋ Webpack์ ํฌํจ์ด ๋์ด ์์ง๋ ์๋ ๊ฐ๋ณ ํจํค์ง์ด๋ค.
typescript๋ package.json์ TypeScript๋ฅผ ํฌํจ์ํค๊ธฐ์ํด์ ๋ค์ด๋ก๋ ๋ฐ์๋ค. ์ด์ ๋ ํ์ฌ ์์ ํ๊ณ ์๋ ๋ฒ์ ์ ๋ช ์ํ๊ธฐ์ํด์์ด๋ค.
ts-loader๋ TypeScript์ Webpack ์ฌ์ด์ ์ค๊ฐ์ ์ญํ ์ ํ๋ค. TypeScript๋ฅผ ํธ์ถํด์ ์ฆ, tsc ๋ช ๋ น์ด๋ฅผ ํธ์ถํด TypeScript๋ฅผ Javascript๋ก ์ปดํ์ผ๋งํ ๋ค ์ด๋ฅผ ๋ชจ๋ ๋ฒ๋ค๋งํ๊ฒ ๋ Webpack์ผ๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
entry ํ๋กํผํฐ๋ Webpack์๊ฒ ๋ฒ๋ค๋ง์ ์์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์์ ์ ์ง์ ํด ์ค๋ค.
module ํ๋กํผํฐ๋ ๊ฐ์ฒด์ธ๋ฐ ์ฌ๊ธฐ์๋ ๋ฐฐ์ด์ด ๋ rules ํ๋กํผํฐ๊ฐ ํฌํจ๋๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ ๊ท์น์ ์ถ๊ฐํ ์ ์๋ค.
ts๋ tsx๋ก ๋๋๋ ํ์ผ์ด์ค๋ฉด ts-loader๋ฅผ ์ฌ์ฉํ๋ผ๋ ์๋ฏธ.
resolve ํ๋กํผํฐ๋ ๊ฐ์ฒด๋ก extensions์๋ Webpack์ด resolveํ ์ ์๋ ํ์ฅ์์ ๋ฆฌ์คํธ๊ฐ ๋ค์ด๊ฐ๋ค.
const path = require('path');
module.exports = {
entry: './src/index.ts',
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.tsx', '.ts', '.js'],
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
};
์์ค ๋งต์ ๋ฐฐํฌ์ฉ์ผ๋ก ๋น๋ํ ํ์ผ๊ณผ ์๋ณธ ํ์ผ์ ์๋ก ์ฐ๊ฒฐ์์ผ์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
๋ณดํต ์๋ฒ์ ๋ฐฐํฌ๋ฅผ ํ ๋ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด HTML, CSS, JS์ ๊ฐ์ ์น ์์๋ค์ ์์ถํ๋๋ฐ ๋ง์ฝ ์์ถํ์ฌ ๋ฐฐํฌํ ํ์ผ์์ ์๋ฌ๊ฐ ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋๋ฒ๊น
์ ํ ์ ์์ด ์์ค ๋งต์ ์ด์ฉํด ๋ฐฐํฌ์ฉ ํ์ผ์ ํน์ ๋ถ๋ถ์ด ์๋ณธ ์์ค์ ์ด๋ค ๋ถ๋ถ์ธ์ง ํ์ธํ ์ ์๋ค.
"compilerOptions": {
"sourceMap": true
}
module.exports = {
devtool: 'inline-source-map'
}