Neoclassical Programming Multitude
    Have ideas to improve npm?Join in the discussion! »

    tsterser
    TypeScript icon, indicating that this package has built-in type declarations

    5.0.10 • Public • Published

    TypeSript-Terser

    TS-Terser Fork自terser,从原来的Javascript实现修改为Typescript实现。

    项目背景

    Terser/Uglifyjs 是前端领域广泛使用的代码压缩工具,但其在代码量较大时,性能表现不佳。

    从理论上来说,Terser/Uglifyjs在做的事情是CPU密集型任务,如果使用性能较好的语言(如C/C++、Rust)重写,应能获得不错的性能提升。

    但是重写的风险与工作量较大,难以把控,我更倾向于翻译的方式。因为C/C++、Rust等均为强类型语言,先将Javascript项目转换成Typescript项目,有助于降低翻译的工作量。

    同时也会产出一份Typescript的项目。

    目前此项目尚处于开发阶段,请勿用于生产环境!

    项目目标

    • 将代码(不包含测试用例)全部转为Typescript语言。
    • 消除Any类型, 并启用严格的类型检查。为切换到强类型语言做准备。

    当前进展

    • 独立发布版本
    • 更新文档
    • 将源码文件修改为TS文件
    • 重构项目代码结构,从原来的一类方法写在一个文件中,改为一个类的所有方法在一个文件中
    • 将AST相关类定义统一,梳理类定义,删除类工厂
    • 将AST相关的类拆分成小文件,每个文件一个类,并解决循环依赖问题
    • 删除 instanceOf / isAst 操作,改为实例方法实现
    • 添加类型信息
    • 启用noImplicitAny等strict校验
    • 消除any类型
    • 添加private/public/protected信息
    • 重构在Rust中无等价对应写法的写法

    使用说明

    使用说明

    贡献指南

    贡献指南

    PS. 关于在此项目上中的复杂批量操作,应使用脚本批量修改,在过程中沉淀相关工具方法。参见: https://github.com/rusterser/transformer/tree/master/src/scripts

    Install

    npm i tsterser

    DownloadsWeekly Downloads

    0

    Version

    5.0.10

    License

    BSD-2-Clause

    Unpacked Size

    3.56 MB

    Total Files

    421

    Last publish

    Collaborators

    • avatar