Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 months 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 (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-27T10:03:02.000Z (4 months ago)
- Last Synced: 2024-10-31T19:37:01.249Z (3 months 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 ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ก๊ทธ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค.
![npm](https://img.shields.io/npm/v/taskl)
![license](https://img.shields.io/npm/l/taskl)![taskl](./taskl.gif)
## ์ค์น
์ํ๋ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ **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:[email protected])์ผ๋ก ์ฐ๋ฝ ์ฃผ์ธ์.