tokei是统计项目代码行数最准最快工具,自动识别语言、剔除注释与空行、遵守.gitignore;安装后运行tokei即可获精确code/comment/blank分项统计。

用 tokei 命令行工具最准也最快
VSCode 自带的行数统计只针对单个文件,项目级总行数必须借助外部工具。目前 tokei 是最轻量、最准确的选择——它能自动识别语言、跳过注释和空行、支持 .gitignore 规则,且不依赖项目配置。
安装后直接在项目根目录运行即可:
tokei
如果没装,macOS 用 brew install tokei,Windows 用 choco install tokei,Linux 可通过 cargo:cargo install tokei。
- 默认输出含代码行(
code)、注释行(comment)、空白行(blank),重点关注code列 - 加
--output json可导出结构化结果,方便脚本后续处理 - 它会自动读取
.gitignore,无需额外排除 node_modules 等目录
VSCode 内一键触发:配个自定义任务
不想每次切终端?可以在 VSCode 里绑定快捷键执行 tokei。关键是把命令塞进 .vscode/tasks.json,再设个快捷键。
在项目根目录创建或编辑 .vscode/tasks.json,填入:
{
"version": "2.0.0",
"tasks": [
{
"label": "count lines",
"type": "shell",
"command": "tokei",
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
}
}
]
}
- 保存后按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),输入Tasks: Run Task→ 选count lines - 想改快捷键?打开键盘快捷方式(
Ctrl+K Ctrl+S),搜workbench.action.terminal.runActiveFile类似动作,但注意:必须绑定到workbench.action.terminal.runSelectedText或自定义命令才可控 - 别用
type: "process",它不支持 shell 别名或管道;shell类型才能正确调用tokei
别信插件:CodeMetrics 和 Project Statistics 都不准
VSCode 商店里的行数统计插件,多数只是递归读取文件并粗暴计数,既不剔除 vendor 目录,也不区分注释/空行,更不遵守 .gitignore。比如 CodeMetrics 会把 node_modules 里所有 .js 文件全算进去,一行 npm install 就让总数暴涨几十万行。
-
Project Statistics默认统计所有扩展名,哪怕你项目里只有 Python,它也会扫.log、.md甚至.zip - 它们无法识别多语言混合文件(如
.vue中的<script></script>和<template></template>区块),常把模板语法当 JS 代码 - 没有增量缓存,每次点都重新遍历整个目录树,大项目卡顿明显
要精确统计某类文件?用 tokei 加过滤参数
有时候你只想看 TypeScript 的业务代码行数,排除测试和配置文件。这时候不能靠插件“勾选项”,得用 tokei 的原生过滤能力。
例如只统计 src/ 下的 .ts 和 .tsx,跳过 test/ 和 types/:
tokei src --exclude test --exclude types --languages TypeScript
-
--exclude接的是路径前缀,不是 glob 模式,写src/test不如直接--exclude test(因 tokei 默认从当前目录开始扫描) -
--languages区分大小写,必须写TypeScript,不是typescript或ts - 想排除
.d.ts?它属于 TypeScript 语言范畴,无法单独过滤,只能靠--exclude路径,比如--exclude types
真正麻烦的永远是隐式依赖:比如 monorepo 里多个 packages/xxx 目录,tokei 不会自动识别 lerna/pnpm 工作区,得手动列路径或写 shell 循环。这点容易被忽略,一跑就少算一半。











