{"id":15292003,"url":"https://github.com/love1ace/taskl","last_synced_at":"2025-04-13T09:32:58.070Z","repository":{"id":257784315,"uuid":"860283383","full_name":"love1ace/taskl","owner":"love1ace","description":"A useful tool for managing asynchronous tasks and logs in CLI 🚀","archived":false,"fork":false,"pushed_at":"2024-09-27T10:03:02.000Z","size":229,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-31T19:37:01.249Z","etag":null,"topics":["cli","listr","log","npm","ora"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/taskl","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/love1ace.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-09-20T06:42:43.000Z","updated_at":"2024-09-27T10:01:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"6ffaa627-1821-4dcc-81e0-ad31b8876ea8","html_url":"https://github.com/love1ace/taskl","commit_stats":null,"previous_names":["love1ace/taskl"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/love1ace%2Ftaskl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/love1ace%2Ftaskl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/love1ace%2Ftaskl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/love1ace%2Ftaskl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/love1ace","download_url":"https://codeload.github.com/love1ace/taskl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223581935,"owners_count":17168655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","listr","log","npm","ora"],"created_at":"2024-09-30T16:16:07.762Z","updated_at":"2024-11-07T20:05:13.714Z","avatar_url":"https://github.com/love1ace.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Taskl\n\n**Taskl**은 비동기 작업을 효과적으로 제어하고 CLI 애플리케이션에서 로그를 관리할 수 있는 라이브러리 입니다.\n\n![npm](https://img.shields.io/npm/v/taskl)\n![license](https://img.shields.io/npm/l/taskl)\n\n![taskl](./taskl.gif)\n\n## 설치\n\n원하는 패키지 관리자를 사용하여 **Taskl**을 설치할 수 있습니다:\n\n### npm\n\n```bash\nnpm install taskl\n```\n\n### Yarn\n\n```bash\nyarn add taskl\n```\n\n### pnpm\n\n```bash\npnpm add taskl\n```\n\n### Bun\n\n```bash\nbun add taskl\n```\n\n## 사용법\n\n프로젝트에서 **Taskl**을 사용하려면 다음 단계를 따르세요:\n\n### 1. Taskl에서 필요한 구성 요소 가져오기\n\n먼저, `taskl` 패키지에서 `Taskl`, `Task`, `TasklOptions`를 import 합니다.\n\n```typescript\nimport { Taskl, Task, TasklOptions } from 'taskl';\n```\n\n*JavaScript 사용자의 경우, 대신 `require`를 사용할 수 있습니다:*\n\n```javascript\nconst { Taskl, Task, TasklOptions } = require('taskl');\n```\n\n### 2. 작업 정의하기\n\n실행할 작업 배열을 생성합니다. 각 작업은 `text` 설명과 `Promise\u003cvoid\u003e`를 반환하는 `run` 함수를 가져야 합니다.\n\n```typescript\nconst tasks: Task[] = [\n  {\n    text: '데이터베이스에 연결 중',\n    run: async () =\u003e {\n      // 데이터베이스에 연결하는 실제 로직\n      await connectToDatabase();\n    },\n  },\n  {\n    text: 'API 서버 시작 중',\n    run: async () =\u003e {\n      // 서버를 시작하는 실제 로직\n      await startApiServer();\n    },\n  }\n];\n```\n\n*JavaScript 사용자의 경우:*\n\n```javascript\nconst tasks = [\n  {\n    text: '데이터베이스에 연결 중',\n    run: async () =\u003e {\n      // 데이터베이스에 연결하는 실제 로직\n      await connectToDatabase();\n    },\n  },\n  {\n    text: 'API 서버 시작 중',\n    run: async () =\u003e {\n      // 서버를 시작하는 실제 로직\n      await startApiServer();\n    },\n  }\n];\n```\n\n**Task 인터페이스:**\n\n- `text`: 작업에 대한 설명.\n- `run`: 작업을 수행하는 비동기 함수.\n\n**팁:** 각 `run` 함수가 자체적으로 오류를 적절히 처리하여 Taskl이 작업 흐름을 원활하게 관리할 수 있도록 하세요. 예를 들어:\n\n```javascript\nconst tasks = [\n  {\n    text: '데이터베이스에 연결 중',\n    run: async () =\u003e {\n      try {\n        await connectToDatabase();\n      } catch (error) {\n        console.error('데이터베이스 연결 실패:', error);\n        throw error; // Taskl이 실패를 처리할 수 있도록 재전파\n      }\n    },\n  },\n  // ... 다른 작업\n];\n```\n\n### 3. TasklOptions 설정\n\n작업과 프로세스 중 표시할 메시지를 포함하여 Taskl의 옵션을 구성합니다.\n\n```typescript\nconst options: TasklOptions = {\n  tasks: tasks,\n  startMessage: '🔄 프로세스를 시작합니다',\n  successMessage: '프로세스가 성공적으로 완료되었습니다.',\n  failedMessage: '프로세스 중 오류가 발생했습니다.'\n};\n```\n\n*JavaScript 사용자의 경우:*\n\n```javascript\nconst options = {\n  tasks: tasks,\n  startMessage: '🔄 프로세스를 시작합니다',\n  successMessage: '프로세스가 성공적으로 완료되었습니다.',\n  failedMessage: '프로세스 중 오류가 발생했습니다.'\n};\n```\n\n**옵션 설명:**\n\n- `tasks`: 순차적으로 실행될 `Task` 객체들의 배열.\n- `startMessage`: 작업 실행이 시작될 때 표시되는 메시지.\n- `successMessage`: 모든 작업이 성공적으로 완료된 후 표시되는 메시지.\n- `failedMessage`: 작업 중 하나라도 실패할 경우 표시되는 메시지.\n\n### 4. Taskl 인스턴스 생성 및 작업 실행\n\n구성된 옵션으로 Taskl을 인스턴스화하고 작업을 실행합니다.\n\n```typescript\nconst taskl = new Taskl(options);\ntaskl.runTasks().catch(console.error);\n```\n\n*JavaScript 사용자의 경우:*\n\n```javascript\nconst taskl = new Taskl(options);\ntaskl.runTasks().catch(console.error);\n```\n\n**다음과 같은 일이 발생합니다:**\n\n- Taskl은 `startMessage`를 시안 색상으로 표시합니다.\n- 각 작업이 순차적으로 실행되며, 작업 설명과 함께 스피너가 표시됩니다.\n- 작업이 성공적으로 완료되면 성공 스피너가 나타납니다.\n- 작업이 실패하면 실패 스피너가 표시되고, 마지막에 `failedMessage`가 표시됩니다.\n- 마지막으로, Taskl은 전체 실행 시간을 표시합니다.\n\n### 전체 예제\n\n모든 단계를 통합한 전체 예제는 다음과 같습니다:\n\n```typescript\nimport { Taskl, Task, TasklOptions } from 'taskl';\n\n// 작업 정의\nconst tasks: Task[] = [\n  {\n    text: '데이터베이스에 연결 중',\n    run: async () =\u003e {\n      await connectToDatabase();\n    },\n  },\n  {\n    text: 'API 서버 시작 중',\n    run: async () =\u003e {\n      await startApiServer();\n    },\n  }\n];\n\n// Taskl 옵션 설정\nconst options: TasklOptions = {\n  tasks: tasks,\n  startMessage: '🔄 프로세스를 시작합니다',\n  successMessage: '프로세스가 성공적으로 완료되었습니다.',\n  failedMessage: '프로세스 중 오류가 발생했습니다.'\n};\n\n// Taskl 인스턴스 생성 및 작업 실행\nconst taskl = new Taskl(options);\ntaskl.runTasks().catch(console.error);\n\n// 예제 함수들 (실제 로직으로 대체하세요)\nasync function connectToDatabase() {\n  // 비동기 데이터베이스 연결 시뮬레이션\n  return new Promise\u003cvoid\u003e((resolve) =\u003e setTimeout(resolve, 1000));\n}\n\nasync function startApiServer() {\n  // 비동기 서버 시작 시뮬레이션\n  return new Promise\u003cvoid\u003e((resolve) =\u003e setTimeout(resolve, 1000));\n}\n```\n\n*JavaScript 사용자의 경우:*\n\n```javascript\nconst { Taskl, Task, TasklOptions } = require('taskl');\n\n// 작업 정의\nconst tasks = [\n  {\n    text: '데이터베이스에 연결 중',\n    run: async () =\u003e {\n      await connectToDatabase();\n    },\n  },\n  {\n    text: 'API 서버 시작 중',\n    run: async () =\u003e {\n      await startApiServer();\n    },\n  }\n];\n\n// Taskl 옵션 설정\nconst options = {\n  tasks: tasks,\n  startMessage: '🔄 프로세스를 시작합니다',\n  successMessage: '프로세스가 성공적으로 완료되었습니다.',\n  failedMessage: '프로세스 중 오류가 발생했습니다.'\n};\n\n// Taskl 인스턴스 생성 및 작업 실행\nconst taskl = new Taskl(options);\ntaskl.runTasks().catch(console.error);\n\n// 예제 함수들 (실제 로직으로 대체하세요)\nasync function connectToDatabase() {\n  // 비동기 데이터베이스 연결 시뮬레이션\n  return new Promise((resolve) =\u003e setTimeout(resolve, 1000));\n}\n\nasync function startApiServer() {\n  // 비동기 서버 시작 시뮬레이션\n  return new Promise((resolve) =\u003e setTimeout(resolve, 1000));\n}\n```\n\n**예제 실행하기:**\n\n1. 프로젝트에 **Taskl**이 설치되어 있는지 확인하세요.\n2. 예제의 `connectToDatabase` 및 `startApiServer` 함수를 실제 로직으로 교체하세요.\n3. **TypeScript 사용자:**\n   - `tsc`를 사용하여 TypeScript 파일을 컴파일하거나 `ts-node`와 같은 TypeScript 실행기를 사용하여 실행하세요.\n   - 컴파일된 경우 `node`를 사용하여 스크립트를 실행하거나, TypeScript 실행기를 사용하는 경우 직접 실행하세요.\n4. **JavaScript 사용자:**\n   - 스크립트를 `node`를 사용하여 실행하세요:\n     ```bash\n     node your-script.js\n     ```\n\n콘솔에서 진행 상황 표시기, 성공/실패 메시지 및 전체 실행 시간을 포함한 출력이 표시됩니다.\n\n## 기여\n\n**Taskl**에 대한 기여를 환영합니다! 버그를 보고하거나, 기능 향상을 제안하거나, 풀 리퀘스트를 제출하는 등 여러분의 의견을 소중히 여깁니다.\n\n## 라이선스\n\n이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.\n\n## 연락처\n\n질문, 제안 또는 피드백이 있으시면 [love1ace](mailto:lovelacedud@gmail.com)으로 연락 주세요.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flove1ace%2Ftaskl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flove1ace%2Ftaskl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flove1ace%2Ftaskl/lists"}