代码生成-从 module css 生成 dts 前言代码生成对于很多开发者都不是陌生的概念,从使用脚手架(create-react-app)生成项目,到使用 ide 生成代码、或是从后端 api schema 生成代码,几乎不可能避免使用它。它可以解决各种各样的问题 从同一个来源生成项目,避免千人千面的项目整体结构 减少编写样板代码 避免在多个地方重复编写代码导致的不一致性 但在使用 TypeScript 时,它还可以做到一些其他有趣的事情
vite-不仅仅是一个构建工具 自 vite 发布第一个版本(2020-04)以来,已经过去了两年,最近它发布了 3.0,不过没有太多 break change 的变化。或许有人已经在使用它了,但也有许多人看到是 vue 作者创建的工具就绕道走过去,因为 vue 生态里的工具历来是 vue 锁定,无法在其他生态中使用,像是 vuex/pinia 之类的,而 redux/mobx 却可以在 vue 中使用。尽管 vite 1.0
代码生成-从环境变量生成类型定义 前言既之前的 代码生成-从 module css 生成 dts 之后,这篇来实现从环境变量生成接口,便于开发时能够有正确的类型提示。 动机在前端日常开发中,环境变量经常用于区分不同环境的配置,最常见的像是服务端地址。但在使用时,往往不能得到提示,或是一个环境变量没有。 我们通常使用以下两种方式访问环境变量 在 vite 中使用 import.meta.env 1import.meta.env.NO
代码生成-从 i18n config 生成类型定义 场景吾辈有一些项目需要使用 i18next 来处理国际化,但是使用 typescript 需要有类型定义,所以之前在 joplin-utils 项目中维护和使用。昨天做了很多重构,现在已经分离出来并作为公共 npm 包发布。如果有人感兴趣,可以尝试一下。 GitHub 简介i18next 的 typescript 类型定义生成器,可以从多个语言翻译 json 文件中生成类型定义,支持嵌套对象与
闲谈网站的 Google 索引问题 场景从今年 2 月份以来,吾辈创建了一个 魔法少女小圆-飞向星空 同人小说翻译的 GitHub 项目,并一直维护至今。最初,这个项目只是将目前几位作者的翻译打包为 epub 以便在手机和电子阅读器上阅读,同时避免国内网站删除、下架或不再维护网站而创建存档。后来,也使用工具从 markdown 中生成了网站。 魔法少女小圆-飞向星空 的作品简介在经历了几个世纪的动荡之后,一个乌托邦式的 AI— 人
JavaScript ESM 很好,但它现在也许没那么好 前言可能许多前端开发者都知道,自从去年 sindresorhus 发表 esm only 的宣言 一年多以来,许多项目开始转向了 esm only,即仅支持 esm 而不支持 cjs,以此来迫使整个生态更快的迁移到 esm only。 一些流行的项目已经这样做了 sindresorhus 维护的上千个 npm 包 node-fetch remark 系列 更多。。。 它们声称:你可以仍然使用现
vue3 使用有感 假若没有看见光明,我本可以忍受黑暗。 场景自上家公司从去年 5 月份开始成功推广 react 之后,很长一段时间吾辈一直在使用它,而今年,离职之后新的公司再次使用 vue3,因而见证了两个 team 踏入了同一条河流。不过 vue 作者说 vue3 使用 ts 重写,对其支持很好,吾辈姑且安心了一点,但经过近一个月的实践,吾辈还是发现了种种问题。 从 vue 迁移到 react 的原因参考:
编写兼容 nodejs/浏览器的库 问题兼容问题是由于使用了平台特定的功能导致,会导致下面几种情况 不同的模块化规范:rollup 打包时指定 平台限定的代码:例如包含不同平台的适配代码 平台限定的依赖:例如在 nodejs 需要填充 fetch/FormData 平台限定的类型定义:例如浏览器中的 Blob 和 nodejs 中的 Buffer 不同的模块化规范这是很常见的一件事,现在就已经有包括 cjs/amd/iife/u
基于 nodejs 的热更新 http 开发服务器 场景之前一直在使用 http-server 作为本地快速启动静态 http 服务器的命令行工具,然而直到今天,吾辈实在难以忍受其在修改完 HTML 文件后,http-server 不会自动刷新浏览器重新渲染页面,而是需要手动刷新才行,真的是不厌其烦,所以吾辈开始找更好的工具。 注:http-server 其实也已经热更新到内存中了,只不过不会触发浏览器刷新页面。 期望 零配置使用 修改文件
使用 jscodeshift 做重构 场景最近迁移了一些 API,因为所有前端项目都在同一个 monorepo 中,所以作为 lib 维护者吾辈还需要帮助迁移其他使用的模块。由于项目数量较多(大约有 30 多个),手动迁移非常麻烦而且难以测试。所以在调研了一些现有的大规模重构的方法后,吾辈选择了 jscodeshift 作为主要工具来做自动化迁移。那么,它相比于使用 ide 的重构功能、使用字符串搜索替换亦或是手工一个个替换有什么不同
新视点 这周请了 5 天的年假,回去了一趟老家,虽然很多事物没有什么变化,但认知世界的眼睛发生了变化,便看到了一些不曾留意过的东西。 そら 用树叶吹出来的声音,和吾辈想象中的差别有一点点大 ಡ ͜ ʖ ಡ 声音: https://1drv.ms/u/s!AqTwKbfzs-vyiocZXo9hbDbp7h7P2g 魔幻现实,退林返耕(小时候玩的空地前几年被挖了个大坑(卖地),现在居然种上农作物
立个 Flag,今年入坑 Kigurumi 并出一次漫展 简介 Kigurumi 是什么?能吃么? 是一种 cosplay 服装扮演,不能吃谢谢。 借用 Wiki 中的描述:“人偶扮演(着ぐるみ Kigurumi ?),是一种透过穿着类似 吉祥物服装的全身套装以在现实世界中达成还原卡通或动漫人物的 cosplay 形式。和 cosplay 不一样的是,表演者的脸会被 面具完整的包住,所穿着的服装也会掩盖住全身,借此表演者得以完全隐藏自己原本的身份,完全