# 环境变量与地图绑定 Q&A

> 本文补充说明：为什么推荐先执行 `apc list` 拉取地图列表，再用 `apc set` 绑定到当前项目。

## 1. 为什么要先 `apc list`，再 `apc set`？

**问：为什么不能直接 `apc set 100005475`，而是推荐先跑一遍 `apc list`？**

**答：可以理解为两个命令分工不同：**

- `apc list` 负责「从神岛拉取最新的扩展地图列表，并写入本地全局缓存」。
- `apc set` 负责「从本地全局缓存中按 ID 取出一张地图，并把它的信息写入当前项目的 `.env`」。

因此推荐先 `apc list` 再 `apc set`，主要有几点原因：

### 1.1 给 `apc set` 提供数据来源

- `apc set` 不会自己再去请求接口，而是直接读本地的「地图缓存」。
- 这个缓存由 `apc list` 写入；如果从未执行过 `apc list`，本地没有数据，`apc set` 就不知道这个 ID 对应哪张地图，会提示你先刷新列表。

### 1.2 避免手输 ID 选错地图

- `apc list` 会展示最近的扩展地图列表：名称、ID、发布时间 / 更新时间、发布状态、是否有协作等。
- 你可以先在列表里确认是哪一张地图，再复制它的 ID 去执行 `apc set <ID>`，比凭记忆手输更安全。

### 1.3 适配多模式 / 多人协作场景

- 一次 `apc list` 拉回来的数据会写入全局缓存，后续可以在不同工程、不同 `.env` 模式下复用：
  - `apc set 100005475` 写入 `.env`
  - `apc set 100005475 --env dev` 写入 `.env.dev`
- 团队协作时，每个人可以先各自执行 `apc list`，确认自己账号下的地图列表，再统一用约定的 ID 做 `apc set`，避免把项目误绑定到错误的地图上。
