swc

SWC

Rust-based platform for the WEB

์›น์„ ์œ„ํ•œ Rust ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ

  • ์ฐจ์„ธ๋Œ€ ๊ณ ์† ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ Rust ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ

  • Speedy Web Compiler์˜ ์•ฝ์ž์ด๋ฉฐ ์†๋„๋ฅผ ๋ฌด๊ธฐ๋กœ ๋งŽ์€ ๋„๊ตฌ์™€ ํšŒ์‚ฌ์— ํผ์ ธ๋‚˜๊ฐ€๊ณ  ์žˆ์Œ

  • SWC๋Š” ์ปดํŒŒ์ผ๊ณผ ๋ฒˆ๋“ค๋ง ๋ชจ๋‘ ํฌํ•จํ•จ

    • ํ˜„์žฌ๋Š” ์ปดํŒŒ์ผ์— ์ฃผ๋กœ ์‚ฌ์šฉ

    • ๋ฒˆ๋“ค๋ง์€ ์•„์ง ๊ฐœ๋ฐœ์ค‘

    • Terser์˜ ์—ญํ• ๋„ ํ•จ

    • ์ฆ‰, Babel๊ณผ Terser ๋Œ€์‹  ์‚ฌ์šฉ

  • ์•„์ง ๊ธฐ์กด ์—ญํ• ์„ ๋Œ€์ฒดํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ถ€๋ถ„์ด ์กด์žฌ(์•ˆ์ •์„ฑ ๋ถ€์กฑ)ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ

  • ์ปดํŒŒ์ผ์˜ ๊ฒฝ์šฐ ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ/ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๊ฐ€์ ธ์™€ ๋ชจ๋“  ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›๋˜๋Š” ์œ ํšจํ•œ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅ

  • Babel๊ณผ Terser ๋Œ€์‹  ์‚ฌ์šฉํ•ด ์†๋„ ๊ฐœ์„ ์— ์‚ฌ์šฉ๋˜์–ด ์ธ๊ธฐ๊ฐ€ ๋งŽ์Œ

๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ ์†๋„๋Š” ๋”์šฑ๋” ์ค‘์š”ํ•ด์ง„๋‹ค.

Babel๊ณผ Terser ๋Œ€์ฒด

  • @bable/preset-env์™€ browserlist๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •ํ•œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์œผ๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผ๋งํ•˜๊ฒŒ ๋˜๋Š”๋ฐ swc๋Š” ์•„๋ž˜ ์„ค์ •์„ ํ†ตํ•ด ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๊ฐ€์งˆ์ˆ˜ ์žˆ๋‹ค.

  • ๋™์ผํ•˜๊ฒŒ swrrc์— ์„ค์ •๋งŒ์œผ๋กœ terser์™€ ๊ฐ™์€ ๋™์ž‘ ๊ฐ€๋Šฅ

// .swrrc
{
  "$schema": "http://json.schemastore.org/swrrc",
  "module": {
    "type": "commonjs",
  },
  "env": {
    "targets": "last 1 Chrome version" // browserlist ๋ฌธ๋ฒ•
  },
  // terser์™€ ๋น„์Šทํ•œ ๋™์ž‘
  "minify": true, 
  "jsc": {
    "minify": {
      "compress": true,
      "mangle": true,
    }
  }
}
"scripts": {
  "build": "swc src --out-dir dist",
}

Last updated