跳至正文
Wener Notes

swc

约 1 分钟阅读
bash
pnpm i -D @swc/cli @swc/core

pnpm swc ./src/main.ts -o ./dist/main.js

# swc + esbuild/tsx - 支持 emitDecoratorMetadata, 利用 esbuild 的 bundle 能力
pnpm swc ./src/ -d ./dist/out
pnpm tsx ./dist/out/main.ts
依赖包

swcrc

json
{
  "$schema": "https://json.schemastore.org/swcrc",
  "jsc": {
    "parser": {
      "syntax": "ecmascript",
      "jsx": false,
      "dynamicImport": false,
      "privateMethod": false,
      "functionBind": false,
      "exportDefaultFrom": false,
      "exportNamespaceFrom": false,
      "decorators": false,
      "decoratorsBeforeExport": false,
      "topLevelAwait": false,
      "importMeta": false
    },
    "transform": null,
    "target": "es5",
    "loose": false,
    "externalHelpers": false,
    // Requires v1.2.50 or upper and requires target to be es2016 or upper.
    "keepClassNames": false
  },
  "minify": false,
  // 依赖 browserslist
  "env": {
    "targets": {
      "chrome": "79"
    },
    "mode": "entry",
    "coreJs": "3.22"
  }
}

Plugins

FAQ

keepImportAssertions

file extension

swc vs esbuild

  • esbuild
    • production ready
    • 不能 bundle systemjs,amd
    • 不支持 emitDecoratorMetadata
  • swc
    • compiler 功能完备
    • 能 bundle 更多格式

strip-leading-paths

bash
# dist/src -> dist
npx swc ./src -d dist --strip-leading-paths

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • Web Dev FAQ
    笔记 · swc

    | abbr. | stand for | · | iife | Immediately Invoked Function Expression | · 在开发时 assert 错误 · invariant · 早期来自 React, flux

站内链接

  • Bundle FAQ
    笔记 · js extension · js extension

    有些场景需要 esm import 包含后缀,目前 esbuild 不好添加 · 可以考虑 rollup · esbuild#2435 · SWC - 不支持 · Output mjs file extension swc#3067 · swc#5346

参考资料

GitHub9 条
其他外链6 条
最近更新commit 359377d编辑