Skip to content

关于js编译器的选择(tsc/vite/rollup/esbuild/swc) #57

@ryanroe

Description

@ryanroe

由于我们的需求比较特殊,所以在这些编译器/打包器当中挑一个合适的作为js编译的后端就变成了一件比较困难的事,这里记录一下每个编译器的情况,包括能满足的部分以及坑。为后续提供查询支持

TSC

  • 装饰器支持:内建
  • import.meta:??
  • 天然适合typescript,但是编译成mjs的话,import/export语句中不会帮忙带上.mjs后缀,不符合nodejs标准,需要使用tsc的插件(Compiler API)来手工加入

vite

  • 装饰器支持:使用插件
  • import.meta: 内建
  • 当前正在使用的js编译后端
  • 适合打包前端项目
  • 会使用process.stdout.write污染控制台,需要hook入口,更改node_modules下的源码达到过滤的目的
  • 后端使用rollup,所以rollup有的问题,他也有

Rollup

esbuild

  • 装饰器支持:不支持
  • import.meta: 不支持
  • 速度极快

swc

  • 装饰器支持:内建
  • import.meta: 内建
  • 速度极快
  • 插件使用Visitor API, 是否拿到路径等上下文信息?
  • 打包(spack)只有cli,没有api支持

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions