AlliniλŠ” Create React App(CRA)을 μ‚¬μš©ν•˜μ§€ μ•Šκ³ , 직접 Webpackκ³Ό Babel을 μ„€μ •ν•΄λ³΄κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.
νšŒμ‚¬μ—μ„œ Webpack을 μ„€μ •ν•΄λ³Έ κ²½ν—˜μ΄ μžˆμ–΄, μ²˜μŒμ—λŠ” κ·Έ 기얡에 μ˜μ‘΄ν•΄ μž‘μ—…μ„ μ‹œμž‘ν–ˆμ–΄μš”.

그런데 ν”„λ‘œμ νŠΈ μ§„ν–‰ 도쀑 Pretendard-Black.subset.woff2 및 Pretendard-ExtraBold.subset.woff2 폰트 νŒŒμΌμ„ 찾을 수 μ—†λ‹€λŠ” μ—λŸ¬κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

 

이 μ—λŸ¬λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 파일 μœ„μΉ˜, font.css의 경둜, 파일λͺ…, λΉŒλ“œ μΊμ‹œ μ‚­μ œ λ“± λ‹€μ–‘ν•œ 방법을 μ‹œλ„ν–ˆμ§€λ§Œ,

λ¬Έμ œλŠ” μ—¬μ „νžˆ ν•΄κ²°λ˜μ§€ μ•Šμ•˜κ³ ..😒

μ œκ°€ μž‘μ„±ν•œ Webpack μ„€μ • μžμ²΄μ— λ¬Έμ œκ°€ μžˆλŠ” 것이 μ•„λ‹Œκ°€ μ˜μ‹¬ν•˜κ²Œ λμŠ΅λ‹ˆλ‹€.

 

Webpack μ„€μ • 점검: file-loaderλŠ” 잘 λ“±λ‘ν–ˆλŠ”λ°...

μ—λŸ¬κ°€ λ°œμƒν•œ 이유λ₯Ό μ°ΎκΈ° μœ„ν•΄ webpack.config.js νŒŒμΌμ—μ„œ 파일 λ‘œλ” 섀정을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

file-loaderλ₯Ό μ•„λž˜μ™€ 같이 μ„€μ •ν•΄λ‘μ—ˆκΈ°μ—, λ¬Έμ œκ°€ 없을 것이라고 μƒκ°ν–ˆμ—ˆμ£ ..! 

{
  test: /\.(png|jpe?g|gif|webp)$/i,
  use: [
    {
      loader: "file-loader",
      options: {
        name: "[path][name].[ext]",
      },
    },
  ],
}

 

그렇기에 이 μ„€μ •μ—λŠ” μ•„λ¬΄λŸ° λ¬Έμ œκ°€ μ—†λ‹€κ³  νŒλ‹¨ν–ˆκ³ , μ™œ 이런 λ¬Έμ œκ°€ λ°œμƒν•˜λŠ”μ§€ λ„μ €νžˆ 이해가 λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

 

μ—‰λš±ν•œ κ³ λ―Ό: MSWκ°€ λ¬Έμ œμΈκ°€?

이쯀 λ˜λ‹ˆ MSW(Mocking Service Worker)κ°€ 폰트 파일쑰차 κ°€λ‘œμ±„λŠ” 것이 μ•„λ‹Œκ°€ ν•˜λŠ” μ—‰λš±ν•œ μƒκ°κΉŒμ§€ ν•˜κ²Œ λ˜μ—ˆμ–΄μš”..!

MSWλŠ” λ°±μ—”λ“œκ°€ κ΅¬μΆ•λ˜κΈ° 전에 ν”„λ‘ νŠΈμ—”λ“œ UI κ°œλ°œμ„ μœ„ν•΄ μ‚¬μš© μ€‘μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 곡식 λ¬Έμ„œλ₯Ό 읽어본 κ²°κ³Ό, MSWλŠ” 정적 λ¦¬μ†ŒμŠ€(예: 폰트 파일)μ—λŠ” 영ν–₯을 μ£Όμ§€ μ•ŠλŠ”λ‹€λŠ” 것을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

MSWκ°€ 폰트 파일 μš”μ²­μ„ κ°€λ‘œμ±„μ§€ μ•ŠλŠ” ν•œ, 이 λ¬Έμ œλŠ” MSW와 관련이 없을 κ°€λŠ₯성이 λ†’μ•˜μŠ΅λ‹ˆλ‹€.

 

μ§„μ§œ 문제: Webpack 버전 차이

고민을 κ±°λ“­ν•˜λ˜ 쀑, ν˜Ήμ‹œ λ‚΄κ°€ μ•Œκ³  있던 Webpack μ„€μ •κ³Ό ν˜„μž¬ μ‚¬μš©ν•˜λŠ” 버전 간에 차이가 μžˆλŠ” 것은 μ•„λ‹κΉŒ ν•˜λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

이 생각이 λ°”λ‘œ μ •λ‹΅μ΄μ—ˆμ£ !!!  ᕦ( α› )α•‘

 

곡식 λ¬Έμ„œλ₯Ό 잘 λ΄μ•Όν•΄μš”!!

 

Webpack 5μ—μ„œλŠ” 파일 λ‘œλ” 섀정이 κ°„μ†Œν™”λ˜μ—ˆκ³ , 더 이상 file-loaderλ₯Ό μ‚¬μš©ν•  ν•„μš”κ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

Webpack 5μ—μ„œλŠ” λ‹€μŒκ³Ό 같이 μ„€μ •ν•©λ‹ˆλ‹€:

{
  test: /\.(jpg|jpeg|gif|png|svg|eot|woff|ttf)$/i,
  type: "asset/resource",
}

 

Webpack 5μ—μ„œλŠ” file-loader와 url-loader등을 더 이상 μ‚¬μš©ν•˜μ§€ μ•Šκ³ , asset/resource, asset/inline, 그리고 asset을 톡해 νŒŒμΌμ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

  • asset/resource: λ³„λ„μ˜ νŒŒμΌμ„ 내보내고 URL을 λ°˜ν™˜ν•©λ‹ˆλ‹€. (file-loader λŒ€μ²΄)
  • asset/inline: 데이터 URL둜 내보내기 (url-loader λŒ€μ²΄)
  • asset: μžλ™μœΌλ‘œ 데이터 URLκ³Ό 파일 내보내기 쀑 μ„ νƒν•˜λ©°, 기쑴의 크기 μ œν•œ 섀정도 ν¬ν•¨λ©λ‹ˆλ‹€.

더 μžμ„Έν•œ λ‚΄μš©μ€ μ°Έκ³ ν–ˆλ˜ Webpack κ³΅μ‹ λ¬Έμ„œ 링크λ₯Ό λ‚¨κ²¨λ‘˜κ²Œμš”!!

 

ν•™μŠ΅ 방식에 λŒ€ν•œ λ°˜μ„±, 그리고 μ•žμœΌλ‘œμ˜ κ³„νš

이전에 TOAST Editorκ°€ React 17 λ²„μ „κΉŒμ§€λ§Œ μ§€μ›λœλ‹€λŠ” 이슈λ₯Ό κ²ͺμ—ˆλ˜ 적이 μžˆμŠ΅λ‹ˆλ‹€.

λΆ€λ„λŸ½μ§€λ§Œ κ·Έλ•Œλ„ 이전 μ§€μ‹μ—λ§Œ μ˜μ‘΄ν–ˆλ˜ 탓에, μ‚¬μš©λœ 기술 μŠ€νƒμ— λŒ€ν•΄ μΆ©λΆ„νžˆ κ²€ν† ν•˜μ§€ μ•Šμ•˜λ˜ κ²½ν—˜μ΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

이번 Webpack μ„€μ • 문제λ₯Ό κ²ͺμœΌλ©΄μ„œ, λ‹€μ‹œ ν•œ 번 μ €μ˜ ν•™μŠ΅ 방식에 λŒ€ν•΄ λŒμ•„λ³΄κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€..!

Webpack 버전을 올린 후에도 λ‹€λ₯Έ μž‘μ—…μ— κΈ‰κΈ‰ν•΄ μ€‘μš”ν•œ λ³€ν™”λ₯Ό 미처 ν™•μΈν•˜μ§€ μ•Šμ•˜λ˜ 것이 μ›μΈμ΄μ—ˆμœΌλ‹ˆκΉŒμš”.

 

Allini ν”„λ‘œμ νŠΈλŠ” νŒ€μ›λ“€μ˜ νšŒμ‚¬ μ—…λ¬΄λ‘œ 인해 μž μ‹œ μ€‘λ‹¨λ˜μ—ˆμ—ˆμ§€λ§Œ, λ‹€μ‹œ μ‹œμž‘ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

ν˜„μž¬λŠ” λ””μžμ΄λ„ˆλ‹˜μ΄ μš”μ²­ν•œ μˆ˜μ •λœ UIλ₯Ό λΉ λ₯΄κ²Œ μ μš©ν•˜λŠ” 것이 μš°μ„ μˆœμœ„κ°€ λ†’λ‹€κ³  νŒλ‹¨ν•˜μ—¬, 이 λΆ€λΆ„λΆ€ν„° μž‘μ—…μ„ μ§„ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 

그렇기에 Webpack 5 버전에 맞좘 전체적인 μ„€μ • μˆ˜μ •μ€ ν”„λ‘œμ νŠΈκ°€ μ™„μ„±λœ 후에 μ§„ν–‰ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.

μš°μ„ μ€ ν”„λ‘œμ νŠΈμ˜ 완성도λ₯Ό λ†’μ΄λŠ” 데 μ§‘μ€‘ν•˜κ³ , μž‘μ—… 쀑 λ°œμƒν•˜λŠ” λ¬Έμ œλ“€μ€ ν•˜λ‚˜μ”© ν•΄κ²°ν•΄ λ‚˜κ°ˆ κ³„νšμž…λ‹ˆλ‹€.

 

ν”„λ‘œμ νŠΈκ°€ 마무리되면, CSS νŒŒμΌμ„ κ°œλ³„μ μœΌλ‘œ μΆ”μΆœν•˜κΈ° μœ„ν•œ MiniCssExtractPlugin λ“±μ˜ λ¦¬νŒ©ν† λ§λ„ μ§„ν–‰ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.

이 κ³Όμ •μ—μ„œ μž‘μ„±λœ μ΅œμ’… μ½”λ“œλ„ λ‚˜μ€‘μ— λΈ”λ‘œκ·Έμ— κ³΅μœ ν•  μ˜ˆμ •μ΄λ‹ˆ, κΈ°λŒ€ν•΄ μ£Όμ„Έμš”! πŸ’ͺ

 

πŸ“ƒ μ°Έκ³  λ¬Έν—Œ  
Webpack Asset Modules κ³΅μ‹λ¬Έμ„œ 원문
Webpack Asset Modules κ³΅μ‹λ¬Έμ„œ λ²ˆμ—­

 

+ Recent posts