From 358be299aeb71e7855018c8c8ca7f3da471a58b1 Mon Sep 17 00:00:00 2001 From: Timeless0911 <1604889533@qq.com> Date: Fri, 11 Jul 2025 15:50:26 +0800 Subject: [PATCH] fix: improve formatting of minutes in build time --- packages/plugin-dts/rstest.config.ts | 3 +++ packages/plugin-dts/src/utils.ts | 15 +++++++++++++-- packages/plugin-dts/tests/utils.test.ts | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 packages/plugin-dts/tests/utils.test.ts diff --git a/packages/plugin-dts/rstest.config.ts b/packages/plugin-dts/rstest.config.ts index 9648ec181..ac0839048 100644 --- a/packages/plugin-dts/rstest.config.ts +++ b/packages/plugin-dts/rstest.config.ts @@ -1,6 +1,9 @@ import { defineConfig } from '@rstest/core'; import { shared } from '../../rstest.workspace'; +// Disable color in test +process.env.NO_COLOR = '1'; + export default defineConfig({ ...shared, name: 'unit-dts', diff --git a/packages/plugin-dts/src/utils.ts b/packages/plugin-dts/src/utils.ts index de929c4de..66691f1e8 100644 --- a/packages/plugin-dts/src/utils.ts +++ b/packages/plugin-dts/src/utils.ts @@ -136,8 +136,19 @@ export const prettyTime = (seconds: number): string => { return `${format(seconds.toFixed(1))} s`; } - const minutes = seconds / 60; - return `${format(minutes.toFixed(2))} m`; + const minutes = Math.floor(seconds / 60); + const minutesLabel = `${format(minutes.toFixed(0))} m`; + const remainingSeconds = seconds % 60; + + if (remainingSeconds === 0) { + return minutesLabel; + } + + const secondsLabel = `${format( + remainingSeconds.toFixed(remainingSeconds % 1 === 0 ? 0 : 1), + )} s`; + + return `${minutesLabel} ${secondsLabel}`; }; // tinyglobby only accepts posix path diff --git a/packages/plugin-dts/tests/utils.test.ts b/packages/plugin-dts/tests/utils.test.ts new file mode 100644 index 000000000..984bd69ec --- /dev/null +++ b/packages/plugin-dts/tests/utils.test.ts @@ -0,0 +1,14 @@ +import { expect, test } from '@rstest/core'; +import { prettyTime } from '../src/utils'; + +test('should pretty time correctly', () => { + expect(prettyTime(0.0012)).toEqual('0.001 s'); + expect(prettyTime(0.0123)).toEqual('0.01 s'); + expect(prettyTime(0.1234)).toEqual('0.12 s'); + expect(prettyTime(1.234)).toEqual('1.23 s'); + expect(prettyTime(12.34)).toEqual('12.3 s'); + expect(prettyTime(120)).toEqual('2 m'); + expect(prettyTime(123.4)).toEqual('2 m 3.4 s'); + expect(prettyTime(1234)).toEqual('20 m 34 s'); + expect(prettyTime(1234.5)).toEqual('20 m 34.5 s'); +});