react-client 1.0.38 → 1.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -124
- package/dist/cli/commands/build.js +19 -3
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/dev.js +373 -102
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/init.js +72 -7
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/preview.js +9 -15
- package/dist/cli/commands/preview.js.map +1 -1
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/loadConfig.js +31 -22
- package/dist/utils/loadConfig.js.map +1 -1
- package/package.json +3 -2
- package/templates/react/public/favicon.ico +0 -0
- package/templates/react/public/index.html +14 -0
- package/templates/react/public/logo512.png +0 -0
- package/templates/react/src/App.css +42 -0
- package/templates/react/src/App.jsx +23 -1
- package/templates/react/src/index.css +68 -0
- package/templates/react-tailwind/public/favicon.ico +0 -0
- package/templates/react-tailwind/public/index.html +14 -0
- package/templates/react-tailwind/public/logo512.png +0 -0
- package/templates/react-tailwind/src/App.css +42 -0
- package/templates/react-tailwind/src/App.jsx +31 -2
- package/templates/react-tailwind/src/index.css +68 -1
- package/templates/react-tailwind/src/main.jsx +1 -3
- package/templates/react-tailwind-ts/public/favicon.ico +0 -0
- package/templates/react-tailwind-ts/public/index.html +14 -0
- package/templates/react-tailwind-ts/public/logo512.png +0 -0
- package/templates/react-tailwind-ts/src/App.css +42 -0
- package/templates/react-tailwind-ts/src/App.tsx +30 -2
- package/templates/react-tailwind-ts/src/index.css +68 -1
- package/templates/react-tailwind-ts/src/main.tsx +0 -1
- package/templates/react-ts/public/favicon.ico +0 -0
- package/templates/react-ts/public/index.html +14 -0
- package/templates/react-ts/public/logo512.png +0 -0
- package/templates/react-ts/src/App.css +42 -0
- package/templates/react-ts/src/App.tsx +23 -1
- package/templates/react-ts/src/index.css +68 -0
- package/templates/react/index.html +0 -13
- package/templates/react-tailwind/index.html +0 -13
- package/templates/react-tailwind-ts/index.html +0 -13
- package/templates/react-ts/index.html +0 -13
package/README.md
CHANGED
|
@@ -1,196 +1,187 @@
|
|
|
1
|
+
# ⚡ react-client
|
|
2
|
+
|
|
1
3
|
[](https://www.npmjs.com/package/react-client)
|
|
2
4
|
[](https://npm-stat.com/charts.html?package=react-client)
|
|
3
5
|
[](https://github.com/venkateshsundaram/react-client/issues)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
7
|
|
|
5
|
-
**react-client** is a
|
|
6
|
-
|
|
7
|
-
Built for simplicity, designed for speed ⚡
|
|
8
|
+
**react-client** is a lightweight, ultra-fast CLI and runtime for building React applications. Built for speed, it focuses on providing an instant development experience without the overhead of traditional bundlers.
|
|
8
9
|
|
|
9
10
|
---
|
|
10
11
|
|
|
11
|
-
## 🚀
|
|
12
|
-
- [Installation](#installation)
|
|
13
|
-
- [With Config](#with-config)
|
|
14
|
-
- [Available Templates](#available-templates)
|
|
15
|
-
- [Core Features](#core-features)
|
|
16
|
-
- [How It Works](#how-it-works)
|
|
17
|
-
- [Local Development](#local-development)
|
|
18
|
-
- [Troubleshooting](#troubleshooting)
|
|
19
|
-
- [Contributing](#contributing)
|
|
20
|
-
- [Publishing](#publishing)
|
|
21
|
-
- [Feedback](#feedback)
|
|
22
|
-
- [License](#license)
|
|
23
|
-
|
|
24
|
-
---
|
|
12
|
+
## 🚀 Why react-client?
|
|
25
13
|
|
|
26
|
-
|
|
14
|
+
- 💨 **Instant Startup**: No more waiting for slow bundles. Start your dev server in milliseconds.
|
|
15
|
+
- 🔄 **State-Preserving HMR**: React Fast Refresh keeps your application state across code changes.
|
|
16
|
+
- 🎨 **Beautiful Error Overlay**: High-fidelity, syntax-highlighted error overlay with clickable file links.
|
|
17
|
+
- 🗺️ **Source Map Support**: Runtime errors map directly back to your original source code.
|
|
18
|
+
- 🔌 **Plug & Play**: Designed to work out of the box with zero configuration, yet highly extensible.
|
|
27
19
|
|
|
28
|
-
|
|
20
|
+
---
|
|
29
21
|
|
|
30
|
-
|
|
31
|
-
npm install -g react-client
|
|
32
|
-
react-client init myapp --template react-ts
|
|
33
|
-
cd myapp
|
|
34
|
-
npm install
|
|
35
|
-
npm run dev
|
|
36
|
-
```
|
|
22
|
+
## 📋 Table of Contents
|
|
37
23
|
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
24
|
+
- [Quick Start](#-quick-start)
|
|
25
|
+
- [Available Templates](#-available-templates)
|
|
26
|
+
- [CLI Command Reference](#-cli-command-reference)
|
|
27
|
+
- [Configuration Reference](#-configuration-reference)
|
|
28
|
+
- [Core Features](#-core-features)
|
|
29
|
+
- [Local Development](#-local-development)
|
|
30
|
+
- [Contributing](#-contributing)
|
|
31
|
+
- [License](#-license)
|
|
43
32
|
|
|
44
33
|
---
|
|
45
34
|
|
|
46
|
-
##
|
|
35
|
+
## ⚡ Quick Start
|
|
47
36
|
|
|
48
|
-
|
|
37
|
+
Create and launch your first app in seconds:
|
|
49
38
|
|
|
50
39
|
```bash
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
Creates:
|
|
40
|
+
# install globally
|
|
41
|
+
npm install -g react-client
|
|
55
42
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
import { defineConfig } from 'react-client/config';
|
|
43
|
+
# initialize your project
|
|
44
|
+
react-client init my-app --template react-ts
|
|
59
45
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
});
|
|
46
|
+
# start developing
|
|
47
|
+
cd my-app
|
|
48
|
+
npm install
|
|
49
|
+
npm run dev
|
|
65
50
|
```
|
|
66
51
|
|
|
67
|
-
|
|
68
|
-
✅ Type-safe with IntelliSense via `defineConfig()`
|
|
69
|
-
✅ Supports `.js`, `.mjs`, `.ts` (auto-compiled)
|
|
52
|
+
Your app will be live at `http://localhost:2202`!
|
|
70
53
|
|
|
71
54
|
---
|
|
72
55
|
|
|
73
56
|
## 🧰 Available Templates
|
|
74
57
|
|
|
75
|
-
|
|
76
|
-
|-----------|-------------|
|
|
77
|
-
| `react` | JavaScript SPA |
|
|
78
|
-
| `react-ts` | TypeScript SPA |
|
|
79
|
-
| `react-tailwind` | JS + Tailwind |
|
|
80
|
-
| `react-tailwind-ts` | TS + Tailwind |
|
|
58
|
+
Choose from a variety of pre-configured templates to jumpstart your project:
|
|
81
59
|
|
|
82
|
-
|
|
60
|
+
| Template | Description | Tech Stack |
|
|
61
|
+
| :--- | :--- | :--- |
|
|
62
|
+
| `react` | Basic JavaScript setup | JS, React 18 |
|
|
63
|
+
| `react-ts` | TypeScript-first setup | TS, React 18 |
|
|
64
|
+
| `react-tailwind` | JS with Tailwind CSS | JS, React, Tailwind |
|
|
65
|
+
| `react-tailwind-ts` | TS with Tailwind CSS | TS, React, Tailwind |
|
|
66
|
+
|
|
67
|
+
> [!TIP]
|
|
68
|
+
> Use the `--template` flag with `init` to specify your preferred starting point.
|
|
83
69
|
|
|
84
70
|
---
|
|
85
71
|
|
|
86
|
-
##
|
|
72
|
+
## 🛠️ CLI Command Reference
|
|
87
73
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
- 💥 **Overlay** — Syntax-highlighted stack frames, clickable file links (`vscode://file`)
|
|
91
|
-
- 🔍 **Source Map Stack Mapping** — Maps runtime errors to original TS/JS source lines
|
|
92
|
-
- 💬 **Auto Port Detection** — Prompts when default port 2202 is occupied
|
|
93
|
-
- 🧠 **Smart Config Loader** — Detects project root, compiles `.ts` configs dynamically
|
|
94
|
-
- 🔌 **Plugin Hook System** — Extendable with `configResolved`, `transform`, `buildEnd`
|
|
74
|
+
### `init <project-name>`
|
|
75
|
+
Scaffold a new React application.
|
|
95
76
|
|
|
96
|
-
|
|
77
|
+
- `--template <name>`: Choose a template (default: `react-ts`).
|
|
78
|
+
- `--with-config`: Generate a `react-client.config.js` file.
|
|
97
79
|
|
|
98
|
-
|
|
80
|
+
### `dev`
|
|
81
|
+
Start the development server with Hot Module Replacement (HMR).
|
|
99
82
|
|
|
100
|
-
|
|
83
|
+
- Uses port `2202` by default (auto-detects and prompts if occupied).
|
|
84
|
+
- Features on-the-fly esbuild transformations.
|
|
101
85
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
86
|
+
### `build`
|
|
87
|
+
Bundle your application for production.
|
|
88
|
+
|
|
89
|
+
- Optimized output in `.react-client/build` (default).
|
|
90
|
+
- Incremental rebuild support.
|
|
91
|
+
|
|
92
|
+
### `preview`
|
|
93
|
+
Serve your production build locally for final verification.
|
|
106
94
|
|
|
107
95
|
---
|
|
108
96
|
|
|
109
|
-
##
|
|
97
|
+
## ⚙️ Configuration Reference
|
|
110
98
|
|
|
111
|
-
|
|
99
|
+
For more advanced control, generate a configuration file:
|
|
112
100
|
|
|
113
101
|
```bash
|
|
114
|
-
|
|
115
|
-
npm run build
|
|
116
|
-
npm link
|
|
117
|
-
cd myapp
|
|
118
|
-
react-client dev
|
|
102
|
+
react-client init myapp --with-config
|
|
119
103
|
```
|
|
120
104
|
|
|
121
|
-
|
|
105
|
+
### `react-client.config.js`
|
|
122
106
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
## 🧩 Troubleshooting
|
|
107
|
+
```javascript
|
|
108
|
+
import { defineConfig } from 'react-client/config';
|
|
126
109
|
|
|
127
|
-
|
|
128
|
-
|
|
110
|
+
export default defineConfig({
|
|
111
|
+
// 🧭 Root directory for the app
|
|
112
|
+
root: '.',
|
|
129
113
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
114
|
+
// ⚡ Dev server settings
|
|
115
|
+
server: {
|
|
116
|
+
port: 2202,
|
|
117
|
+
},
|
|
133
118
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
```
|
|
119
|
+
// 🏗️ Build options
|
|
120
|
+
build: {
|
|
121
|
+
outDir: '.react-client/build',
|
|
122
|
+
},
|
|
139
123
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
Port 2202 is occupied. Use 5174 instead? (Y/n)
|
|
124
|
+
// 🔌 Plugins
|
|
125
|
+
plugins: [],
|
|
126
|
+
});
|
|
144
127
|
```
|
|
145
128
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
129
|
+
| Property | Description | Default |
|
|
130
|
+
| :--- | :--- | :--- |
|
|
131
|
+
| `root` | The application's root directory | `.` |
|
|
132
|
+
| `server.port` | The dev server port | `2202` |
|
|
133
|
+
| `build.outDir` | Production build output directory | `.react-client/build` |
|
|
134
|
+
| `plugins` | Array of react-client plugins | `[]` |
|
|
152
135
|
|
|
153
136
|
---
|
|
154
137
|
|
|
155
|
-
##
|
|
138
|
+
## 💎 Core Features
|
|
156
139
|
|
|
157
|
-
|
|
158
|
-
|
|
140
|
+
### 🔄 React Fast Refresh
|
|
141
|
+
Experience true Hot Module Replacement that preserves your component state during development. No more manual page reloads when you fix a bug.
|
|
159
142
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
143
|
+
### 💥 Interactive Error Overlay
|
|
144
|
+
When something goes wrong, you get a beautiful, clear overlay.
|
|
145
|
+
- **Syntax Highlighting**: Easily read the problematic code.
|
|
146
|
+
- **Click-to-Open**: File links open directly in VS Code (`vscode://file/...`).
|
|
147
|
+
- **Mapped Stacks**: Errors point to your original TSX/JSX lines, not the bundled output.
|
|
148
|
+
|
|
149
|
+
### ⚡ esbuild Powered
|
|
150
|
+
We use esbuild for lightning-fast compilation, ensuring that even large applications stay responsive during development.
|
|
165
151
|
|
|
166
152
|
---
|
|
167
153
|
|
|
168
|
-
##
|
|
154
|
+
## 🧪 Local Development
|
|
169
155
|
|
|
170
|
-
|
|
171
|
-
1. Update version in `package.json`
|
|
172
|
-
2. Run a full build
|
|
173
|
-
3. Ensure the entry file has execute permission
|
|
156
|
+
To contribute or test locally:
|
|
174
157
|
|
|
175
|
-
|
|
176
|
-
npm run build
|
|
177
|
-
npm
|
|
178
|
-
|
|
158
|
+
1. Clone the repository
|
|
159
|
+
2. Build the project: `npm run build`
|
|
160
|
+
3. Link globally: `npm link`
|
|
161
|
+
4. Test in a separate folder:
|
|
162
|
+
```bash
|
|
163
|
+
mkdir test-app && cd test-app
|
|
164
|
+
react-client init demo
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
179
168
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
169
|
+
## 🤝 Contributing
|
|
170
|
+
|
|
171
|
+
We welcome all contributions! Whether it's adding new templates, fixing bugs, or improving documentation.
|
|
172
|
+
|
|
173
|
+
Please check our [Contributing Guide](./CONTRIBUTING.md) to get started.
|
|
184
174
|
|
|
185
175
|
---
|
|
186
176
|
|
|
187
177
|
## 💬 Feedback
|
|
188
178
|
|
|
189
|
-
Found an issue or have a feature request?
|
|
190
|
-
👉 [Open an issue](https://github.com/venkateshsundaram/react-client/issues)
|
|
179
|
+
Found an issue or have a feature request?
|
|
180
|
+
👉 [Open an issue on GitHub](https://github.com/venkateshsundaram/react-client/issues)
|
|
191
181
|
|
|
192
182
|
---
|
|
193
183
|
|
|
194
184
|
## 🪪 License
|
|
195
185
|
|
|
196
186
|
**MIT Licensed** © [Venkatesh Sundaram](https://github.com/venkateshsundaram)
|
|
187
|
+
|
|
@@ -11,12 +11,27 @@ export default async function build() {
|
|
|
11
11
|
console.log(chalk.cyan(`\n🏗️ Building project...`));
|
|
12
12
|
console.log(chalk.gray(`Root: ${appRoot}`));
|
|
13
13
|
console.log(chalk.gray(`Output: ${outDir}\n`));
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
// Detect entry (main.tsx / main.jsx)
|
|
15
|
+
const paths = [
|
|
16
|
+
path.join(appRoot, 'src/main.tsx'),
|
|
17
|
+
path.join(appRoot, 'src/main.jsx'),
|
|
18
|
+
path.join(appRoot, 'main.tsx'),
|
|
19
|
+
path.join(appRoot, 'main.jsx'),
|
|
20
|
+
];
|
|
21
|
+
const entry = paths.find((p) => fs.existsSync(p));
|
|
22
|
+
if (!entry) {
|
|
23
|
+
console.error(chalk.red('❌ Entry not found: main.tsx or main.jsx in app root or src/'));
|
|
17
24
|
process.exit(1);
|
|
18
25
|
}
|
|
19
26
|
await fs.ensureDir(outDir);
|
|
27
|
+
// Copy public folder contents to outDir
|
|
28
|
+
let publicDir = path.join(appRoot, 'public');
|
|
29
|
+
if (!fs.existsSync(publicDir)) {
|
|
30
|
+
publicDir = path.join(root, 'public');
|
|
31
|
+
}
|
|
32
|
+
if (await fs.pathExists(publicDir)) {
|
|
33
|
+
await fs.copy(publicDir, outDir);
|
|
34
|
+
}
|
|
20
35
|
try {
|
|
21
36
|
await esbuild.build({
|
|
22
37
|
entryPoints: [entry],
|
|
@@ -26,6 +41,7 @@ export default async function build() {
|
|
|
26
41
|
outdir: outDir,
|
|
27
42
|
define: { 'process.env.NODE_ENV': '"production"' },
|
|
28
43
|
loader: { '.ts': 'ts', '.tsx': 'tsx', '.js': 'jsx', '.jsx': 'jsx' },
|
|
44
|
+
jsx: 'automatic',
|
|
29
45
|
});
|
|
30
46
|
console.log(chalk.green(`✅ Build completed successfully!`));
|
|
31
47
|
console.log(chalk.gray(`Output directory: ${outDir}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,qBAAqB,CAAC,CAAC;IAEjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,CAAC,CAAC;IAE/C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
|