์›น

Browserslist

Browserslist๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…

  • #polyfill
  • #angular
  • #browser
  • #babel

์ด์ „ Angular ํ”„๋กœ์ ํŠธ์—์„œ ๋ฃจํŠธ ํด๋”์— .browserslistrc(์ด์ „์—๋Š” browserslist๋กœ ์•Œ๋ ค์ง)๋ผ๋Š” ์‹ ๋น„ํ•œ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„ ๋™์•ˆ ์ €๋Š” ์ตœ๊ทผ์— ์ œ ๋™๋ฃŒ๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ฒŒ ์•Œ๋ ค์ค„ ๋•Œ๊นŒ์ง€ ์ด ํŒŒ์ผ์„ ๋ฌด์‹œํ•ด ์™”์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€, Nuxt 3.6์œผ๋กœ ์ž‘์„ฑ๋œ ํ˜„์žฌ ๋ธ”๋กœ๊ทธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ €๋Š” ํŽธ๋ฆฌํ•˜๊ฒŒ๋„ ๋ˆˆ๊ฐ์•„์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 WARN  Browserslist: caniuse-lite is outdated. Please run:                           8:11:02 am
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
๋ถ€์ธ ์„ฑ๋ช…

ํ•œ๊ตญ์–ด ์‹ค๋ ฅ์ด ๋ถ€์ ํ•˜์—ฌ ์ด ๊ธ€์ด ๊ตฌ๊ธ€ ๋ฒˆ์—ญ๊ธฐ๋ฅผ ์ฃผ๋กœ ํ™œ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ •ํ™•ํ•œ ๋ฌธ๋ฒ•๊ณผ ์–ดํœ˜๊ฐ€ ์žˆ์„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์  ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฌ๋ฉฐ, ์ถ”ํ›„์— ๋‹ค์‹œ ๊ฒ€ํ† ํ•˜์—ฌ ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์š”์•ฝ

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, Browserslist๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ํŠน์ • ๋Œ€์ƒ ๊ณ ๊ฐ์„ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋„๊ตฌ๋กœ, autoprefixer ๋ฐ babel๊ณผ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์ด์— ๋”ฐ๋ผ ํด๋ฆฌํ•„๊ณผ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋“ฏ์ด ์„ธ์ƒ์—๋Š” ์ˆ˜๋งŽ์€ ์ข…๋ฅ˜์˜ ์ธํ„ฐ๋„ท ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์žˆ๊ณ , ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ฒƒ์€ ๋ฐ”๋กœ Google Chrome์ž…๋‹ˆ๋‹ค. statcounter์˜ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅด๋ฉด ์ด ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์‹œ์žฅ ์ ์œ ์œจ์ด ์•ฝ 68%์— ๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€, ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €์˜ ์—ฌ๋Ÿฌ ๋ฒ„์ „์ด ์—ฌ์ „ํžˆ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ์ค‘์—๋Š” ์ค‘์š”ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์‹ฌ๊ฐํ•˜๊ฒŒ ์˜ค๋ž˜๋œ ๊ฒƒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›น์‚ฌ์ดํŠธ์˜ ๋Œ€์ƒ ๊ณ ๊ฐ์„ ๊ณ ๋ คํ•˜์—ฌ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €์™€ ๋ฒ„์ „์„ ์ง€์›ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

ํˆด์ฒด์ธ

์ตœ์‹  ์›น ํˆด๋ง์€ ์ปดํŒŒ์ผ ๋Œ€์ƒ์„ ์ •ํ•˜๊ธฐ ์œ„ํ•ด browserslist๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Autoprefixer: ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด CSS ์†์„ฑ์— ๊ณต๊ธ‰์—…์ฒด ์ ‘๋‘์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • Babel: ์ตœ์‹  JavaScript๋ฅผ ๋Œ€์ƒ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜๋Š” ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • PostCSS: JavaScript๋กœ CSS๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • Webpack: ๋Œ€์ƒ ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ

.browserslistrc๋ผ๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ ๋‚ด๋ถ€ ๋˜๋Š” package.json ๋‚ด๋ถ€์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ๋ฒ„์ „. ๊ธฐ๋ณธ .browserslistrc ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.browserslist
> 0.5%
last 2 versions
Firefox ESR
not dead

browserslist ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ package.json ๋‚ด๋ถ€์— ์ž‘์„ฑ๋œ ๋™์ผํ•œ ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

package.json
{
  "browserslist": [
    "> 0.5%",
    "last 2 versions",
    "Firefox ESR",
    "not dead"
  ]
}

๊ตฌ๋ฌธ์€ ๋‚œํ•ดํ•˜๊ฒŒ ๋А๊ปด์กŒ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปดํŒŒ์ผ๋  ๋Œ€์ƒ(์ผ๋ช… ์ฟผ๋ฆฌ) ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„์ „์˜ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์šด์˜ ์ฒด์ œ์— ๋Œ€ํ•œ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ๋Š” ์ „์ฒด ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ„์˜ ์งˆ์˜์— ๋Œ€ํ•œ ์„ธ๋ถ€ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ธ€๋กœ๋ฒŒ ์‚ฌ์šฉ ์ ์œ ์œจ์ด 0.5%๋ฅผ ๋„˜๋Š” ๋ธŒ๋ผ์šฐ์ €.
  • ์•Œ๋ ค์ง„ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์˜ ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฒ„์ „.
  • Firefox์˜ ํ˜„์žฌ ํ™•์žฅ ์ง€์› ๋ฆด๋ฆฌ์Šค(ESR).
  • "์ฃฝ์€" ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €(๋” ์ด์ƒ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์ง€ ์•Š์Œ).

์œ„์˜ ์ฟผ๋ฆฌ๋Š” ์‹ค์ œ๋กœ browserslist์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ์ปดํŒŒ์ผ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. defaults ํ‚ค์›Œ๋“œ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

package.json
{
  "browserslist": [
    "defaults"
  ]
}

ํƒ€๊ฒŸ ๊ณ ๊ฐ์ด ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ์™„์ „ํžˆ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋„๊ตฌ๋Š” ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ฅผ ์Šค์Šค๋กœ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค.

์žฅ์ 

Browserslist๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๊ตฌ๋ฌธ์„ ์ด์ „ ๋ฐฉ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์ „ ๋ฒ„์ „์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งค๋„๋Ÿฝ๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ผ๋ฐ˜์ ์ธ ํด๋ฆฌํ•„์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์ „์†กํ•จ์œผ๋กœ์จ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๋„๊ตฌ

์ฐธ๊ณ 

Shared browser compatibility config for popular JavaScript tools like Autoprefixer, Babel, ESLint, PostCSS, and Webpack. Retrieved 2025, January 31 from https://browsersl.ist
Browserslist. Retrieved 2025, January 31 from https://github.com/browserslist/browserslist