Vue بدون سرور در زمان اجرا
Vite و Vue CLI هر دو خروجی را در dist میریزند. سکو کلود پروژه را بیلد میکند و همین پوشه را با nginx سرو میکند؛ اپ سبک میماند و هزینهی منابع زمان اجرا تقریباً صفر است.
با history mode در Vue Router، رفرش روی هر مسیر داخلی به سرور میرسد. حالت SPA در sakoocloud.json همهی مسیرهای ناشناخته را به index.html برمیگرداند.
مناسب برای
- پنل مدیریت با Vue Router
- داشبورد و ابزار داخلی
- رابط کاربری جدا از API
- اپ Vite با Pinia
مسیر بیلد Vue
تشخیص
vueدر وابستگیها، اسکریپتbuildو لاکفایل.package.jsonنصب و بیلد
وابستگیها نصب و اسکریپت build اجرا میشود.
npm run buildبستهبندی
پوشهی
distدر ایمیج nginx قرار میگیرد.dist → nginxسرو
nginx فایلها را روی پورت 80 سرو میکند.
nginx :80
خروجی یک استقرار واقعی
sakoocloud deploy ✔ Packed 0.8MB ✔ Source uploaded ℹ Build started · dep_7k2m9q #4 [builder 1/5] FROM node:22-alpine #6 [builder 3/5] RUN npm ci #8 [builder 4/5] RUN npm run build #10 [stage-1 2/2] COPY dist /usr/share/nginx/html #12 exporting to image ✔ Deployed — app is running. → https://my-vue.sakooapps.ir
تنظیم پروژه
برای Vue Router در حالت history، SPA را روشن کنید.
{
"runtime": "vue",
"outputDir": "dist",
"spa": true
}
sakoocloud apps create --name my-vue --runtime vue --port 80
sakoocloud deploy
تنظیمات
متغیرهای محیطی در Vue
این مقادیر در زمان بیلد داخل باندل قرار میگیرند؛ آنها را با sakoocloud env set --build-time تعریف کنید.
| ابزار | پیشوند |
|---|---|
| Vite | VITE_ |
| Vue CLI | VUE_APP_ |
پکیجمنیجر
ابزار از روی لاکفایل انتخاب میشود و نصب همیشه دقیقاً همان نسخههای قفلشده را میگیرد.
| لاکفایل | ابزار | دستور نصب |
|---|---|---|
package-lock.json | npm | npm ci |
yarn.lock | yarn | yarn install --frozen-lockfile |
pnpm-lock.yaml | pnpm | pnpm install --frozen-lockfile |
همراه هر استقرار
اینها به رانتایم بستگی ندارند و برای هر اپ روی سکو کلود فعالاند. بعضی، مثل مقیاسدهی خودکار و کرانجاب، به پلن بستگی دارند.
- دامنهی اختصاصی و SSLدامنه را اضافه کنید؛ گواهی خودکار صادر و تمدید میشود.
- متغیرهای محیطی و سکرتمقادیر رمزگذاریشده فقط در زمان اجرا به اپ میرسند.
- مرحلهی انتشارmigration بعد از بیلد و پیش از جایگزینی نسخهی قبلی اجرا میشود.
- لاگ زندهلاگ بیلد و زمان اجرا، در CLI و کنسول.
- بازگشت به نسخهی قبلهر استقرار قبلی با یک دستور برمیگردد.
- مقیاسدهیمنابع و تعداد نمونهها را تغییر دهید یا خودکارش کنید.
- دیسک ماندگاربرای فایلهایی که باید بعد از هر استقرار بمانند.
- کرانجابدستور زمانبندیشده با همان ایمیج و متغیرها.
- استقرار خودکار با گیتهر push روی شاخهی هدف بیلد و مستقر میشود.
خطاهای رایج
با رفرش یک مسیر داخلی، ۴۰۴ برمیگردد
علتمسیرهایی مثل /dashboard فایل واقعی ندارند و روتر سمت مرورگر آنها را میسازد.
راهحلدر sakoocloud.json حالت SPA را روشن کنید تا مسیرهای ناشناخته به index.html برگردند.
{
"outputDir": "dist",
"spa": true
}
صفحهی سفید بعد از استقرار
علتbase در vite.config یا publicPath در Vue CLI مسیر اشتباه دارد.
راهحلمقدار را / بگذارید.
فایلها سرو نمیشوند
علتoutputDir با پوشهی خروجی یکی نیست.
راهحلoutputDir را dist بگذارید.
بیلد با خطای حافظه متوقف میشود
علتبیلد پروژههای بزرگ در حافظهی پیشفرض جا نمیشود.
راهحلحافظه را بیشتر کنید یا مصرف برنامه را پایین بیاورید.
sakoocloud apps scale --memory 1Gi
پرسشهای متداول
Nuxt بهتر است یا Vue ساده؟
اگر رندر سمت سرور یا سئو مهم است Nuxt را انتخاب کنید؛ برای پنل و اپ داخلی، Vue ساده سبکتر است.
Vue 2 هم پشتیبانی میشود؟
بله، تا وقتی اسکریپت build خروجی استاتیک بسازد، نسخهی Vue مهم نیست.
API پشت اپ Vue را کجا مستقر کنم؟
در یک اپ جدا، و آدرسش را با متغیر VITE_ به رابط کاربری بدهید.
جزئیات بیشتر در راهنمای Vue.js در مستندات و مرجع CLI.