https://github.com/love1ace/taskl
A useful tool for managing asynchronous tasks and logs in CLI ๐
https://github.com/love1ace/taskl
cli listr log npm ora
Last synced: about 1 year ago
JSON representation
A useful tool for managing asynchronous tasks and logs in CLI ๐
- Host: GitHub
- URL: https://github.com/love1ace/taskl
- Owner: love1ace
- License: mit
- Created: 2024-09-20T06:42:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-27T10:03:02.000Z (over 1 year ago)
- Last Synced: 2024-10-31T19:37:01.249Z (over 1 year ago)
- Topics: cli, listr, log, npm, ora
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/taskl
- Size: 224 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.ko.md
- License: LICENSE
Awesome Lists containing this project
README
# Taskl
**Taskl**์ ๋น๋๊ธฐ ์์
์ ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ๊ณ CLI ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ก๊ทธ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์
๋๋ค.



## ์ค์น
์ํ๋ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ **Taskl**์ ์ค์นํ ์ ์์ต๋๋ค:
### npm
```bash
npm install taskl
```
### Yarn
```bash
yarn add taskl
```
### pnpm
```bash
pnpm add taskl
```
### Bun
```bash
bun add taskl
```
## ์ฌ์ฉ๋ฒ
ํ๋ก์ ํธ์์ **Taskl**์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์:
### 1. Taskl์์ ํ์ํ ๊ตฌ์ฑ ์์ ๊ฐ์ ธ์ค๊ธฐ
๋จผ์ , `taskl` ํจํค์ง์์ `Taskl`, `Task`, `TasklOptions`๋ฅผ import ํฉ๋๋ค.
```typescript
import { Taskl, Task, TasklOptions } from 'taskl';
```
*JavaScript ์ฌ์ฉ์์ ๊ฒฝ์ฐ, ๋์ `require`๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:*
```javascript
const { Taskl, Task, TasklOptions } = require('taskl');
```
### 2. ์์
์ ์ํ๊ธฐ
์คํํ ์์
๋ฐฐ์ด์ ์์ฑํฉ๋๋ค. ๊ฐ ์์
์ `text` ์ค๋ช
๊ณผ `Promise`๋ฅผ ๋ฐํํ๋ `run` ํจ์๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
```typescript
const tasks: Task[] = [
{
text: '๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ์ค',
run: async () => {
// ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ์ค์ ๋ก์ง
await connectToDatabase();
},
},
{
text: 'API ์๋ฒ ์์ ์ค',
run: async () => {
// ์๋ฒ๋ฅผ ์์ํ๋ ์ค์ ๋ก์ง
await startApiServer();
},
}
];
```
*JavaScript ์ฌ์ฉ์์ ๊ฒฝ์ฐ:*
```javascript
const tasks = [
{
text: '๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ์ค',
run: async () => {
// ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ์ค์ ๋ก์ง
await connectToDatabase();
},
},
{
text: 'API ์๋ฒ ์์ ์ค',
run: async () => {
// ์๋ฒ๋ฅผ ์์ํ๋ ์ค์ ๋ก์ง
await startApiServer();
},
}
];
```
**Task ์ธํฐํ์ด์ค:**
- `text`: ์์
์ ๋ํ ์ค๋ช
.
- `run`: ์์
์ ์ํํ๋ ๋น๋๊ธฐ ํจ์.
**ํ:** ๊ฐ `run` ํจ์๊ฐ ์์ฒด์ ์ผ๋ก ์ค๋ฅ๋ฅผ ์ ์ ํ ์ฒ๋ฆฌํ์ฌ Taskl์ด ์์
ํ๋ฆ์ ์ํํ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ํ์ธ์. ์๋ฅผ ๋ค์ด:
```javascript
const tasks = [
{
text: '๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ์ค',
run: async () => {
try {
await connectToDatabase();
} catch (error) {
console.error('๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์คํจ:', error);
throw error; // Taskl์ด ์คํจ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฌ์ ํ
}
},
},
// ... ๋ค๋ฅธ ์์
];
```
### 3. TasklOptions ์ค์
์์
๊ณผ ํ๋ก์ธ์ค ์ค ํ์ํ ๋ฉ์์ง๋ฅผ ํฌํจํ์ฌ Taskl์ ์ต์
์ ๊ตฌ์ฑํฉ๋๋ค.
```typescript
const options: TasklOptions = {
tasks: tasks,
startMessage: '๐ ํ๋ก์ธ์ค๋ฅผ ์์ํฉ๋๋ค',
successMessage: 'ํ๋ก์ธ์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.',
failedMessage: 'ํ๋ก์ธ์ค ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.'
};
```
*JavaScript ์ฌ์ฉ์์ ๊ฒฝ์ฐ:*
```javascript
const options = {
tasks: tasks,
startMessage: '๐ ํ๋ก์ธ์ค๋ฅผ ์์ํฉ๋๋ค',
successMessage: 'ํ๋ก์ธ์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.',
failedMessage: 'ํ๋ก์ธ์ค ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.'
};
```
**์ต์
์ค๋ช
:**
- `tasks`: ์์ฐจ์ ์ผ๋ก ์คํ๋ `Task` ๊ฐ์ฒด๋ค์ ๋ฐฐ์ด.
- `startMessage`: ์์
์คํ์ด ์์๋ ๋ ํ์๋๋ ๋ฉ์์ง.
- `successMessage`: ๋ชจ๋ ์์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํ ํ์๋๋ ๋ฉ์์ง.
- `failedMessage`: ์์
์ค ํ๋๋ผ๋ ์คํจํ ๊ฒฝ์ฐ ํ์๋๋ ๋ฉ์์ง.
### 4. Taskl ์ธ์คํด์ค ์์ฑ ๋ฐ ์์
์คํ
๊ตฌ์ฑ๋ ์ต์
์ผ๋ก Taskl์ ์ธ์คํด์คํํ๊ณ ์์
์ ์คํํฉ๋๋ค.
```typescript
const taskl = new Taskl(options);
taskl.runTasks().catch(console.error);
```
*JavaScript ์ฌ์ฉ์์ ๊ฒฝ์ฐ:*
```javascript
const taskl = new Taskl(options);
taskl.runTasks().catch(console.error);
```
**๋ค์๊ณผ ๊ฐ์ ์ผ์ด ๋ฐ์ํฉ๋๋ค:**
- Taskl์ `startMessage`๋ฅผ ์์ ์์์ผ๋ก ํ์ํฉ๋๋ค.
- ๊ฐ ์์
์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฉฐ, ์์
์ค๋ช
๊ณผ ํจ๊ป ์คํผ๋๊ฐ ํ์๋ฉ๋๋ค.
- ์์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ์ฑ๊ณต ์คํผ๋๊ฐ ๋ํ๋ฉ๋๋ค.
- ์์
์ด ์คํจํ๋ฉด ์คํจ ์คํผ๋๊ฐ ํ์๋๊ณ , ๋ง์ง๋ง์ `failedMessage`๊ฐ ํ์๋ฉ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก, Taskl์ ์ ์ฒด ์คํ ์๊ฐ์ ํ์ํฉ๋๋ค.
### ์ ์ฒด ์์
๋ชจ๋ ๋จ๊ณ๋ฅผ ํตํฉํ ์ ์ฒด ์์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
```typescript
import { Taskl, Task, TasklOptions } from 'taskl';
// ์์
์ ์
const tasks: Task[] = [
{
text: '๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ์ค',
run: async () => {
await connectToDatabase();
},
},
{
text: 'API ์๋ฒ ์์ ์ค',
run: async () => {
await startApiServer();
},
}
];
// Taskl ์ต์
์ค์
const options: TasklOptions = {
tasks: tasks,
startMessage: '๐ ํ๋ก์ธ์ค๋ฅผ ์์ํฉ๋๋ค',
successMessage: 'ํ๋ก์ธ์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.',
failedMessage: 'ํ๋ก์ธ์ค ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.'
};
// Taskl ์ธ์คํด์ค ์์ฑ ๋ฐ ์์
์คํ
const taskl = new Taskl(options);
taskl.runTasks().catch(console.error);
// ์์ ํจ์๋ค (์ค์ ๋ก์ง์ผ๋ก ๋์ฒดํ์ธ์)
async function connectToDatabase() {
// ๋น๋๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์๋ฎฌ๋ ์ด์
return new Promise((resolve) => setTimeout(resolve, 1000));
}
async function startApiServer() {
// ๋น๋๊ธฐ ์๋ฒ ์์ ์๋ฎฌ๋ ์ด์
return new Promise((resolve) => setTimeout(resolve, 1000));
}
```
*JavaScript ์ฌ์ฉ์์ ๊ฒฝ์ฐ:*
```javascript
const { Taskl, Task, TasklOptions } = require('taskl');
// ์์
์ ์
const tasks = [
{
text: '๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ์ค',
run: async () => {
await connectToDatabase();
},
},
{
text: 'API ์๋ฒ ์์ ์ค',
run: async () => {
await startApiServer();
},
}
];
// Taskl ์ต์
์ค์
const options = {
tasks: tasks,
startMessage: '๐ ํ๋ก์ธ์ค๋ฅผ ์์ํฉ๋๋ค',
successMessage: 'ํ๋ก์ธ์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.',
failedMessage: 'ํ๋ก์ธ์ค ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.'
};
// Taskl ์ธ์คํด์ค ์์ฑ ๋ฐ ์์
์คํ
const taskl = new Taskl(options);
taskl.runTasks().catch(console.error);
// ์์ ํจ์๋ค (์ค์ ๋ก์ง์ผ๋ก ๋์ฒดํ์ธ์)
async function connectToDatabase() {
// ๋น๋๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์๋ฎฌ๋ ์ด์
return new Promise((resolve) => setTimeout(resolve, 1000));
}
async function startApiServer() {
// ๋น๋๊ธฐ ์๋ฒ ์์ ์๋ฎฌ๋ ์ด์
return new Promise((resolve) => setTimeout(resolve, 1000));
}
```
**์์ ์คํํ๊ธฐ:**
1. ํ๋ก์ ํธ์ **Taskl**์ด ์ค์น๋์ด ์๋์ง ํ์ธํ์ธ์.
2. ์์ ์ `connectToDatabase` ๋ฐ `startApiServer` ํจ์๋ฅผ ์ค์ ๋ก์ง์ผ๋ก ๊ต์ฒดํ์ธ์.
3. **TypeScript ์ฌ์ฉ์:**
- `tsc`๋ฅผ ์ฌ์ฉํ์ฌ TypeScript ํ์ผ์ ์ปดํ์ผํ๊ฑฐ๋ `ts-node`์ ๊ฐ์ TypeScript ์คํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์คํํ์ธ์.
- ์ปดํ์ผ๋ ๊ฒฝ์ฐ `node`๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ฑฐ๋, TypeScript ์คํ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ง์ ์คํํ์ธ์.
4. **JavaScript ์ฌ์ฉ์:**
- ์คํฌ๋ฆฝํธ๋ฅผ `node`๋ฅผ ์ฌ์ฉํ์ฌ ์คํํ์ธ์:
```bash
node your-script.js
```
์ฝ์์์ ์งํ ์ํฉ ํ์๊ธฐ, ์ฑ๊ณต/์คํจ ๋ฉ์์ง ๋ฐ ์ ์ฒด ์คํ ์๊ฐ์ ํฌํจํ ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค.
## ๊ธฐ์ฌ
**Taskl**์ ๋ํ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! ๋ฒ๊ทธ๋ฅผ ๋ณด๊ณ ํ๊ฑฐ๋, ๊ธฐ๋ฅ ํฅ์์ ์ ์ํ๊ฑฐ๋, ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ๋ ๋ฑ ์ฌ๋ฌ๋ถ์ ์๊ฒฌ์ ์์คํ ์ฌ๊น๋๋ค.
## ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ [LICENSE](LICENSE) ํ์ผ์ ์ฐธ์กฐํ์ธ์.
## ์ฐ๋ฝ์ฒ
์ง๋ฌธ, ์ ์ ๋๋ ํผ๋๋ฐฑ์ด ์์ผ์๋ฉด [love1ace](mailto:lovelacedud@gmail.com)์ผ๋ก ์ฐ๋ฝ ์ฃผ์ธ์.