This page may include outdated information.
The OpenUPM service is composed of below sub-systems:
- Public upm registry
- *Automatic build pipelines
- *Website next
- *Website backend (API)
- *Package curated list
- OpenUPM-CLI command-line tool
* prefix are located in the main repository.
├── src # backend
│ ├── node # node.js server
│ ├── shared # shared code between node and client
├── data # linked data folder
├── docs # website frontend (vuepress)
└── test # unit tests
OpenUPM uses a custom verdaccio to host the registry. Though verdaccio is the most popular open-source project to set up a private npm registry, most deployments served a very limited user base or for the testing purpose that doesn't care about performance much. OpenUPM try to solve quite a few issues related to the cluster deployment. Before these PRs get merged, OpenUPM will stay with the custom build:
- S3 storage with CDN #250
- Stateless s3 storage for cluster deployment #1595, #1459
npm publish -fand
npm unpublishreturn 404
- Wrong timestamp for old search API
Since OpenUPM has it's own way to organize the package list, the verdaccio website and API endpoints are disabled (headless mode).
OpenUPM watches the package curated list regularly detects new contents and uses the job queue to build packages through Azure Pipelines.
OpenUPM uses pm2 cron feature to run cronjobs.
|GitHub Reset API
|GitHub GraphQL API
|add build-pkg to the job queue.
|fetch package README, stars, ogimage
|aggregate package extra
|update recent updated packages
|fetch repo stars
|update RSS feeds
OpenUPM uses Bee-Queue to manage the job queue.
|fetch repo info and create build-rel jobs for valid Git tags
|build pkg@version via Azure Pipelines
Print the rate limit status.
OpenUPM uses VuePress - a static website generator to develop website next.
To enable webpack bundle analyzer:
WEBPACK_BUNDLE_ANALYZER=1 yarn docs:build
OpenUPM uses Express to develop website backend (API).
OpenUPM uses git as a database to maintain the package curated list. Each package is described as a YAML file.
The website supports two regions with different configurations:
The documentation level translations are located at
The component level translations are located at
docs/.vuepress/locales. i18n-ally is powerful i18n extensions for VS Code to edit locale files.
To develop the CN region:
VITE_OPENUPM_REGION=cn npm run docs:dev