הרץ את כלי המיגרציה מתוך ספריית
jasmine-migrator:bin/jasmine-upgrade ../path-to-project --applyעבור על הקבצים ובדוק את השינויים שנוצרו כדי לוודא תקינות.
מחק את התיקייה
public/jasmine-public.עדכן תלויות (Composer), הרץ מיגרציות וקשר נכסים:
composer updatephp artisan migratephp artisan jasmine:link-public-assetsפתח את הקובץ
package.json ועדכן את חבילת inertia לגרסה 3.התקן את התלויות וקמפל את הפרויקט:
pnpm ipnpm run buildעדכן את הגדרות התצורה של Inertia:
php artisan vendor:publish --provider="Inertia\ServiceProvider" --forceפתח את קובץ ההגדרות של Inertia בנתיב
config/inertia.php והחלף את הנתיב:מ:
resource_path('js/pages')ל:
resource_path('builds/default/js/Pages')עדכון טסטים
JasmineTest.phpהחלף את הטסט
can access the api בקוד הבא:test('can access the api', function () {
/** @var JasmineUser $user */
$user = JasmineUser::factory()->create(['admin' => true, 'password' => 'password']);
actingAs($user, config('jasmine.auth.guard'));
post(route('jasmine.profile.show'), [
'_sec' => 'createToken',
'password' => 'password',
'name' => 'test',
])->assertSessionHasNoErrors();
$token = session('swal.inputValue');
$response = $this->get(route('jasmine.api.info'), [
'Authorization' => 'Bearer ' . $token,
]);
$response->assertStatus(200)
->assertHeader('Content-Type', 'application/json')
->assertJsonStructure(['php', 'laravel', 'jasmine']);
});בדיקת דריסת
jLoad במודליםאם קיימת דריסה של
jLoad, בצע:- עדכן את חתימת הפונקציה (Signature).
- הוסף הגדרת סוג החזר כ-
static:. - מחק את ההערה שמעל הפונקציה.
עדכון קובץ
App\Traits\Privateable.phpהעתק והדבק את התוכן הבא:
<?php
namespace App\Traits;
use Illuminate\Database\Eloquent\Builder;
use Jasmine\Jasmine\Bread\Fields\SwitchField;
use Jasmine\Jasmine\Models\JasminePage;
trait Privateable
{
public static function bootPrivateable() {
static::addGlobalScope('privateable', function (Builder $query) {
if (request()->user(config('jasmine.auth.guard'))) return;
/** @phpstan-ignore function.alreadyNarrowedType, instanceof.alwaysFalse, function.impossibleType */
if (is_a($query->getModel(), JasminePage::class)) {
$query->where('content->' . app()->getLocale() . '->private', false);
} else $query->where('private', false);
});
}
public static function privateSwitch(): SwitchField {
$entity = strtolower(static::getSingularName());
return SwitchField::for('private')
->setDescription(__('When private only logged users can see this :entity.', ['entity' => $entity]));
}
}מחיקת ראוטים ישנים
מחק את הראוטים של
Jasmine API ו-Jasmine web:Route::prefix('jasmine')->middleware('web')->group(fn() => Jasmine::routes());
Route::prefix('jasmine')->middleware('api')->group(fn() => Jasmine::apiRoutes());הוספת קובץ
tsconfig.jsonבתיקיית
jasmine-vue, צור קובץ עם התוכן הבא:{
"compilerOptions": {
"paths": {
"@jasmine/js/components/*": ["../../vendor/jasminecms/jasmine/resources/js/components/*"],
"@jasmine/js/layouts/*": ["../../vendor/jasminecms/jasmine/resources/js/layouts/*"],
"@jasmine/js/composeables/*": ["../../vendor/jasminecms/jasmine/resources/js/composeables/*"],
"@jasmine/js/directives/*": ["../../vendor/jasminecms/jasmine/resources/js/directives/*"],
"@jasmine/js/lib/*": ["../../vendor/jasminecms/jasmine/resources/js/lib/*"],
"@jasmine/js/utils": ["../../vendor/jasminecms/jasmine/resources/js/utils.ts"],
"vue": ["../../node_modules/vue"],
"@inertiajs/vue3": ["../../node_modules/@inertiajs/vue3"]
}
},
"include": ["**/*.ts", "**/*.d.ts", "**/*.vue"],
"exclude": ["node_modules"]
}עדכון רכיב Vue
resources/jasmine-vue/Embedded.vueעדכן את התוכן לקוד הבא:
<template>
<Head :title="title" />
<AppLayout>
<iframe :src="url" width="100%" height="775" frameborder="0" />
</AppLayout>
</template>
<script setup>
import {Head} from '@inertiajs/vue3';
import AppLayout from '@jasmine/js/layouts/AppLayout.vue';
defineProps({
title: {type: String, required: true},
url: {type: String, required: true},
});
</script>בצע את בדיקות התקינות לפני העלאה:
ניקוי מטמון ואופטימיזציות
לפני הרצת הטסטים מומלץ להריץ:
php artisan optimize:clearהרצת הטסטים
הרץ את הטסטים ובדוק שכולם עוברים בהצלחה:
php artisan test --coverageאימות סף כיסוי הטסטים
פתח את
attempt-updates.yml ובדוק שהערך של --min בשורה הבאה תואם לאחוז כיסוי הטסטים שקיבלת:run: php artisan test --coverage --min=הערךניתוח סטטי
הרץ:
composer analyseאם מתקבלות שגיאות, תקן אותן לפני שממשיכים.
עיצוב קוד
הרץ:
composer formatpnpm run formatבניית צד לקוח
הרץ:
pnpm run buildלאחר דחיפת השינויים ל-Git, הרץ בשרת:
משיכת העדכונים
git pullעריכת משתני סביבה במידת הצורך
nano .envעדכון תלויות וניקוי
composer updaterm -rf public/jasmine-publicאופטימיזציה וקישור נכסים
php artisan optimizephp artisan jasmine:linkphp artisan migrateבניית צד לקוח
pnpm ipnpm run buildאו
pnpm run prod