Трекер времени с Node.JS CLI
После того как я много лет использовал timetrap от Ruby (к сожалению, больше не поддерживаемый), я понял, что в экосистеме Node.JS нет аналога, и решил создать его.
Представляю track-time-cli, утилиту для отслеживания времени, которое вы тратите на свои проекты, и со временем просмотра полезных метрик и статистики о вашей производительности.
Это приложение Node.JS CLI, написанное на TypeScript и поддерживающее ввод времени начала/окончания задачи на естественном языке (например, "1 час назад" или "12 минут назад").
Большинство команд предлагают аргументы для изменения отображения длительности на обычном языке (например, 33:00
как 33 minutes
) или времени как относительного (например, 12/24/2023
, 6:51:39 PM
как 26 minutes ago
).
Начало работы
Установите это с помощью npm i -g track-time-cli
; точка входа/команда - tt
, и по умолчанию, при вызове без аргументов, он показывает активную в данный момент запись табеля учета рабочего времени.
Все данные хранятся в ~/.track-time-cli/db.json
- папке, которую вы можете превратить в git-репозиторий для резервного копирования данных по мере роста количества записей.
Выполните команду tt --help
, чтобы просмотреть список поддерживаемых команд:
track-time-cli now
Display all active time sheet entries
Commands:
track-time-cli in <description..> Check in to a time sheet [aliases: i]
track-time-cli now Display all active time sheet entries
[default]
track-time-cli out Check out of the currently active time
sheet entry [aliases: o]
track-time-cli week [sheets..] Display a summary of activity for the
past week [aliases: w]
track-time-cli list [sheets..] List all time sheet entries [aliases: l]
track-time-cli edit [description..] View, modify, or delete a time sheet
entry [aliases: e]
track-time-cli today [sheets..] Display a summary of activity for today
[aliases: t]
track-time-cli sheet [name] Switch to or delete a sheet by name
[aliases: s]
track-time-cli sheets List all sheets [aliases: ss]
track-time-cli resume Resume the last active entry [aliases: r]
track-time-cli yesterday [sheets..] Display a summary of activity for
yesterday [aliases: y]
track-time-cli breakdown [sheets..] Display total durations per day for one
or more sheets [aliases: b]
Options:
--version Show version number [boolean]
-h, --humanize Print the total duration in human-readable format [boolean]
--help Show help [boolean]
Examples:
tt in --at "20 minutes ago" fixing a bug Check in at a custom time
tt out --at "5 minutes ago" Check out at a custom time
tt list --today --all View all entries from today
tt b Show a breakdown of your activity
tt today --all View activity for the current day
Замечание о псевдонимах команд
Почти у всех команд есть короткие псевдонимы, которые я буду использовать исключительно в этой заметке. Например, tt yesterday
- это то же самое, что и tt y
. Информацию о доступных псевдонимах можно найти в выводе команды tt --help
.
Табели учета рабочего времени
Задача в track-time-cli называется записью в табеле учета рабочего времени и относится к нему. Табели времени могут представлять любую группу или категорию задач, но в основном они предназначены для представления отдельных проектов.
Чтобы просмотреть список табелей, выполните команду tt sheets
или более короткую tt ss
.
Управление табелями рабочего времени
Чтобы создать новый график или перейти к существующему, выполните команду tt s [имя]
. Если выполнить команду tt s
без имени, отобразится активный в данный момент табель учета рабочего времени.
При инициализации БД создается временная таблица с именем main
, которая по умолчанию устанавливается как активная.
Чтобы удалить временную таблицу, выполните команду tt s --delete [имя временной таблицы]
.
Отслеживание задач
Чтобы начать или зарегистрироваться в табеле учета рабочего времени, выполните команду tt in [описание]
. Если вы начали работать раньше и забыли отметиться, вы можете сделать это задним числом с помощью аргумента --at
, т. е. tt in --at '10 minutes ago' developing feature X
создаст запись в табеле учета рабочего времени, начатую 10 минут назад, с описанием developing feature X
.
Если вы хотите начать новую запись с тем же описанием, что и предыдущая, можно воспользоваться командой tt resume
(или tt r
), которая зарегистрирует новую запись с тем же описанием, что и последняя активная запись в списке.
Аналогично, чтобы завершить задание или выйти из него, запустите команду tt out
, дополнительно указав аргумент --at
(например, tt out --at '5 minutes ago'
), если вы прекратили работу и забыли выписаться из табеля учета рабочего времени.
Все перечисленное ниже является допустимыми значениями времени входа/выхода:
- '19 minutes ago'
- 'forty five minutes ago'
- '1 hour and 20 minutes ago'
- '1 day, three hours, and 2 minutes ago'
Просмотр задач
Для просмотра предыдущих и активных задач существует команда списка, tt l
, которая выводит список задач. Она довольно мощная; вот вывод команды tt l --help
:
track-time-cli list [sheets..]
List all time sheet entries
Options:
--version Show version number [boolean]
-r, --ago, --relative Print dates as relative time (e.g. 5 minutes ago)
[boolean]
-h, --humanize Print the total duration in human-readable format
[boolean]
-s, --since Only list entries since the specified date [string]
-t, --today Show results for today [boolean]
--all-sheets Show results for all sheets [boolean]
-a, --all Show all sheet entries [boolean]
-y, --yesterday Show results from yesterday [boolean]
-c, --concise Exclude start and end dates from output, showing
duration only [boolean]
--help Show help [boolean]
--sheets Show results for the specified sheets
[array] [choices: "track-time-cli", "cst", "personal", "time-speak", "coding",
"gaming", "blog", "node-ts-lib-template", "track-time-cli-ui", "to-numbers"]
По умолчанию он показывает данные за последние 24 часа, что можно изменить с помощью аргумента --since
. Например, для моей собственной временной таблицы track-time-cli
запуск tt l track-time-cli --since '7 days ago'
приводит к следующему результату:
Удобные команды
Есть три команды для перечисления определенных отрезков времени, которые, как мне кажется, часто используются:
- tt today (
tt t
) - tt yesterday (
tt y
) - tt week (
tt w
)
Их вывод и аргументы аналогичны tt l
; вот вывод tt week -t -h
в моем случае:
Планы на будущее
В настоящее время команда разбивки показывает общее время, потраченное за час дня или за день недели, для записей, полученных из нескольких табелей учета рабочего времени.
Это еще не доработанный вариант, который будет улучшен в будущем; планируется использовать сохраненные данные, чтобы определить, когда вы наиболее продуктивны, и просматривать другие достоверные производные данные.
В этом посте я описал не все функции, так что не стесняйтесь проверять их самостоятельно!
Для получения дополнительной информации ознакомьтесь с README.md и самим репозиторием GitHub.
Любые отзывы, комментарии и предложения будут только приветствоваться!
Всем счастливых праздников! 🎅🎄