ماژولها
ساخت و نصب پکیجهای کتابخانهای قابل انتشار Fusion
Overview
ماژولهای Fusion پکیجهای کتابخانهای قابل انتشار هستند — نه پلاگین route. یک پکیج معمولی مینویسید (Python، TypeScript یا Rust)، روی GitHub میگذارید، بعد با CLI داخل اپ Fusion نصب میکنید. از آن به بعد مثل هر dependency دیگری import میکنید.
flowchart LR
init["fusion module init"] --> pkg["ریپوی پکیج"]
pkg --> gh["GitHub"]
gh --> add["fusion add --github"]
add --> app["اپ Fusion"]
app --> import["import پکیج"]نامگذاری پیشنهادی
این الگو پیشنهادی است، اجباری نیست. میتوانید در fusion.module.toml عوضش کنید.
| Host | الگو | مثال (--name jwt) |
|---|---|---|
| Python | fusion_<name>_mod | fusion_jwt_mod → from fusion_jwt_mod import ... |
| npm / TypeScript | fusion-<name>-mod | fusion-jwt-mod → import { ... } from "fusion-jwt-mod" |
پیشفرض ریپو / پوشه: fusion-<name>-mod.
ساخت ماژول
fusion module initدر حالت تعاملی اینها پرسیده میشود:
- زبان پیادهسازی — Python، TypeScript یا Rust
- نام ماژول (id)
- توضیحات
- پوشهٔ خروجی (پیشفرض
fusion-<id>-mod)
غیرتعاملی:
fusion module init --lang python --name example --description "اولین ماژول من"
fusion module init --lang rust --name auth --description "ابزار احراز هویت" ./fusion-auth-modزبانها
| زبان | خروجی |
|---|---|
| Python | پکیج خالص پایتون در python/fusion_<name>_mod/ |
| TypeScript | پکیج npm با js/ و src/ |
| Rust | هستهٔ Rust مشترک + بایندینگ اختیاری PyO3 و N-API برای هدفگیری همزمان Python و TypeScript |
Rust وقتی مفید است که یک هستهٔ native برای همهٔ hostها بخواهید.
ساختار اسکفولد (Python)
fusion-example-mod/
├── fusion.module.toml
├── pyproject.toml
├── README.md
└── python/
└── fusion_example_mod/
├── __init__.py
└── hello.pyاسکفولد یک hello() نمونه دارد. آن را با API خودتان عوض کنید.
Manifest
هر ماژول فایل fusion.module.toml دارد:
[module]
id = "example"
name = "example"
version = "0.1.0"
description = "اولین ماژول من"
[module.impl]
language = "python"
[module.targets]
python = true
typescript = false
[module.entry]
python = "fusion_example_mod"
[module.build]
python = "pip install -e ."entry— نام پکیج برای import (یا نام npm برای TypeScript)build— دستورهایی کهfusion addبعد از دانلود اجرا میکندtargets— زبانهای host که ماژول پشتیبانی میکند
انتشار
- پکیج را پیاده کنید
- روی GitHub push کنید
- داخل اپ Fusion دستور
fusion addرا بزنید
نصب داخل اپ
از پروژهای که fusion-framework.toml دارد:
fusion add --github OWNER/fusion-example-mod
fusion add --github OWNER/fusion-example-mod@v1.0.0
fusion add --github https://github.com/OWNER/fusion-example-modCLI این کارها را میکند:
- دانلود ریپو
- اعتبارسنجی
fusion.module.toml - کپی به
.fusion/modules/<id>/ - اجرای build / install (
pip install -e .،maturinیاnpm) - ثبت در
fusion-framework.tomlزیر[[modules]] - برای hostهای TypeScript، لینک در
package.json
استفاده در اپ
Python:
from fusion_example_mod import hello
print(hello("world"))TypeScript:
import { hello } from "fusion-example-mod";
console.log(hello("world"));توابع را از routeها، سرویسها یا هر جای دیگر اپ صدا بزنید — ماژولها کتابخانهٔ معمولی هستند.