Angular، بیلد شده و سبک
وجود angular.json و @angular/core یعنی پروژه Angular است. خروجی ng build از نسخهی 17 به بعد در dist/<نام پروژه>/browser قرار میگیرد؛ همین پوشه با nginx سرو میشود.
برای Angular Router حالت SPA را روشن کنید تا رفرش مسیرهای داخلی به index.html برگردد.
مناسب برای
- اپ سازمانی و پنلهای بزرگ
- سامانههای داخلی با Angular Router
- رابط کاربری جدا از API
- داشبورد با Angular Material
مسیر بیلد Angular
تشخیص
angular.jsonو@angular/coreدر ریشه.angular.jsonنصب و بیلد
وابستگیها نصب و بیلد production اجرا میشود.
ng buildبستهبندی
پوشهی browser در ایمیج nginx قرار میگیرد.
dist/my-app/browserسرو
nginx فایلها را روی پورت 80 سرو میکند.
nginx :80
خروجی یک استقرار واقعی
sakoocloud deploy ✔ Packed 2.7MB ✔ 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/my-app/browser /usr/share/nginx/html #12 exporting to image ✔ Deployed — app is running. → https://my-angular.sakooapps.ir
تنظیم پروژه
مسیر خروجی را دقیق بنویسید؛ نام پروژه همان است که در angular.json آمده.
{
"runtime": "angular",
"outputDir": "dist/my-app/browser",
"spa": true
}
sakoocloud apps create --name my-angular --runtime angular --port 80
sakoocloud deploy
تنظیمات
پوشهی خروجی
| نسخهی Angular | outputDir |
|---|---|
| 17 و بالاتر | dist/<project>/browser |
| 16 و پایینتر | dist/<project> |
پکیجمنیجر
ابزار از روی لاکفایل انتخاب میشود و نصب همیشه دقیقاً همان نسخههای قفلشده را میگیرد.
| لاکفایل | ابزار | دستور نصب |
|---|---|---|
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/my-app/browser",
"spa": true
}
صفحهی سفید یا فایلها پیدا نمیشوند
علتoutputDir به dist/<project> اشاره میکند ولی Angular جدید خروجی را در زیرپوشهی browser میریزد.
راهحل/browser را به انتهای outputDir اضافه کنید.
بیلد با خطای حافظه متوقف میشود
علتبیلد پروژههای بزرگ Angular حافظهی زیادی میگیرد.
راهحلحافظه را بیشتر کنید یا مصرف برنامه را پایین بیاورید.
sakoocloud apps scale --memory 1Gi
پرسشهای متداول
Angular SSR پشتیبانی میشود؟
این رانتایم برای خروجی تکصفحهای است. برای Angular SSR از رانتایم Node.js با اسکریپت start سرور SSR استفاده کنید.
کدام نسخههای Node.js برای بیلد استفاده میشوند؟
Node.js 20، 22 و 24؛ نسخه را در .nvmrc یا engines اعلام کنید.
environment.prod.ts کجا خوانده میشود؟
در زمان بیلد. مقادیرش داخل باندل قرار میگیرد، پس رمز و کلید محرمانه در آن نگذارید.
جزئیات بیشتر در راهنمای Angular در مستندات و مرجع CLI.