这个项目获得了一等奖?参加 Telegram 轻量级客户端竞赛,现在是 web.telegram.org/a 上任何人都可以使用的官方 Telegram 客户端。
根据原来的竞赛规则,它几乎是零依赖,并且完全基于自己的Teact框架(重新实现了React范式)。它还使用 GramJS 的自定义版本作为 MTProto 实现。
该项目融合了许多技术先进的功能、现代 Web API 和技术:WebSockets、Web Workers 和 WebAssembly、多级缓存和 PWA、录音和媒体流、密码学和原始二进制数据操作、乐观和渐进式界面、复杂的 CSS/ Canvas/SVG 动画、反应式数据流等等。
请随意探索、提供反馈和做出贡献。
mv .env.example .env
npm i
在 my.telegram.org 上获取 API ID 和 API 哈希并填充.env
文件。
npm run dev
启动您的开发服务器并在控制台上下文中找到 GramJS Worker。
全局GramJs
变量中可用的所有构造函数和函数。
运行npm run gramjs:tl full
以访问所有可用的 Telegram 请求。
用法示例:
await invoke ( new GramJs . help . GetAppConfig ( ) )
Electron 允许构建可安装在 Windows、macOS 和 Linux 上的本机应用程序。
npm run dev:electron
在开发模式下运行 Electron,同时启动 3 个进程并监视更改:main(主 Electron 进程)、渲染器(FE 代码)和 Webpack for Electron(从 TypeScript 编译主 Electron 进程)。
npm run electron:webpack
Electron 的主要流程代码(包括预加载功能)是用 TypeScript 编写的,并使用webpack-electron.config.js
配置进行编译以生成 JavaScript 代码。
npm run electron:build
准备渲染器(FE代码)构建,编译Electron主流程代码,安装并构建原生依赖项,在打包或发布之前使用。
npm run electron:staging
在dist-electron
文件夹中创建适用于 macOS、Windows 和 Linux 的包,并使用APP_ENV
作为staging
(允许打开 DevTools,包括源映射并且不会缩小构建的 JavaScript 代码),可用于手动分发和测试打包应用程序。
npm run electron:production
在dist-electron
文件夹中创建适用于 macOS、Windows 和 Linux 的包,并将APP_ENV
作为production
(禁用 DevTools,缩小构建的 JavaScript 代码),可用于手动分发和测试打包的应用程序。
npm run deploy:electron
在dist-electron
文件夹中创建适用于 macOS、Windows 和 Linux 的软件包,并将版本发布到 GitHub,从而支持自动更新。有关更多信息,请参阅 GitHub 发布工作流程。
要签署应用程序的代码,请按照下列步骤操作:
/certs
文件夹中的证书安装到钥匙串的login
文件夹中。Developer ID - G2
证书。key > Get Info > Access Control
。在下面,确保您的应用程序 (Xcode) 在列表中Always allow access by these applications
,并确保打开Confirm before allowing access
。更多信息请参见官方文档。
应用程序公证在 Electron-builder 模块中自动完成,需要传递APPLE_ID
和APPLE_APP_SPECIFIC_PASSWORD
环境变量。
如何获取应用专用密码:
为了发布新版本,您需要将 GitHub 访问令牌添加到.env
。转至 https://github.com/settings/tokens/new 生成 GitHub 访问令牌。访问令牌应具有存储库范围/权限。获得令牌后,将其分配给环境变量:
# .env
GH_TOKEN="{YOUR_TOKEN_HERE}"
在src/electron/config.yml
配置文件中发布配置允许设置 GitHub 存储库所有者/名称。
npm run electron:publish
,这将创建新的草稿版本并将构建工件上传到新发布的版本。创建的版本的版本将与package.json
中的版本相同。如果您发现此应用存在问题,请使用建议平台告知 Telegram。