{"id":20618178,"url":"https://github.com/oawu/npm-cli-progress","last_synced_at":"2026-02-13T06:42:11.767Z","repository":{"id":57132702,"uuid":"329861619","full_name":"oawu/npm-cli-progress","owner":"oawu","description":"終端機上使用 Node.js「進度工具」","archived":false,"fork":false,"pushed_at":"2025-03-21T02:42:36.000Z","size":162,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-18T23:48:17.244Z","etag":null,"topics":["cli-progress","command-line","nodejs","npm","progress","progress-bar","terminal"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oawu.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-01-15T09:07:08.000Z","updated_at":"2025-03-21T02:42:29.000Z","dependencies_parsed_at":"2025-01-17T04:46:43.623Z","dependency_job_id":"689f584d-ba66-4f44-8dfc-41efe5f97fb6","html_url":"https://github.com/oawu/npm-cli-progress","commit_stats":null,"previous_names":["comdan66/node-cli-progress"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/oawu/npm-cli-progress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oawu%2Fnpm-cli-progress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oawu%2Fnpm-cli-progress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oawu%2Fnpm-cli-progress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oawu%2Fnpm-cli-progress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oawu","download_url":"https://codeload.github.com/oawu/npm-cli-progress/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oawu%2Fnpm-cli-progress/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29398144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli-progress","command-line","nodejs","npm","progress","progress-bar","terminal"],"created_at":"2024-11-16T12:07:28.577Z","updated_at":"2026-02-13T06:42:11.748Z","avatar_url":"https://github.com/oawu.png","language":"JavaScript","readme":"# OA's Node.js Cli Progress\n\nOA 的終端機進度工具 🚀\n\n\n## 說明\n終端機上使用 Node.js「進度工具」\n\n![@oawu/cli-progress](Cli-Progress.png)\n\n## 安裝\n\n```shell\nnpm install @oawu/cli-progress\n```\n\n## 使用\n\n引入 `require('@oawu/cli-progress')` 即可使用，如下範例：\n\n```javascript\n\n  const Progress = require('@oawu/cli-progress')\n  Progress.title('標題', '副標題')\n  Progress.total(3)\n\n  setTimeout(_ =\u003e {\n    Progress.advance\n    \n    setTimeout(_ =\u003e {\n      Progress.advance\n\n      setTimeout(_ =\u003e {\n        Progress.done()\n      }, 1000)\n    }, 1000)\n  }, 1000)\n\n```\n\n## 設定\n\n* 使用色彩器(@oawu/xterm)，於一開始使用 `Progress.option.color = true` 即可，預設為 `false`\n\n* 設定左邊空格基礎 `Progress.option.space = 2`，預設為 `3`\n* 設定讀取中\n  * 顯示：於一開始使用 `Progress.option.loading = \"⠦⠧⠇⠏⠉⠙⠹⠸⠼⠴⠤⠦\"`，預設為 `⠦⠧⠇⠏⠉⠙⠹⠸⠼⠴⠤⠦`\n  * 顏色：於一開始使用 `Progress.option.loading.color = Xterm.red`，預設為 `Xterm.yellow`\n\n* 設定主標題顏色，於一開始使用 `Progress.option.title.color = Xterm.red`，預設為 `Xterm.gray`\n* 設定小標題顏色，於一開始使用 `Progress.option.subtitle.color = Xterm.red`，預設為 `Xterm.gray`\n* 設定百分比顏色，於一開始使用 `Progress.option.percent.color = Xterm.red`，預設為 `Xterm.gray`\n* 設定數值顏色，於一開始使用 `Progress.option.index.color = Xterm.red`，預設為 `Xterm.dim`\n* 設定 done 顏色，於一開始使用 `Progress.option.done.color = Xterm.red`，預設為 `Xterm.green`\n* 設定 fail 顏色，於一開始使用 `Progress.option.fail.color = Xterm.red`，預設為 `Xterm.red`\n\n* 設定主標題符號\n  * 顯示：於一開始使用 `Progress.option.header = \"！\"`，預設為 `◉`\n  * 顏色：於一開始使用 `Progress.option.header.color = Xterm.red`，預設為 `Xterm.purple`\n\n* 設定小標題符號\n  * 顯示：於一開始使用 `Progress.option.newline = \"！\"`，預設為 `↳`\n  * 顏色：於一開始使用 `Progress.option.newline.color = Xterm.red`，預設為 `Xterm.dim.purple`\n\n* 設定分隔符號\n  * 顯示：於一開始使用 `Progress.option.dash = \"！\"`，預設為 `─`\n  * 顏色：於一開始使用 `Progress.option.dash.color = Xterm.red`，預設為 `Xterm.dim`\n\n* 設定點點點符號\n  * 顯示：於一開始使用 `Progress.option.dot = \"！\"`，預設為 `…`\n  * 顏色：於一開始使用 `Progress.option.dot.color = Xterm.red`，預設為 `Xterm.dim.lightBlack`\n\n以下為基本設定範例與執行結果：\n\n```javascript\n\n  const Progress = require('@oawu/cli-progress')\n  Progress.option.color = true // 使用顏色\n  Progress.option.done.color = text =\u003e Xterm.lightBlue(text).dim() // done 時顯示為細體藍色\n  Progress.option.fail.color = Xterm.red // fail 時為紅色\n  Progress.option.header = '➜' // 主標題符號改為 `➜`\n  Progress.option.header.color = Xterm.lightGray // 主標題符號顏色改為亮灰色\n\n  // 開始執行\n  Progress.title('標題', '副標題')\n  Progress.total(3)\n\n  setTimeout(_ =\u003e {\n    Progress.advance\n    \n    setTimeout(_ =\u003e {\n      Progress.advance\n\n      setTimeout(_ =\u003e {\n        Progress.done()\n      }, 1000)\n    }, 1000)\n  }, 1000)\n```\n\n執行中：\n\n![@oawu/cli-progress](01.png)\n\n完成：\n\n![@oawu/cli-progress](02.png)\n\n\n\n## Multi 功能\n\n這是可以多行顯示進度功能，如下範例會依序顯示不同任務完成的進度。\n\n```javascript\n\n  const { Multi } = require('@oawu/cli-progress')\n\n  const tasks = [\n    \"task 1\",\n    \"task 2\",\n    \"task 3\",\n    \"task 4\",\n    \"task 5\",\n  ]\n\n  // 儲存游標位置\n  Multi.save()\n  const multis = []\n  for (const task of tasks) {\n    const multi = Multi(task)\n    Multi.push(multi)\n    multis.push(multi)\n  }\n\n  // 模擬不同任務的進度轉換\n  setTimeout(_ =\u003e multis[1].percent =  10, 1000)\n  setTimeout(_ =\u003e multis[0].percent =   5, 2000)\n  setTimeout(_ =\u003e multis[3].percent =   8, 1100)\n  setTimeout(_ =\u003e multis[1].percent =  30, 2200)\n  setTimeout(_ =\u003e multis[2].percent =   1, 1100)\n  setTimeout(_ =\u003e multis[0].percent =  30, 3000)\n  setTimeout(_ =\u003e multis[1].percent =  50, 3100)\n  setTimeout(_ =\u003e multis[3].percent =  63, 1500)\n  setTimeout(_ =\u003e multis[4].percent =  32, 2000)\n  setTimeout(_ =\u003e multis[1].percent =  70, 3500)\n  setTimeout(_ =\u003e multis[2].percent =  19, 2100)\n  setTimeout(_ =\u003e multis[0].percent =  45, 4000)\n  setTimeout(_ =\u003e multis[3].percent =  90, 3100)\n  setTimeout(_ =\u003e multis[4].percent =  66, 3000)\n  setTimeout(_ =\u003e multis[4].percent =  82, 4000)\n  setTimeout(_ =\u003e multis[1].percent =  90, 4000)\n  setTimeout(_ =\u003e multis[0].percent =  75, 5000)\n  setTimeout(_ =\u003e multis[2].percent =  49, 3100)\n  setTimeout(_ =\u003e multis[3].percent =  95, 5200)\n  setTimeout(_ =\u003e multis[0].percent = 100, 6000)\n  setTimeout(_ =\u003e multis[2].percent =  75, 4100)\n  setTimeout(_ =\u003e multis[4].percent = 100, 5000)\n  setTimeout(_ =\u003e multis[3].percent = 100, 5500)\n  setTimeout(_ =\u003e multis[1].percent = 100, 5000)\n  setTimeout(_ =\u003e multis[2].percent = 100, 5100)\n\n  // 更新文字\n  setTimeout(_ =\u003e multis[2].text = 'task 3-change', 1100)\n  setTimeout(_ =\u003e multis[0].text = 'task 1-change', 2200)\n  setTimeout(_ =\u003e multis[1].text = 'task 2-change', 3300)\n  setTimeout(_ =\u003e multis[4].text = 'task 5-change', 4400)\n  setTimeout(_ =\u003e multis[3].text = 'task 4-change', 5500)\n\n  // 完成\n  setTimeout(_ =\u003e {\n    // 恢復游標位置\n    Multi.back()\n    console.error('ok');\n  }, 7000)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foawu%2Fnpm-cli-progress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foawu%2Fnpm-cli-progress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foawu%2Fnpm-cli-progress/lists"}