跳至內容
部落格
介紹 SWC 1.0

介紹 SWC 1.0

2019 年 2 月 8 日作者:DongYoon Kang

SWC 是什麼?

swc(在新分頁中開啟)(快速的網路編譯器)是一個超級快速的 JavaScript 編譯器。

SWC 能做什麼?

它可以將 TypeScript / jsx / ECMAScript 2019 轉譯成瀏覽器相容的 JavaScript。

// input.js
 
class Foo {
  set foo(v) {}
}
class Bar extends Foo {
  get bar1() {}
  async bar2() {}
}

SWC 有多快?

即使在單核心同步基準測試中,它的速度也比 babel 快 16 到 20 倍。請注意,實際效能差距更大,因為 swc 在工作執行緒上執行,而 babel 則在事件迴圈執行緒上執行。

安裝

你可以使用下列指令安裝 swc

# if you use npm
npm i -D @swc/core
 
# if you use yarn
yarn add -D @swc/core

請參閱 入門 以取得更多詳細資訊。

SWC 1.0 中包含哪些內容?

Swc 實作了幾乎所有 babel 外掛程式。截至 1.0.0,swc 可以理解各種 ecmascript 方言,並將它們編譯成 es5。

ECMAScript 2019 支援

.swcrc:

{
  "jsc": {
    "parser": {
      "syntax": "ecmascript"
    }
  }
}

React(含 jsx)

.swcrc:

{
  "jsc": {
    "parser": {
      "syntax": "ecmascript",
      "jsx": true
    }
  }
}

TypeScript 支援

Swc 也可以將 typescript / tsx 編譯成 ecmascript。請注意,在撰寫本文時,它不會進行類型檢查。類型檢查追蹤於 #126(在新分頁中開啟)

.swcrc:

{
  "jsc": {
    "parser": {
      "syntax": "typescript",
      "tsx": false
    }
  }
}

請參閱 文件 以取得更多詳細資訊。

各種轉換

  • es3

    • 成員表達式文字
    • 屬性文字
    • 保留字
  • es2015

    • 箭頭函式
    • 區塊作用函式
    • 區塊作用範圍
    • 類別
    • 計算屬性
    • 解構
    • 重複鍵
    • for-of
    • 函式名稱
    • instanceof
    • 文字
    • new-target
    • 參數
    • 速記屬性
    • 擴散
    • 黏著正規表示式 (y 旗標)
    • 樣板文字
    • typeof-symbol
  • es2016

    • 指數運算子
  • es2017

    • 非同步轉產生器
  • es2018

    • 物件 rest 擴散
  • react

    • jsx

從 Babel 遷移

@babel/core

執行 npm i --save-dev @swc/coreyarn add --dev @swc/core

Swc 預設啟用所有傳遞。因此,如果您只使用標準 ecmascript,您只要刪除 .babelrc 並將 babel.transform() 變更為 swc.transform() 即可。

請參閱 使用說明移轉說明 以取得更多詳細資料。另請注意,swc 尚未支援自訂外掛。

@babel/cli

執行 npm i --save-dev @swc/core @swc/cliyarn add --dev @swc/core @swc/cli 以安裝。 @swc/cli 的 CLI API 幾乎等同於 @babel/cli。因此,如果您使用標準 ecmascript,您只要將 npx babel 替換為 npx swc 即可。如果這會導致錯誤,請 回報錯誤(在新分頁開啟)

請參閱 使用說明移轉說明 以取得更多詳細資料。另請注意,swc 尚未支援自訂外掛。