Skip to content

Commit 4c0169f

Browse files
committed
refactor: move config logic from vite plugin to vcap cli
1 parent babc8e8 commit 4c0169f

File tree

6 files changed

+257
-103
lines changed

6 files changed

+257
-103
lines changed

README.md

Lines changed: 39 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,72 @@
11
# vite-capacitor
22

3-
[![npm version](https://img.shields.io/npm/v/vite-capacitor.svg)](https://www.npmjs.com/package/vite-capacitor)
4-
[![license](https://img.shields.io/github/license/author/library.svg)](./LICENSE)
3+
**vite-capacitor** 是一个零配置的 Capacitor 增强工具,它能自动将你的 Vite 运行环境(开发服务器 IP 或构建目录)同步到原生工程中。
54

6-
🚀 **自动同步 Vite 开发服务器环境到 Capacitor 配置。**
5+
## ✨ 为什么使用它?
76

8-
在进行 Capacitor 真机调试时,手动查找本机局域网 IP 并修改 `server.url` 非常繁琐。本插件通过自动化这一过程,实现了“启动即调试”的移动端开发体验。
7+
Capacitor 开发需要手动修改 `capacitor.config.ts` 中的 `server.url` 来进行真机调试。**vite-capacitor** 将这一过程自动化:
98

10-
---
11-
12-
## 📦 安装
13-
14-
```bash
15-
# 使用 pnpm
16-
pnpm add vite-capacitor -D
17-
18-
# 使用 npm
19-
npm install vite-capacitor -D
20-
```
9+
* **开发模式**:自动获取本机局域网 IP,配置 HMR 地址。
10+
* **生产模式**:自动指向构建后的 `dist` 目录。
11+
* **零干扰**:无需在 Vite 中注册插件,通过命令行直接驱动。
2112

2213
---
2314

24-
## 🛠️ 快速配置
15+
## 🚀 快速上手
2516

26-
### 1. 配置 Vite 插件
17+
### 1. 安装
2718

28-
`vite.config.ts` 中引入并使用插件。
19+
```bash
20+
npm install vite-capacitor -D
2921

30-
```typescript
31-
// vite.config.ts
32-
import { defineConfig } from 'vite'
33-
import { viteCapacitor } from 'vite-capacitor'
34-
35-
export default defineConfig({
36-
plugins: [
37-
viteCapacitor()
38-
],
39-
// 插件扩展了类型,你可以在这里定义 Capacitor 基础属性
40-
capacitor: {
41-
appId: 'com.example.app',
42-
appName: 'MyCapApp',
43-
},
44-
server: {
45-
host: true, // 必须开启 host
46-
}
47-
})
4822
```
4923

50-
### 2. Capacitor 配置
24+
### 2. 配置 Capacitor
5125

52-
修改项目根目录的 `capacitor.config.ts`,调用 `loadConfig` 来动态加载生成的配置
26+
`capacitor.config.ts` 中引入 `loadConfig`。它会根据执行环境自动注入配置
5327

5428
```typescript
5529
// capacitor.config.ts
5630
import { loadConfig } from 'vite-capacitor'
5731

58-
export default loadConfig()
32+
export default loadConfig(),
33+
5934
```
6035

61-
### 3. 更新 .gitignore
36+
### 3. 使用 `npx vcap sync` 替代 `npx cap sync`
6237

63-
插件生成的临时配置文件建议不要提交到仓库。
38+
不再直接使用原生命令,改用 `vcap`
6439

65-
```ignore
66-
# .gitignore
67-
.capacitor/
40+
```bash
41+
# 真机热更新调试 (Development)
42+
# 自动探测 IP -> 生成配置 -> 执行 cap sync
43+
npx vcap sync android
6844

69-
```
45+
# 准备发布包 (Production)
46+
# 自动设置 webDir: dist -> 执行 cap sync
47+
npx vcap sync android --build
7048

71-
## 📖 使用案例 (Usage Example)
49+
```
7250

73-
### 场景 A:真机实时调试 (Development)
51+
---
7452

75-
1. **执行启动**: 运行 `npm run dev`
76-
* 插件检测到你的电脑 IP 是 `192.168.1.50`,Vite 端口是 `5173`
77-
* 插件自动在 `.capacitor/config.dev.json` 中生成包含 `http://192.168.1.50:5173` 的配置。
53+
## 🛠️ CLI 命令详解
7854

79-
2. **运行 App**: 运行 `npx cap run ios``npx cap run android`
80-
* **效果**: 手机 App 启动后会自动连接到你电脑上的 Vite 服务。当你修改代码并保存时,手机屏幕会**立即同步更新 (HMR)**
55+
`vcap sync [platform] [options]`
8156

82-
### 场景 B:构建发布 (Production)
57+
| 选项 | 描述 | 默认值 |
58+
| --- | --- | --- |
59+
| `platform` | 目标平台: `android``ios` | - |
60+
| `--build` | **重要**:指定为生产模式。不加则默认为开发模式。 | `false` |
61+
| `--deployment` | (iOS) `pod install` 使用 `--deployment`| `false` |
62+
| `--inline` | (Android) 将 Source Maps 内联到 Webview 中。 | `false` |
8363

84-
1. **执行构建**: 运行 `npm run build`
85-
* 插件识别到 Vite 的构建输出目录为 `dist`
86-
* 插件自动在 `.capacitor/config.prod.json` 中将 `webDir` 设置为 `dist`
64+
## 📄 建议配置
8765

88-
2. **同步资源**: 运行 `npx cap copy`
89-
* **效果**: Capacitor 会自动将编译好的 `dist` 静态资源拷贝到原生工程中,确保 App 在离线状态下也能正常运行。
66+
`.capacitor` 目录加入忽略列表,因为它包含的是本地环境相关的动态配置:
9067

91-
## 📂 项目结构
68+
```ignore
69+
// .gitignore
70+
.capacitor/
9271
93-
```text
94-
.
95-
├── .capacitor/ # 插件生成的临时配置目录
96-
│ ├── config.dev.json # 开发环境配置 (含动态 IP URL)
97-
│ └── config.prod.json # 生产环境配置 (含 webDir)
98-
├── vite.config.ts # 配置 Capacitor 基础属性
99-
└── capacitor.config.ts # 动态消费生成的配置
72+
```

package.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
"main": "./dist/index.mjs",
3030
"module": "./dist/index.mjs",
3131
"types": "./dist/index.d.mts",
32+
"bin": {
33+
"vcap": "./dist/vcap.mjs"
34+
},
3235
"files": [
3336
"README.md",
3437
"dist",
@@ -44,10 +47,14 @@
4447
"lint": "eslint .",
4548
"lint:fix": "nr lint --fix"
4649
},
50+
"dependencies": {
51+
"yargs": "^18.0.0"
52+
},
4753
"devDependencies": {
4854
"@antfu/eslint-config": "^7.0.1",
4955
"@capacitor/cli": "^8.0.1",
5056
"@types/node": "^25.0.3",
57+
"@types/yargs": "^17.0.35",
5158
"bumpp": "^10.3.2",
5259
"eslint": "^9.39.2",
5360
"esno": "^4.8.0",

0 commit comments

Comments
 (0)