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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions