Webpack 5 κΈ°λ°μ Vue κ°λ° νκ²½
μλ νμΈμ Mambo μ λλ€.
μ€λμ Webpack 5 κΈ°λ°μ Vue κ°λ° νκ²½μ λν΄μ μμ보λ μκ°μ κ°μ Έλ³΄λλ‘ νκ² μ΅λλ€.
λ³Έ κΈμμ μ€λͺ
ν λ΄μ©μ λν μ½λλ kdevkr/webpack5μμ μ 곡ν©λλ€.
Webpack
λ°λμ κ·Έλ° κ²μ μλμ§λ§ λ§μ λΆλ€μ΄ Create React App λλ Vue CLIλΌλ λꡬλ₯Ό ν΅ν΄μ νλ‘ νΈμλ κ°λ° νκ²½μ λν κΈ°λ³Έ ν리μ μ κΈ°λ°μΌλ‘ νμ΅μ μμνκ±°λ κ°λ° νκ²½μ ꡬμΆν©λλ€. μ΄ λꡬλ€μ μ¬λ¬κ°μ§ μ¬νμ λν μΉν© ꡬμ±μ κΈ°λ³Έμ μΌλ‘ μ 곡ν¨μΌλ‘μ¨ μΉν©μ λν λ΄μ©μ μμ§ λͺ»νλλΌλ μ½κ² 리μ‘νΈ λλ λ·°μ λν νμ΅μ μ§νν μ μκ² λμμ£Όλ μ μ©ν λꡬμ λλ€.
κ·ΈλΌμλ λΆκ΅¬νκ³ , μ€λ¬΄ νκ²½μμλ μ΄ λꡬλ€μ μ¬μ©νμ§ μκ³ μ§μ μΉν© μ€μ μ λν΄ κ΅¬μ±νμ¬ μ¬μ©ν©λλ€. λν, Vue CLIλ μνκΉκ²λ μΉν© 4μ λν ꡬμ±μ μ 곡νλ―λ‘ μ΄ λκ΅¬λ‘ λ§λ€μ΄μ§λ νκ²½μ 무쑰건 μΉν© 4λ‘ μ νλλ λ¬Έμ μ μ κ°μ§κ³ μμ΅λλ€. 2020λ 10μμ 릴리μ¦λ μΉν© 5 κΈ°λ°μ κ°λ° νκ²½μ λ§λ€κΈ° μν΄μλ μ§μ μΉν© ꡬμ±μ μνν μ μμ΄μΌλ§ ν©λλ€.
μꡬμ¬ν
μμνκΈ°μ μμ, μΉν© 5λ λ Έλ 10.13.0 μ΄μμ λ²μ μ μꡬνλ©° ν¨κ» κ°λ° νλ‘μ μλ²λ‘ νμ©ν μ μλ webpack-dev-server@4 μμλ λ Έλ 12.13.0 μ΄μμ μꡬν©λλ€.
- Webpack5 required v10.13.0+
- webpack-dev-server@4 v12.13.0+
νλ‘μ νΈ λ Έλ λ²μ μ ν
μ μꡬμ¬νμ λ°λΌ νλ‘μ νΈμμ μ¬μ©ν μ μλ λ Έλ λ²μ μ μ ννλ κ²μ΄ μ’μ΅λλ€. μ κ° μ΄μ μ 곡μ ν νλ‘μ νΈμ λ Έλ λ²μ μ ννκΈ°λ₯Ό μ°Έκ³ νμ¬ λ Έλ μμ§ λ²μ μ 12.13.0 μ΄μμΌλ‘ μ€μ ν΄λλ κ²μ μΆμ²νλ λ°μ λλ€.
컀λ°λ³λ‘ νμΈνλ ꡬμ±
κ° μ»€λ° λ¨μμ Browser Filesλ₯Ό ν΅ν΄ μ΄λ»κ² ꡬμ±μ΄ λ³ννλμ§λ₯Ό μ°Έκ³ νμλ©΄ μ’μ΅λλ€.
Add webpack.config.js for default configuration
κΈ°λ³Έ ꡬμ±μ μν webpack.config.js νμΌμ λ§λ€κ³ node-env κ°μ λ°λΌ λ²λ€ νμΌλͺ μ λ€λ₯΄κ² μ§μ ν μ μμμ 보μ¬μ€λλ€.
npx webpack --node-env production # λͺ¨λλ₯Ό μ§μ νμ§ μμμ§λ§ node-env κ°μ μν΄ μ²λ¦¬λ©λλ€.
Add vue-loader
Vue SFC νμΌμ μ²λ¦¬νκΈ° μν vue-loaderλ₯Ό μΆκ°νκ³ Vue κ°λ° νκ²½μ μ€λΉνκ³ κ°λ¨ν μν HTML νμΌμ λ§λ€μ΄μ Vue μ½λκ° μ μμ μΌλ‘ λ³νλμμμ νμΈν©λλ€.
Add sass, postcss
Vue SFCμ μ€νμΌ λΈλ‘μ μΈμ΄λ₯Ό SCSSλ‘ μ¬μ©νκΈ° μν΄μ sass λ° postcssμ λν μ€μ μ μΆκ°ν©λλ€.
Add stylelint
λ°λμ νμν μ€μ μ μλμ§λ§ CSSμ λν λ¦°νΈλ₯Ό μ μ©νκΈ° μν΄ stylelintλ₯Ό postcss νλ¬κ·ΈμΈμΌλ‘ μΆκ°ν©λλ€.
Add eslint
μλ°μ€ν¬λ¦½νΈμ λν λ¦°νΈλ₯Ό μ μ©νκΈ° μν΄ eslintλ₯Ό μΆκ°ν©λλ€.
Add babel
ES6+ λ¬Έλ²μ μ§μνμ§ μλ λΈλΌμ°μ λ₯Ό μν΄ ES5 λ¬Έλ²μΌλ‘ λ³ννκΈ° μν babelμ μΆκ°ν©λλ€. babel 7 λΆν°λ ν΄λ¦¬ν μ μ© λ°©μμ΄ λ³κ²½λμμμ μ£Όμν΄μΌν©λλ€. λ°λ²¨ ν΄λ¦¬νμ λν΄μλ λ€μμ λ λ§ν¬λ₯Ό μ°Έκ³ νμλ©΄ μ’μ΅λλ€.
- νμ§λ @babel/polyfill λμ @babel/plugin-transform-runtimeμ μ¬μ©ν΄ ν΄λ¦¬ν μΆκ°νκΈ°
- Babel7κ³Ό corejs3 μ€μ μΌλ‘ μ μ μ€μΌ μλ ν΄λ¦¬ν μ¬μ©νκΈ°
Add browserslist
postcssμ autoprefixer λλ babelμμ μ°Έκ³ ν νκ² μ 보λ₯Ό μν΄ browserslistλ₯Ό μΆκ°ν©λλ€.
Add prettierrc
λΆνμν ν¬λ§·ν μ λ°©μ§νκΈ° μν prettier μ΅μ μ μ‘°μ ν©λλ€.
Add asset
μ΄λ―Έμ§ λλ ν°νΈ λ±μ μν μμ λͺ¨λμ μΆκ°ν©λλ€.
Apply strict npm engines
μ§κΈκΉμ§ μ€μΉλ ν¨ν€μ§μμ μ΅μλ‘ μꡬνλ λ Έλ λ²μ μ λͺ μνκ³ μ νλλλ‘ μ€μ ν©λλ€.
Apply settings for vscode
VSCodeλ₯Ό μ¬μ©νλ κ²½μ° μ μ₯λ λ ESLintκ° λμνλλ‘ μ€μ ν©λλ€.
Add project version in output filename
(Optional) package.jsonμ μ μλ νλ‘μ νΈ λ²μ μ λ²λ€ νμΌλͺ μ ν¬ν¨μν¬ μ μμμ 보μ¬μ€λλ€.
Apply optimization
νλ‘λμ νκ²½μ μν μ΅μ ν ꡬμ±μ μ‘°μ ν©λλ€.
Add manifest
맀λνμ€νΈ νμΌμ΄ μμ±ν μ μλλ‘ νλ¬κ·ΈμΈμ μΆκ°ν©λλ€.
npx webpack --node-env production --env manifest
Add bootstrap-vue
BootstrapVueλ₯Ό μΆκ°ν΄λ³΄κ³ μ΅μ λ²μ μ Sassμμ μΆλ ₯λλ Deprecation κ²½κ³ κ° μΆλ ₯λμ§ μλλ‘ μ€μ ν©λλ€.
κ°μ¬ν©λλ€.