The OpenUPM service is composed of below sub-systems:
- Public upm registry
- *Automatic build pipelines
- *Website frontend
- *Website backend (API)
- *Package curated list
- OpenUPM-CLI command-line tool
* prefix are located in the main repository.
# Directory Structure
. ├── app # service backend │ ├── db # database, Redis │ ├── jobs # background jobs │ ├── models # models │ ├── queues # job queues │ ├── utils # useful scripts │ └── views # HTTP endpoints ├── config # configurations ├── data # data │ └── packages # package curated list (YAML files) ├── docs # web frontend (vuepress) └── tests # unit tests
# Public UPM Registry
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).
# Automatic Build Pipelines
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.
|Job||Description||GitHub Reset API||GitHub GraphQL API|
|add-build-package-job||add build-pkg to the job queue.|
|fetch-package-extra||fetch package README, stars, ogimage||n||2n|
|aggregate-package-extra||aggregate package extra|
|update-recent-packages||update recent updated packages|
|fetch-site-info||fetch repo stars||1|
|update-feeds||update RSS feeds|
# Job Queue
OpenUPM uses Bee-Queue to manage the job queue.
| ||fetch repo info and create build-rel jobs for valid Git tags||0|
| ||build pkg@version via Azure Pipelines||0|
# GitHub Rate Limit
Print the rate limit status.
# Website Frontend
OpenUPM uses VuePress - a static website generator to develop website frontend.
To enable webpack bundle analyzer:
WEBPACK_BUNDLE_ANALYZER=1 yarn docs:build
# Website Backend
OpenUPM uses Express to develop website backend (API).
# Package Curated List
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:
OPENUPM_REGION=cn yarn docs:dev