V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
viarotel
V2EX  ›  分享创造

Cleants:开历史的倒车,但至少我是认真的

  •  
  •   viarotel · 21 小时 33 分钟前 · 1246 次点击

    cleants-banner.webp Cleants 帮助你做一件勇敢的事情——逆行在技术的高速公路上。如果你厌倦了过度复杂化的开发,渴望回归简洁的 JavaScript 世界,那么 Cleants 就是为你准备的工具。它可以让你在现代 TypeScript 项目中时光倒流,回到更简洁、更直接的 JavaScript 。

    什么是 Cleants ?

    Cleants 代表“Clean TypeScript to JavaScript conversion”,是一款快速将 TypeScript 转换为 JavaScript 的工具。它不仅支持 Vue 项目,还提供插件系统扩展功能,并保持极致的转换速度。

    主要特点

    • Vue 优先:专为 Vue 项目优化。
    • 极简命令:只需一条命令即可完成转换。
    • 进度反馈:实时查看转换状态。
    • 灵活配置:支持外部配置文件与插件系统。

    为什么选择 Cleants ?

    1. 速度快:使用 ts.transpileModule 编译,飞快地完成转换。
    2. 简单易维护:移除复杂的类型系统,让项目更轻量化。
    3. 零学习曲线:如果你会 JavaScript ,那就已经会用 Cleants 了。

    如何使用 Cleants ?

    CLI

    只需运行以下命令:

    npx cleants
    

    编程接口

    如果你想在项目中集成 Cleants ,可以这样用:

    import { Cleants } from 'cleants'
    const cleaner = new Cleants('输入目录', '输出目录', options)
    await cleaner.run()
    

    API

    Cleants

    这个类是 Cleants 的核心,负责将 TypeScript 转换为 JavaScript 。

    constructor(inputDir: string, outputDir: string, options?: CleantsOptions)
    
    可选参数
    • **compilerOptions**:TypeScript 编译选项,默认为 {}
    • **ignoredCopyPatterns**:忽略复制的文件,默认为 ['node_modules', '.git', 'dist', /\.d\.ts$/]
    • **removeDependencies**:移除依赖,默认为 ['typescript', 'vue-tsc']
    • **replaceInternalImports**:是否替换内部导入,默认为 true

    结语

    Cleants 让你在纷繁复杂的现代技术栈中“刹一脚”,回归到简单、直接的 JavaScript 开发方式。无论你是追求速度、简洁,还是只是想嘲笑一下自己“开历史的倒车”,Cleants 都是不错的选择,哈哈。

    想了解更多,请访问项目地址:Cleants GitHub.

    23 条回复    2024-10-18 15:31:44 +08:00
    GeekGao
        1
    GeekGao  
       21 小时 17 分钟前   ❤️ 2
    我突然笑出声了。 但不是在嘲笑 OP ,就是发自内心的笑出声
    coolfan
        2
    coolfan  
       21 小时 16 分钟前
    zhlxsh
        3
    zhlxsh  
       21 小时 1 分钟前 via iPhone
    利好前端
    chairuosen
        4
    chairuosen  
       20 小时 59 分钟前
    搞个大新闻
    foolishcrab
        5
    foolishcrab  
       20 小时 56 分钟前 via iPhone
    去 ts 又不是什么小众选择,特别框架类项目 jsdoc 比 ts 好太多了。
    有些人在这里阴阳怪气殊不知自己井底之蛙。
    还是要多学习一个,或者上推跟 dhh 吵两句
    majula
        6
    majula  
       20 小时 54 分钟前
    还在用 Vue 、JavaScript 和 NPM ,不够开倒车

    我上家公司(某传统行业 500 强,算是半个科技巨头)做的前端,页面是纯手撸的静态 HTML+CSS ,有返回动态数据的都是后端用 Perl 脚本拼接的 HTML ,然后走 FastCGI 传回前端。接受用户输入也全靠表单,完全不用 JavaScript

    更重要的是,我查看了一下代码的提交记录,都是近两年写的,并非远古遗留的代码
    nagisaushio
        7
    nagisaushio  
       20 小时 44 分钟前
    你还真别说,前阵子在 HN 看到一个项目 ts-blank-space ,实现了一个快速的 ts -> js 的编译器。它通过把 ts 的类型替换成等长的空格,将 ts 源码转成 js ,这样同时还有一个好处,即报错的行列位和 ts 源码是对的上的。

    https://bloomberg.github.io/ts-blank-space/

    https://news.ycombinator.com/item?id=41601250
    viarotel
        8
    viarotel  
    OP
       19 小时 59 分钟前 via iPhone
    @GeekGao ts 确实牛 B ,也可以说我菜,但我就是不喜欢 ts
    viarotel
        9
    viarotel  
    OP
       19 小时 58 分钟前 via iPhone
    @nagisaushio 有意思的项目,我后续研究一下,感谢分享
    viarotel
        10
    viarotel  
    OP
       19 小时 57 分钟前 via iPhone
    @majula 哈哈,一山更比一山高,能解决问题,就是好架构
    viarotel
        11
    viarotel  
    OP
       19 小时 56 分钟前 via iPhone
    @foolishcrab 感谢支持⬆️
    viarotel
        12
    viarotel  
    OP
       19 小时 53 分钟前 via iPhone
    @zhlxsh 有用就行,我自己是真不喜欢 ts ,感觉现在是个项目都要上 ts ,也不知道真能提高开发效率还是炫技呢
    viarotel
        13
    viarotel  
    OP
       19 小时 52 分钟前 via iPhone
    @chairuosen 连个浪花都没得
    viarotel
        14
    viarotel  
    OP
       19 小时 52 分钟前 via iPhone
    @coolfan 🍺
    GeekGao
        15
    GeekGao  
       19 小时 45 分钟前
    @viarotel 我也不喜欢 ts
    kk2syc
        16
    kk2syc  
       19 小时 38 分钟前
    @majula 传统行业更明白技术稳定的重要性,只有互联网的那些“自以为是”的 PPT 人会不断讨论所谓的“赛道”,发明一个又一个可笑的名词。<参考影视飓风被下架的视频,因为 tim 说了实话,影响 PPT 二极管们给投资人洗脑,被集体下架>
    nomagick
        17
    nomagick  
       19 小时 19 分钟前
    。。。缓慢打出一个问号 ❓
    sankooc
        18
    sankooc  
       6 小时 33 分钟前
    @viarotel 你不是一个人 我也不喜欢 TS
    shunia
        19
    shunia  
       5 小时 48 分钟前   ❤️ 2
    用 ts 有什么炫技的成分在?不是很懂。
    那对比 html 、jQuery ,用 vue 是不是炫技?
    对比下载三方库直接引入 html ,使用 node_modules 是不是炫技?

    一项技术而已,你可以选择学不学,用不用。
    但是质疑一个基本原理,认为 ts 不能提高效率,甚至觉得是炫技,有点无厘头。

    ts 有降低效率的时候,那就是你要设计非常复杂的类型系统的时候.
    但是同时可以参考: https://github.com/Effect-TS/effect ,它编写了及其复杂的类型系统,但是产品提供的特性却恰好相反,可以让用户在使用的时候简化心智负担。
    shunia
        20
    shunia  
       5 小时 47 分钟前
    @shunia #19 错字啥的有点多,系统输入法就这样,凑合看吧。
    viarotel
        21
    viarotel  
    OP
       3 小时 10 分钟前 via iPhone
    @shunia 你说的没有一点问题,我没有质疑 ts 带来的价值,也许我的描述有些过激,我只是觉得并不是所有的项目或情况都适合使用它,特别是团队人员水平参差不齐的情况下,也不是所有人都能进大厂,总有些挣扎在温饱线上的打工人,他们不在乎代码写的好不好,规不规范,他们只想早点下班,萝卜青菜各有所爱,不是吗?
    shunia
        22
    shunia  
       1 小时 26 分钟前
    @viarotel #21 我没有在争论的意思,你的分享也是一种创造,我给你点赞,这点请先理解。

    但是我觉得你说的那句话有误导的成分,所以我才比较严肃的提出问题。

    最后你 21L 的回复我觉得有点走的更偏了。

    首先用不用 ts 和大厂毫无关系,因为我一路走过来都是小厂,团队里面也参差不齐,大家也都需要温饱,也有人写代码不遵循规范,但是没有人质疑过 ts 。什么东西好什么东西不好,这是作为一个专业人员的基本素养。和电工一摸电线就知道有没有电一样😂

    其次大家都想早点下班,就我的经验来看,同样的代码用 ts 写绝对比用 js 写,能让我早下班。不管是我写的还是别人写的:

    比如 react 的源代码是用 js 写的,我想搞清楚它其中的一部分代码的运行原理,就一定比同样用 ts 写出来的慢。原因很简单,不管是谁,写 js 代码的时候,都不可避免的会上各种黑魔法,尤其是往任何变量上直接附加额外的数据或者逻辑,甚至是改变原有的指向,而且喜欢隐藏在角落里。我最近用过的几个 js 写的库,我都看过了,全都藏着这种黑魔法,想看懂这种代码,一定会耗费更多的精力,因为天知道这坨东西在哪里被覆盖或者重定向了。ts 也不能解决这个问题,但是在遵循规范的前提下,黑魔法是相比 js 写的要更少的。

    包括我自己写一些东西,如果用 js 我就会忍不住上魔法,因为确实写起来更爽利。但是对读者和接手的人就及其不友好了。

    ts 是前端无数轮子也好、创新也好,我用过的技术种类里,最少操心而且带来最大收益的一个了。日常用下来真的省心又省事,更新了这么多年也没有像 react 一样开倒车,也没有像 vue 一样弄出无法平滑迁移的大版本,更没有像 angular 一样不思进取。

    - 学习成本足够低,还支持渐进式引入
    - 几乎全工具链完美支持,甚至新开的各种 runtime 都在默认支持
    - 一本 handbook 能解决日常遇到的绝大部分问题
    - 态度也很好,可以各大 bundler 协调主动调整 compilerOptions
    - 真正的商业级的官方支持

    这么优秀的工具,我个人觉得所有 js 人都值得拥有。
    viarotel
        23
    viarotel  
    OP
       1 小时 0 分钟前
    @shunia #22 非常感谢你深度的理解和刨析,我虽然在上述描述中表达我不喜欢 TS ,但是我确实在相当长的时间内去理解和学习了 TS ,但是有一点不会改变,我不喜欢 TS 啰里啰唆的类型体操,这确实是我个人喜好问题,但是我不会阻止别人使用它,我只是提供一个回退选项,仅此而已;最后,即使不喜欢,我仍然会在需要 TS 的场景下的时候使用它;最后的最后,再次感谢你,让我更有 “勇气” 去使用 TS ,哈哈😁
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5355 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:32 · PVG 16:32 · LAX 01:32 · JFK 04:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.