Skip to content

An application to count code in golang(wails v2) or electron-vue

License

Notifications You must be signed in to change notification settings

alanchenchen/CodeCounter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Code Counter

An application to count code in wails(golang)

version: 2.0.1

Author: Alan Chen

Technology stack: Vue2 + Vite + iview + Golang + Wails v2

electron版本见branch v1

Features

  • 采用wails v2包生成app、exe可执行文件,方便离线使用。
  • wails使用系统自带webview,而不是electron内置,软件打包后安装包2~3M,比内置chromium方案磁盘占用、内存占用率优秀很多
  • golang的go routine在读取文件和cpu计算会充分利用多核处理器,处理速度更快
  • 支持文件夹读取文件,自定义统计哪个文件夹下代码数量
  • 支持文件(夹)过滤,支持对应后缀名文件过滤
  • 支持对应后缀名文件添加自定义注释规则,目前只自带很小一部分代码的默认注释规则

Usage Help

  1. 点击即可读取文件夹,目前仅支持统计一个文件夹,再次添加会覆盖
  2. 过滤功能只对文件夹生效,在弹窗中按enter添加,注意添加后缀名必须带上点
  3. 注释规则文件名不需要带点,规则分为多行注释和单行注释,非必填,一个后缀名文件可以添加多个规则,但不可重复。
  4. 软件默认过滤node_modules.git两个文件夹。
  5. 软件默认提供js、ts、go、jsx、tsx、vue、svelte、html、css、java、vue、c和cpp等后缀名文件的注释规则
  6. 读取代码的原理其实是将目标文件的buffer转换成utf-8的string,所以只支持uft-8编码的文件,。大多数code的编码格式是utf-8。

Download

release

Directory Tree

    ├─build                 编译平台相关的配置文件、可执行程序
    ├─count                 code counter的主要go module
    ├─frontend              wails展示的前端静态资源,wails不强关联前端框架和构建工具
    │  ├─src
    │   └─wailsjs           wails在加载静态资源时自动生成的方法bindings,见wails文档
    │  ├─index.html
    │  ├─package.json
    │  └─vite.config.js     vite config配置
    ├─screenshot  
    ├─scripts               wails的常用命令组合的shell脚本,见wails文档
    ├─app.go                wails程序的app结构体,主要用于绑定go方法到js运行时,见wails文档
    ├─main.go               wails程序的入口,初始化,见wails文档
    └─wails.json            wails cli打包程序需要的配置,见wails文档

Development Setup

Required dependencies

  • Go 1.17+
  • wails v2 beta+
  • NPM (Node 15+)

详细见wails文档

Dev liveload

项目逻辑分为前端和后端

  • 前端可以使用任意框架,兼容性不用过于考虑,因为windows平台使用的webview2(和chromium一致),前端使用go绑定方法也十分简单,都是挂载windows对象
  • 后端的go方法可以使用任意go module,当需要绑定给js运行时,只需要在app.go里扩展App struct的接收器方法即可
  • 如果需要在程序运行中使用前端项目的hot load热更新,必须要先打开一个终端运行wails dev,然后另一个终端运行npm run dev
  • wails读取前端静态资源的策略比较奇怪,所以不建议使用wails的frontend构建

Build

# 使用upx压缩打包
$ wails build --upx
  • target是mac平台

    • 本机必须是mac系统,可以同时编译amd64、arm64架构
  • target是windows平台

    • 只能编译windows,可以同时编译amd64、arm64架构
  • 所有平台均可使用upx来压缩,压缩比例非常强

  • mac平台编译完的是app文件,windows默认编译完的是exe,所有平台均可使用nsis来打包exe

  • wails使用的方案是系统自带的webview,目前macos/linux主流版本均内置,windows平台使用的webview2只在部分win10和正式win11内置,所以当你的windwos系统中不存在webview2时,程序启动后会引导你安装,大概118M左右