
π Babel κ°μ΄λ π
1. κΈμ λͺ©μ λ° κ°μ
π§ Babelμ΄λ?
Babelμ μ΅μ JavaScript λ¬Έλ²μ μ΄μ λ²μ μμλ μ¬μ©ν μ μλλ‘ λ³νν΄ μ£Όλ **νΈλμ€νμΌλ¬(Transpiler)**λ€! π‘ μ΅μ ECMAScript(ES6 μ΄μ)μ κΈ°λ₯μ μ§μνμ§ μλ λΈλΌμ°μ μμλ μννκ² μ€νλ μ μλλ‘ μ½λλ₯Ό λ³ννλ μν μ νλ€. π
π€ μ Babelμ΄ νμνκ°?
1οΈβ£ λΈλΌμ°μ νΈνμ± λ¬Έμ ν΄κ²° π λΈλΌμ°μ λ§λ€ JavaScript μ§μ λ²μκ° λ€λ₯΄λ€. μ΅μ JavaScript λ¬Έλ²(μ: let, const, νμ΄ν ν¨μ, async/await λ±)μ μ§μνμ§ μλ νκ²½μμλ μννκ² μ€νλλλ‘ λ³νν΄μΌ νλ€.
2οΈβ£ μ΅μ JavaScript λ¬Έλ² νμ© β¨ κ°λ°μλ€μ μ΅μ λ¬Έλ²μ μ¬μ©νμ¬ μ½λμ κ°λ μ±μ λμ΄κ³ μ μ§λ³΄μλ₯Ό μ½κ² νκ³ μΆλ€! νμ§λ§ λͺ¨λ λΈλΌμ°μ κ° μ΄λ₯Ό μ§μνλ κ²μ μλλ―λ‘ Babelμ΄ νμνλ€. π§
3οΈβ£ μ½λ λ³ν(νΈλμ€νμΌλ§) π Babelμ μ΅μ λ¬Έλ²μ μ΄μ λ²μ μΌλ‘ λ³ννμ¬, μ½λκ° λ€μν νκ²½μμλ μ€νλ μ μλλ‘ λμμ€λ€. ποΈ
2. Babelμ ν΅μ¬ κ°λ
π νΈλμ€νμΌλ§(Transpiling)μ΄λ?
Babelμ μ£Όμ κΈ°λ₯μ **νΈλμ€νμΌλ§(Transpiling)**μ΄λ€. μ¦, μ΅μ JavaScript λ¬Έλ²μ μ§μνμ§ μλ νκ²½μμλ μ€ν κ°λ₯νλλ‘ μ½λλ₯Ό λ³ννλ κ³Όμ μ΄λ€.
μλ₯Ό λ€μ΄, λ€μ ES6 μ½λ β¨
const greet = (name) => `Hello, ${name}!`;
Babelμ μ¬μ©νλ©΄ λ€μκ³Ό κ°μ΄ λ³νλ μ μλ€. π
var greet = function(name) {
return "Hello, " + name + "!";
};
μ΄λ κ² νΈλμ€νμΌλ§μ ν΅ν΄ λ λμ λ²μμ νκ²½μμ μ€νλ μ μλ€. π
π οΈ νλ¬κ·ΈμΈκ³Ό ν리μ
Babelμ νλ¬κ·ΈμΈκ³Ό ν리μ μ μ¬μ©νμ¬ λ€μν κΈ°λ₯μ μννλ€.
πΉ νλ¬κ·ΈμΈ(Plugin) → νΉμ ν JavaScript κΈ°λ₯μ λ³ννλ μν
- μ: @babel/plugin-transform-arrow-functions → νμ΄ν ν¨μλ₯Ό μΌλ° ν¨μλ‘ λ³ν π‘
πΉ ν리μ (Preset) → μ¬λ¬ κ°μ νλ¬κ·ΈμΈμ λ¬Άμ΄ λμ μ€μ μ§ν©
- μ: @babel/preset-env → μ΅μ λ¬Έλ²μ μλμΌλ‘ λ³ννλ κ°μ₯ μΌλ°μ μΈ ν리μ π―
3. Babelμ μ€μ λ° μ¬μ©λ² βοΈ
ποΈ Babel μ€μΉ
Babelμ μ¬μ©νλ €λ©΄ λ¨Όμ μ€μΉν΄μΌ νλ€. Node.js νκ²½μμ npmμ μ΄μ©νμ¬ μ€μΉν μ μλ€. π»
npm install --save-dev @babel/core @babel/cli @babel/preset-env
π Babel μ€μ νμΌ
Babelμ μ€μ μ .babelrc λλ babel.config.json νμΌμ μ¬μ©νμ¬ κ΄λ¦¬ν μ μλ€.
π .babelrc νμΌ μμ
{
"presets": ["@babel/preset-env"]
}
μ΄ μ€μ μ μ΅μ JavaScript λ¬Έλ²μ λΈλΌμ°μ κ° μ§μνλ λ²μ μΌλ‘ λ³νν΄ μ€λ€. π
π Babel CLIλ₯Ό μ΄μ©ν νΈλμ€νμΌλ§
μ€μ μ΄ μλ£λλ©΄ Babel CLIλ₯Ό μ¬μ©νμ¬ JavaScript μ½λλ₯Ό λ³νν μ μλ€.
npx babel src --out-dir dist
μ λͺ λ Ήμ΄λ src ν΄λμ JavaScript νμΌμ λ³ννμ¬ dist ν΄λμ μ μ₯νλ€. ποΈ
4. Babelκ³Ό Webpack μ°λ π€
Babelμ Webpackκ³Ό ν¨κ» μ¬μ©νμ¬ νλ‘μ νΈ λ΄ λͺ¨λ JavaScript νμΌμ λ³νν μ μλ€.
π οΈ Webpack μ€μ νκΈ°
npm install --save-dev babel-loader
π webpack.config.js μμ
module.exports = {
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
}
]
}
};
μ΄μ Webpackμ μ€ννλ©΄ μλμΌλ‘ Babelμ ν΅ν΄ μ΅μ JavaScript μ½λκ° λ³νλλ€. π
5. Babelκ³Ό κ΄λ ¨λ λ¬Έμ ν΄κ²° κ²½ν π
β οΈ import/export λ³ν λ¬Έμ
Babelμ κΈ°λ³Έμ μΌλ‘ importμ export λ¬Έλ²μ ES5λ‘ λ³ννμ§ μλλ€. μ΄λ₯Ό ν΄κ²°νλ €λ©΄ @babel/preset-env μ€μ μμ modules μ΅μ μ μ€μ ν΄μΌ νλ€.
{
"presets": [
["@babel/preset-env", { "modules": "commonjs" }]
]
}
β οΈ async/await λ³ν λ¬Έμ
Babelμ async/awaitμ λ³νν μ μμ§λ§, regenerator-runtimeμ΄ νμν μ μλ€. ν΄κ²°νλ €λ©΄ λ€μμ μ€μΉνλ€.
npm install --save @babel/polyfill
κ·Έλ¦¬κ³ μ½λμ μ΅μλ¨μ λ€μμ μΆκ°νλ€.
import "@babel/polyfill";
6. Babelμ μ΅μ λν₯ λ° νκ³ π§
π₯ μ΅μ Babel κΈ°λ₯
β μ΅μ ECMAScript λ²μ μ μ§μνλ ν리μ μ λ°μ΄νΈ
β μ±λ₯ μ΅μ ν λ° λΉλ μλ κ°μ
β Babelμ νκ³
π§ Babelμ λ¬Έλ²μ λ³ννμ§λ§, μΌλΆ κΈ°λ₯(Promise, fetch)μ λ³ννμ§ λͺ»νλ―λ‘ ν΄λ¦¬νμ΄ νμν μ μλ€. π§ Webpack, Vite λ±κ³Ό ν¨κ» μ¬μ©ν΄μΌ ν¨μ¨μ μΌλ‘ λμνλ€.
7. κ²°λ‘ λ° λ§λ¬΄λ¦¬ π―
π Babelμ νμ©λ² μ 리
β μ΅μ JavaScript λ¬Έλ²μ μ¬μ©νλ©΄μλ νΈνμ±μ μ μ§ν μ μλ€.
β λ€μν λΈλΌμ°μ μμ λμΌν μ½λκ° μ€νλ μ μλλ‘ λ³νν΄ μ€λ€.
β Webpackκ³Ό ν¨κ» μ¬μ©νλ©΄ νλ‘μ νΈ μ λ°μμ Babelμ μ μ©ν μ μλ€.
π€ μΈμ Babelμ΄ νμνκ°?
π μ΅μ JavaScript λ¬Έλ²μ μ¬μ©νκ³ μΆμ§λ§, λͺ¨λ λΈλΌμ°μ μμ λμν΄μΌ ν λ π οΈ λ κ±°μ μ½λμ μ΅μ μ½λμ νΈνμ±μ μ μ§ν΄μΌ ν λ π¦ Webpack, React, Vue λ± μ΅μ νλ μμν¬μ ν¨κ» μ¬μ©ν λ
Babelμ μ μ ν νμ©νλ©΄ μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ λμ΄λ©΄μλ λΈλΌμ°μ νΈνμ±μ ν보ν μ μλ€. ππ₯
'곡λΆ, μ€λ₯' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| Windowsμμ Qdrant μ€μΉ λ° Python μ°κ²° νν λ¦¬μΌ (1) | 2025.09.16 |
|---|---|
| μλ§¨ν± λ²μ λ(Semantic Versioning) (0) | 2025.06.19 |
| Chrome extensions μΆκ°ν΄λ³΄κΈ° (1) | 2025.02.11 |
| Minify, Uglify μ λ¬Έ (1) | 2025.01.21 |
