[Angular] Upgrade existing Angular app to Progressive Web App
If you alread have an existing Angular application and want to upgrade to progressive web app.
1. Install @angular/service-worker:
npm i --save @angular/service-worker
2. Create a file: src/ngsw-config.json
{ "index": "./index.html", "assetGroups": [ { "name": "app", "installMode": "prefetch", "resources": { "files": [ "/favicon.ico", "/index.html" ], "versionedFiles": [ "/*.bundle.css", "/*.bundle.js", "/*.chunk.js" ] } }, { "name": "assets", "installMode": "lazy", "updateMode": "prefetch", "resources": { "files": [ "/assets/**" ] } } ] }
3. Create a src/manifest.json file:
{ "dir": "ltr", "lang": "en", "name": "Application Name", "scope": "/", "display": "fullscreen", "start_url": "http://localhost:8000/", "short_name": "Application name", "theme_color": "transparent", "description": "All about your app", "orientation": "any", "background_color": "transparent", "related_applications": [], "prefer_related_applications": false, "icons": [ { "src": "/favicon.ico", "sizes": "16x16 32x32" }, { "src": "/assets/android-icon-36x36.png", "sizes": "36x36", "type": "image/png", "density": "0.75" }, { "src": "/assets/android-icon-48x48.png", "sizes": "48x48", "type": "image.png", "density": "1.0" }, { "src": "/assets/android-icon-72x72.png", "sizes": "72x72", "type": "image/png", "density": "1.5" }, { "src": "/assets/android-icon-96x96.png", "sizes": "96x96", "type": "image/png", "density": "2.0" }, { "src": "/assets/android-icon-144x144.png", "sizes": "144x144", "type": "image/png", "density": "3.0" }, { "src": "/assets/android-icon-192x192.png", "sizes": "192x192", "type": "image/png", "density": "4.0" } ] }
4. Update .angular-cli.json file:
{ "apps": [ { "root": "src", ... "environments": { "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" }, "serviceWorker": true } }
5. Import ServiceWorkerModule in app.module.ts file:
import {ServiceWorkerModule} from '@angular/service-worker'; @NgModule({ declarations: [ AppComponent ], imports: [ ... ServiceWorkerModule.register('/ngsw-worker.js', {enabled: environment.production}) ], ... bootstrap: [AppComponent] }) export class AppModule { }
'ngsw-worker.js' will be created in dist folder after we build the application in production mode.
6. Run:
ng build --prod
7. cd to dist folder, run in local server.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-04-18 [Typescript] Generics using TypeScript
2017-04-18 [Linux] Use find to search for filename patterns
2017-04-18 [Git] How to rename your remote branch
2017-04-18 [Django] ModelViewSet from rest_framework and Router
2017-04-18 [Node.js] Take Screenshots of Multiple Dimensions for Responsive Sites using Nightmare
2017-04-18 [Webpack] Access Webpack Dev Server from Mobile Safari on an iPhone
2016-04-18 [Angular 2] Router basic and Router Params