Skip to content

可选:私有 npm 部署 ​

SDK 是浏览器依赖,不需要为 SDK 单独运行地图后端。部署包括三部分:私有 npm registry、宿主应用静态文件、文档静态站。 地图瓦片仍由已授权的天地图或自有 XYZ/WMTS 服务提供;Verdaccio 不缓存地图瓦片。

私有 npm ​

仓库 deploy/README.md 提供服务器逐步操作说明。文件如下:

text
deploy/
├── compose.yaml
├── .env.example
├── .npmrc.example
├── verdaccio/config.yaml
└── nginx/registry.conf.template

采用 Verdaccio 6,完整存储挂载到命名卷 shardx-map-registry-storage,其中包含包、内部数据库/密钥及 htpasswd。 后端仅绑定主机回环 127.0.0.1:4873,外部通过 Nginx 的 443 HTTPS 访问。

包模式读取发布撤包上游
@shardx-map/*匿名允许认证账户禁止不配置,防止私有命名空间回源
其他包匿名允许禁止禁止https://registry.npmjs.org/

这意味着 SDK 可被任何能访问 registry 的人读取,不是“保密包”。需要保密时由网络边界或读取策略控制。 所有注册账户都是作用域发布者,自助注册始终关闭,由管理员离线添加 bcrypt 账户。 不要临时打开匿名发布或把 htpasswd/token 提交到仓库。

服务器操作顺序 ​

  1. 配置 DNS、80/443 防火墙与证书链;在 deploy 复制 .env.example 为 .env 并填写域名。
  2. 将 TLS 证书放入 deploy/secrets/tls/fullchain.pem,私钥放入 privkey.pem,限制权限。
  3. 根据 deploy/README.md 初始化存储卷并交互式创建发布账户。自定义卷名时同步修改账户工具的挂载目标。
  4. 执行 docker compose config --quiet、docker compose up -d,再从外部验证证书、ping、匿名读取、认证发布权限。
  5. 记录已测试的镜像 digest、运维联系人、备份与续期方式,完成验收。

模板中的 verdaccio:6 和 nginx:stable-alpine 是可移动标签,生产使用应锁定经过测试的补丁版本/digest。 模板不会申请/续期证书;80 端口默认全部重定向,不含 ACME HTTP challenge。 私钥变更后测试并 reload Nginx。不要用禁用 SSL 校验解决证书错误。

消费方配置 ​

ini
registry=https://registry.npmjs.org/
@shardx-map:registry=https://npm.company.example/
strict-ssl=true

匿名安装无需 token。发布者执行:

sh
npm login --auth-type=legacy --registry=https://npm.company.example/
npm whoami --registry=https://npm.company.example/

CI token 从秘密管理器注入,只写临时用户级 npm 配置,认证项必须绑定实际 registry 主机。 不要把 token 放在 .npmrc.example、VITE_* 或 URL 中。 默认配置让其他包直连 npm;若团队要统一缓存,可显式将默认 registry 改为此域名。

文档站与宿主应用 ​

在依赖已安装的仓库根目录运行:

sh
npm run dev -w @shardx-map/docs
npm run build -w @shardx-map/docs
npm run preview -w @shardx-map/docs

使用仓库根目录的 lockfile 安装依赖,保留主作者维护的依赖安全 overrides;不要在文档 workspace 单独解析另一套依赖。 生产仅发布 apps/docs/.vitepress/dist,不用 preview 服务器作为公网长期服务。 启用了 clean URLs,静态服务器应按 $uri、$uri.html、$uri/ 查找文件,未命中返回站点 404,不能全站回退首页。

文档部署在子路径时通过 DOCS_BASE 构建:

sh
# Linux / macOS
DOCS_BASE=/shardx-map/ npm run build -w @shardx-map/docs
powershell
# PowerShell
$env:DOCS_BASE = '/shardx-map/'
npm run build -w @shardx-map/docs
Remove-Item Env:DOCS_BASE

DOCS_BASE 须以 / 开始和结尾;静态服务器需在对应前缀下托管输出目录。 宿主 Vite 应用则单独构建其静态文件与 Cesium 资源,检查应用 base、资源根路径、MIME 和缓存策略,见资源部署。 文档站配置不修改 SDK/example,也不会替它们复制资源。

0.1.0 · Cesium peer >=1.146.0 <1.147.0 · 外部部署验收单独记录