من از تکرار همان دستورات خسته شدم ، بنابراین Jido را ساختم – یک اتوماسیون گردش کار CLI

به عنوان یک توسعه دهنده ، ممکن است لحظاتی داشته باشید که خود را به طور مکرر همان دسته از دستورات را اجرا کنید. به عنوان مثال ، دست انداز package.json
هر زمان که می خواهید نسخه جدیدی از بسته NPM خود را ارسال کنید ، نسخه ، فشار به git و انتشار به NPM.
من با همان مسئله روبرو شدم. و با توجه به اینکه مغز من چقدر تنبل است ، می خواستم این کار را ساده تر و ساده تر کنم. بنابراین ، من جیدو را ساختم.
جیدو چیست؟
Jido یک اتوماسیون گردش کار CLI است ، جایی که می توانید گردش کار خود را تعریف کنید (نامیده می شود flows
) در یک فایل پیکربندی ، و آنها را با استفاده از آن اجرا کنید npx jido flow
بشر
پرونده پیکربندی یک است jido.config.js
در ریشه پروژه بنابراین ، منطق JS سفارشی نیز بر خلاف اسکریپت های Bash قابل اجرا است.
شروع با jido
با دویدن:
npm install --save-dev jido
پرونده پیکربندی
در jido.config.js
تماس با پرونده jido()
عملکرد و صادر کردن آن به طور پیش فرض. این یک شی را به عنوان آرگومان می گیرد ، که دارای کلید است flows
که دارای مجموعه ای از اشیاء است ، هر شیء تعریف می کند flow
بشر
هر flow
HAS:
-
name
: نام جریان -
description
(اختیاری): توضیحات کوتاه در مورد جریان -
steps
: آرایه ای از اشیا
هر یک step
از شکل زیر است:
-
run
: دستور اجرا در این مرحله (به عنوان مثال ، ‘npm run dev’ یا ‘git push’ و غیره). -
onStart, onSuccess, onFailure
: قلاب های اختیاری. اینها کارکردهایی هستند که در شروع ، موفقیت و عدم موفقیت مرحله فراخوانده می شوند. -
plugins
: مجموعه ای از اشیاء ، که در آن هر شیء یک افزونه است. مدتی در مورد این موضوع بیشتر صحبت خواهیم کرد.
برای داربست یک فایل پیکربندی اساسی ، اجرا کنید npx jido init
بشر این پرونده پیکربندی زیر را تولید می کند:
import { jido } from "jido";
/*
* Define your workflows here.
* Each flow is a series of steps with commands to run and optional hooks (onStart, onSuccess, etc) to execute.
*/
const config = {
flows: [
{
name: "run",
description: "Run the project",
steps: [
{
run: "npm install",
onStart: () => console.log("Installing dependencies..."),
onSuccess: () => console.log("Dependencies installed!"),
plugins: [] // Any plugins go here
},
{
run: "npm run dev",
onStart: () => console.log("Starting dev server..."),
plugins: [] // Any plugins go here
}
]
}
]
}
export default jido(config);
پلاگین
اکنون ، یکی دیگر از قسمت های جالب دیگر جیدو. افزونه ها یک افزونه در اصل یک موضوع از نوع زیر است:
type Plugin = {
onStart?: Hook;
onSuccess?: Hook;
onFailure?: Hook;
};
در اصل ، این یک شی با هر یا همه این قلاب ها است که به آن وصل شده اند step
جایی که افزونه به آن وصل شده است.
با این حال ، روش توصیه شده برای نوشتن افزونه نوشتن آن در تابعی است که یک شی از نوع فوق را برمی گرداند. این امر در قابلیت های سفارشی و وابسته به استدلال یک افزونه امکان پذیر است.
به عنوان مثال:
// Plugin function
const myPlugin = (name) => {
return ({
onStart: () => {
console.log(`[myPlugin] Hello, ${name}! Step started...`);
}
});
}
// In a step in the config file:
plugins: [myPlugin("aether-flux")]
// In another step:
plugins: [myPlugin("John Doe")]
حالا ، از کجا از جیدو استفاده می کنید؟
خوب ، یکی از موارد استفاده هنگام انتشار نسخه جدیدی از بسته به NPM یا هر جای دیگر است. به همین دلیل حتی فکر کردم این CLI را بسازم.
بسیاری از برنامه های دیگر نیز وجود دارد. به عنوان مثال:
- پس از ساخت موفقیت آمیز به Vercel اعزام شوید.
- قبل از آزمایش ، حالت پروژه را تمیز کنید.
- Dev محلی را با ورود به سیستم سفارشی و/یا ردیابی تحلیلی اجرا کنید.
- تیم هشدار (Slack ، Discord و غیره) پس از ساخت و استقرار موفق.
و در هر جای دیگر ، واقعاً ، جایی که خود را بارها و بارها انجام می دهید.
خوب ، نظر شما چیست؟
من امیدوارم که Jido بتواند کارهای تکراری را برای بسیاری از شیاطین در آنجا ساده کند ، بنابراین به آنها اجازه می دهد تا به جای اینکه وقت زیادی را صرف فشار به GitHub و ساخت و استقرار و استفاده از آن کنند ، بیشتر روی قسمت سرگرم کننده (با نام “کدگذاری”) تمرکز کنند.
یک بار در گردش کار خود به آن فرصت دهید. من مطمئن هستم که این شگفتی ها کار می کند.
BTW ، انتشار هر نسخه جدید Jido توسط jido
بشر