swc
约 1 分钟阅读
- swc-project/swcGitHubswc-project/swcswc-project/swc · Speedy Web Compiler · Rust-based platform for the Web · 开发者被 vercel 收编 · 早期定位是 compiler - bundling & minifition not ready笔记:swc
- Speedy Web Compiler
- Rust-based platform for the Web
- 开发者被 vercel 收编
- 早期定位是 compiler - bundling & minifition not ready
- swcpack - bundle
- 开发者现在专注于 Vercel 的 Turbopack,因此 swcpack 开发并不活跃,不推荐使用。
- swc.rs/docs/benchmarks
- 性能上和 esbuild 差距并不大
- 参考
- swc.rs/playground
- swc-project/swc-nodeGitHubswc-project/swc-nodeswc-project/swc · Speedy Web Compiler · Rust-based platform for the Web · 开发者被 vercel 收编 · 早期定位是 compiler - bundling & minifition not ready笔记:swc
- ~ts-node
- 不建议使用
- Cannot find module ts
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.tsswcrc
{
"$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
- swc-project/swc#7923GitHub Issueswc-project/swc#7923
- TypeStrong/ts-node#2056GitHub IssueTypeStrong/ts-node#2056
- swc-project/swc#5616GitHub Issueswc-project/swc#5616
file extension
- js extension笔记Bundle FAQ有些场景需要 esm import 包含后缀,目前 esbuild 不好添加 · 可以考虑 rollup · esbuild#2435 · SWC - 不支持 · Output mjs file extension swc#3067 · swc#5346章节:.js 文件后缀打开:/notes/web/dev/bundle/faq
swc vs esbuild
- esbuild
- production ready
- 不能 bundle systemjs,amd
- 不支持 emitDecoratorMetadata
- swc
- compiler 功能完备
- 能 bundle 更多格式
strip-leading-paths
# 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 条
- dudykr/stcgithub.com/dudykr/stc
- swc-project/pluginsgithub.com/swc-project/plugins
- swc-project/swcgithub.com/swc-project/swc
- swc-project/swc-nodegithub.com/swc-project/swc-node
- swc-project/swc-node#710github.com/swc-project/swc-node/issues/710
- swc-project/swc-node#744github.com/swc-project/swc-node/pull/744
- swc-project/swc#5616github.com/swc-project/swc/issues/5616
- swc-project/swc#7923github.com/swc-project/swc/issues/7923
- TypeStrong/ts-node#2056github.com/TypeStrong/ts-node/issues/2056
其他外链6 条
- kdy1.dev/2022-1-26-porting-tsc-to-gokdy1.dev/2022-1-26-porting-tsc-to-go
- kdy1.dev/2022-10-27-open-sourcing-stckdy1.dev/2022-10-27-open-sourcing-stc
- plugins.swc.rsplugins.swc.rs/
- swc.rs/docs/benchmarksswc.rs/docs/benchmarks
- swc.rs/docs/configuration/swcrcswc.rs/docs/configuration/swcrc
- swc.rs/playgroundswc.rs/playground