介绍 SWC 1.0
什么是 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 - member-expression-literals
- property-literals
- reserved-words
 
- 
es2015 - arrow-functions
- block-scoped-functions
- block-scoping
- classes
- computed-properties
- destructuring
- duplicate-keys
- for-of
- function-name
- instanceof
- literals
- new-target
- parameters
- shorthand-properties
- spread
- 粘性正则表达式 (y标志)
- template-literals
- typeof-symbol
 
- 
es2016 - exponentiation-operator
 
- 
es2017 - async-to-generator
 
- 
es2018 - object-rest-spread
 
- 
react - jsx
 
从 Babel 迁移
@babel/core
运行 npm i --save-dev @swc/core 或 yarn add --dev @swc/core。
Swc 默认启用所有传递。因此,如果您只使用标准 ecmascript,您只需删除 .babelrc 并将 babel.transform() 更改为 swc.transform()。
有关更多详细信息,请参阅 用法文档 和 迁移文档。另请注意,swc 尚未支持自定义插件。
@babel/cli
运行 npm i --save-dev @swc/core @swc/cli 或 yarn add --dev @swc/core @swc/cli 进行安装。 @swc/cli 的 CLI API 几乎等同于 @babel/cli 的 CLI API。因此,如果您使用的是标准 ecmascript,您只需将 npx babel 替换为 npx swc。如果出现错误,请 报告错误 (在新标签页中打开)。