Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Make the widget bundle at least 600 bytes smaller (gzipped) without changing behavior

已关闭
#235 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@Saifjafri212213 已经在做这个了。

开始于 2026年10月21日。

  • #292 来自 @Saifjafri212213 —— 已合并

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
重构
描述清晰度
描述清楚
活跃度
活跃
技术栈
typescript, vite

调研方向

Build the widget with pnpm --filter @chatcops/widget build, then run pnpm size and inspect the bundle using npx size-limit --why or source-map-explorer. Focus on markdown.ts, theme.ts, the listed dom files, i18n.ts, styles/widget.css and vite.config.ts; leave the three named files untouched. Done means at least 600 gzipped bytes saved with identical behavior, unchanged unit and browser tests passing, before and after size output in the PR, one-line reasons for changes, and a patch changeset.

由索引模型根据 Issue 内容生成。

描述

enhancement hacktoberfest help wanted widget

The script tag bundle (packages/widget/dist/chatcops.min.js) has to stay under 14 kB gzipped, and CI checks it with pnpm size (limits in .size-limit.json). It's at about 13.5 kB today. The next two releases add a new stream parser and session handling to the widget, which will take most of what's left. This issue frees up room before that.

This is for someone who has had at least 3 PRs merged here. Shaving bytes is easy to overdo, and every change has to keep the widget working exactly the same.

What to do

  • Run pnpm --filter @chatcops/widget build and pnpm size, then look at what's big. npx size-limit --why or source-map-explorer on the build both work.
  • Find savings in markdown.ts, theme.ts, dom/prechat-form.ts, dom/panel.ts, dom/bubble.ts, i18n.ts or styles/widget.css. Typical wins: duplicated helpers, CSS rules nobody uses, long repeated strings, code that vite.config.ts could minify better.
  • Leave api/client.ts, widget.ts and dom/messages.ts alone. I'm rewriting those next month.
  • No new dependencies, no build tool change, and no behavior change. Visible text, class names, CSS custom properties and the public API stay the same.

Acceptance criteria

  • dist/chatcops.min.js is at least 600 bytes smaller gzipped. Put the pnpm size output from before and after in the PR
  • Every unit test and every browser test (pnpm e2e) passes unchanged. Changing a test to make it pass doesn't count
  • Each change has a one-line reason in the PR description
  • Changeset for @chatcops/widget (patch)

Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off dev, and open your PR against dev with Closes #<this issue number>. Setup notes (pnpm, build before test) are in CONTRIBUTING.md.

主要语言
TypeScript
星标
13
派生
7
平均合并
3 小时 41 分钟
30 天内合并 PR
155

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

codercops/chatcops 的其他 Issue

查看 codercops/chatcops 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。