Skip to content

02 - 快速开始 ​

环境准备 ​

Node 版本 ​

项目要求 Node.js 16.16.0(见 package.json 的 engines 字段和 Dockerfile 基础镜像)。

bash
# 推荐使用 nvm 管理
nvm install 16.16.0
nvm use 16.16.0

# 验证
node -v  # 应输出 v16.16.0

其他依赖 ​

  • npm(随 Node 安装)
  • 微信开发者工具(微信小程序调试用)
  • Chrome/Edge(H5 调试用)

安装 ​

bash
# 克隆代码后
cd ecshopx-vshop

# 安装依赖(配置了 npmmirror + shopex 私有 registry)
npm ci

npm ci 严格按照 package-lock.json 安装,确保版本一致。首次安装或无 lock 文件时使用 npm install。

npm registry 配置 ​

项目 .npmrc 配置了:

  • 淘宝镜像 registry.npmmirror.com 加速公共包
  • shopex 私有 registry reg.ishopex.cn 获取内部包

环境变量配置 ​

.env 文件结构 ​

项目根目录有 .env(默认模板)和 .env.local(本地覆盖,不提交 Git)。

.env 定义了所有需要的环境变量名(值为空,等待覆盖):

bash
APP_BASE_URL=           # 后端 API 地址
APP_WEBSOCKET=          # WebSocket 地址
APP_COMPANY_ID=         # 企业/租户 ID
APP_PLATFORM=           # 产品版本 (standard/platform)
APP_CUSTOM_SERVER=      # 自定义 H5 服务地址
APP_HOME_PAGE=          # 首页路径
APP_TRACK=              # 埋点类型
APP_ID=                 # 微信小程序 AppID
APP_MAP_KEY=            # 地图 Key
APP_MAP_NAME=          # 地图名称
APP_IMAGE_CDN=         # 图片 CDN
APP_DIANWU_URL=        # 店务端 URL
APP_MERCHANT_URL=      # 商家入驻 URL
APP_ADAPAY=            # Adapay 支付开关
APP_LIVE=              # 直播开关
APP_DEFAULT_LANGUAGE=  # 默认语言

本地开发配置 ​

复制 .env 为 .env.local,填入实际值:

bash
cp .env .env.local

编辑 .env.local:

bash
APP_BASE_URL=https://your-api.example.com
APP_WEBSOCKET=wss://your-api.example.com/ws
APP_COMPANY_ID=38
APP_PLATFORM=standard
APP_ID=wx1234567890abcdef
APP_MAP_KEY=YOUR_MAP_KEY
APP_DEFAULT_LANGUAGE=zhcn

.env.local 不提交 Git,仅本地使用。

多客户配置 ​

scripts/run.sh 提供交互式多客户构建:

bash
# 交互式选择客户
bash scripts/run.sh

# 直接指定参数
bash scripts/run.sh "wxappid" "https://api.example.com" "AppName" ...

客户配置存储在 scripts/companys.conf,按 [section] 分区块,每个客户一个配置。

本地调试 ​

微信小程序调试 ​

bash
# 启动微信小程序开发模式(watch)
npm run dev:weapp

构建产物输出到 dist/weapp/,用微信开发者工具打开该目录即可调试。

关键配置项:

  • AppID:使用 .env.local 中的 APP_ID,或微信开发者工具中切换
  • ext 配置:微信通过 ext.json 注入 company_id 等参数,见 src/utils/index.js 中的 getExtConfigData()

H5 调试 ​

bash
# 启动 H5 开发服务器
npm run dev:h5

H5 dev server 默认运行在 http://localhost:10086(Taro 默认端口)。

company_id 自动提取:H5 环境下,req.js 会从域名自动提取 company_id(如 m38.shopex123.com → 38)。本地调试用 localhost 时需要手动设置。

i18n 调试模式 ​

bash
# 微信小程序 + i18n
npm run dev:weapp:i18n

# H5 + i18n
npm run dev:h5:i18n

i18n 模式下,非默认语言包通过分包异步加载,便于调试多语言。

构建命令 ​

完整构建命令列表 ​

命令说明
npm run build:weapp构建微信小程序
npm run build:weapp:live构建微信小程序(带直播)
npm run build:h5构建 H5
npm run dev:weapp微信小程序 watch 模式
npm run dev:h5H5 watch 模式
npm run dev:weapp:i18n微信小程序 i18n 调试模式
npm run dev:h5:i18nH5 i18n 调试模式
npm run commitCommitizen 交互式提交

本项目开发和发布只使用 weapp 与 h5 构建命令。

构建产物 ​

平台输出目录
微信小程序dist/weapp/
H5dist/h5/

输出目录由 config/index.js 的 DIST_PATH = dist/${process.env.TARO_ENV} 决定。

Docker 构建 ​

标准 Docker 构建 ​

bash
docker build \
  --build-arg CMD="npm run build:h5" \
  --build-arg APP_BASE_URL="https://api.example.com" \
  --build-arg APP_COMPANY_ID="38" \
  --build-arg APP_PLATFORM="standard" \
  --build-arg APP_ID="wx1234567890" \
  ...
  -t ecshopx-vshop:h5 .

Dockerfile 是多阶段构建:

  1. Builder 阶段:Node 16 + Python3 Alpine 镜像,npm ci + 构建
  2. Runtime 阶段:steebchen/nginx-spa Nginx 镜像,部署 H5 产物

常见问题 ​

1. npm install 失败 ​

检查 .npmrc 配置,确保能访问 reg.ishopex.cn 私有 registry。公司网络外可能需要 VPN。

2. 微信小程序编译报错 ​

确保使用 Node 16.16.0。更高版本的 Node 可能导致 Taro 3.6.x 兼容问题。

3. H5 调试时 company_id 不正确 ​

本地 localhost 域名无法自动提取 company_id。在 .env.local 中显式设置 APP_COMPANY_ID。

4. 语言包未加载 ​

确保使用 dev:*:i18n 模式调试多语言。默认 dev 模式下,非默认语言包可能不会正确加载。

5. 样式在 H5 和小程序不一致 ​

检查 config/index.js 的 sass.resource 配置:weapp 使用 weapp-mixins.scss,h5 使用 h5-mixins.scss。确保条件编译正确。

下一步 ​