@ereactthohir/cli 1.1.0
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 +47 -0
- package/dist/commands/build.d.ts +4 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +139 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +584 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/generators.d.ts +12 -0
- package/dist/commands/generators.d.ts.map +1 -0
- package/dist/commands/generators.js +180 -0
- package/dist/commands/generators.js.map +1 -0
- package/dist/commands/migrate.d.ts +4 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +83 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/serve.d.ts +2 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +120 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/generators/ModelGenerator.d.ts +23 -0
- package/dist/generators/ModelGenerator.d.ts.map +1 -0
- package/dist/generators/ModelGenerator.js +143 -0
- package/dist/generators/ModelGenerator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# @ereactthohir/cli
|
|
2
|
+
|
|
3
|
+
The command line interface for the **EreactThohir** framework.
|
|
4
|
+
|
|
5
|
+
## ๐ Installation
|
|
6
|
+
|
|
7
|
+
Install globally or use via `npx`:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @ereactthohir/cli
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx @ereactthohir/cli create my-app
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## ๐ Commands
|
|
20
|
+
|
|
21
|
+
### Scaffolding
|
|
22
|
+
- `ereact make:controller <Name>`: Create a new controller.
|
|
23
|
+
- `ereact make:model <Name>`: Create a new ORM model.
|
|
24
|
+
- `ereact make:service <Name>`: Create a new business logic service.
|
|
25
|
+
- `ereact make:screen <Name>`: Create a new UI screen.
|
|
26
|
+
- `ereact make:component <Name>`: Create a new reusable component.
|
|
27
|
+
- `ereact make:migration <Name>`: Create a database migration.
|
|
28
|
+
- `ereact make:seeder <Name>`: Create a database seeder.
|
|
29
|
+
|
|
30
|
+
### Database
|
|
31
|
+
- `ereact migrate`: Run pending migrations.
|
|
32
|
+
- `ereact migrate:rollback`: Rollback the last migration batch.
|
|
33
|
+
- `ereact db:seed`: Seed the database.
|
|
34
|
+
|
|
35
|
+
### Development & Build
|
|
36
|
+
- `ereact serve`: Start the development server.
|
|
37
|
+
- `ereact build:web`: Build for web.
|
|
38
|
+
- `ereact build:android`: Build Android APK/AAB.
|
|
39
|
+
- `ereact build:ios`: Build iOS IPA.
|
|
40
|
+
|
|
41
|
+
## ๐ค Author
|
|
42
|
+
|
|
43
|
+
**KangPCode (Dhafa Nazula Permadi)**
|
|
44
|
+
|
|
45
|
+
## ๐ License
|
|
46
|
+
|
|
47
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAoI9C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAG9C"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildWeb = buildWeb;
|
|
7
|
+
exports.buildAndroid = buildAndroid;
|
|
8
|
+
exports.buildIOS = buildIOS;
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
|
+
const esbuild_1 = require("esbuild");
|
|
13
|
+
async function buildWeb() {
|
|
14
|
+
const projectRoot = process.cwd();
|
|
15
|
+
const distDir = path_1.default.join(projectRoot, 'dist');
|
|
16
|
+
if (!fs_extra_1.default.existsSync(path_1.default.join(projectRoot, 'ereact.json'))) {
|
|
17
|
+
console.error(chalk_1.default.red('Error: You are not in an EreactThohir project root.'));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.log(chalk_1.default.cyan.bold('\n๐๏ธ EreactThohir Framework - Building for Web'));
|
|
21
|
+
console.log(chalk_1.default.gray('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ'));
|
|
22
|
+
try {
|
|
23
|
+
// Clean dist directory
|
|
24
|
+
console.log(chalk_1.default.blue('๐งน Cleaning dist directory...'));
|
|
25
|
+
await fs_extra_1.default.remove(distDir);
|
|
26
|
+
await fs_extra_1.default.ensureDir(distDir);
|
|
27
|
+
console.log(chalk_1.default.green('โ Dist directory cleaned'));
|
|
28
|
+
// Find entry point
|
|
29
|
+
const viewsDir = path_1.default.join(projectRoot, 'resources/views');
|
|
30
|
+
const entryFile = path_1.default.join(viewsDir, 'HomeScreen.tsx');
|
|
31
|
+
if (!fs_extra_1.default.existsSync(entryFile)) {
|
|
32
|
+
console.error(chalk_1.default.red(`Error: Entry file not found at ${entryFile}`));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
console.log(chalk_1.default.blue('๐ฆ Bundling application...'));
|
|
36
|
+
console.log(chalk_1.default.gray(` Entry: ${entryFile}`));
|
|
37
|
+
// Create a temporary entry file that includes React DOM rendering
|
|
38
|
+
const tempEntryFile = path_1.default.join(projectRoot, '.ereact-build-entry.tsx');
|
|
39
|
+
const entryContent = `
|
|
40
|
+
import React from 'react';
|
|
41
|
+
import ReactDOM from 'react-dom/client';
|
|
42
|
+
import HomeScreen from './resources/views/HomeScreen';
|
|
43
|
+
|
|
44
|
+
const root = ReactDOM.createRoot(document.getElementById('root')!);
|
|
45
|
+
root.render(<HomeScreen />);
|
|
46
|
+
`;
|
|
47
|
+
await fs_extra_1.default.writeFile(tempEntryFile, entryContent);
|
|
48
|
+
// Build with esbuild
|
|
49
|
+
await (0, esbuild_1.build)({
|
|
50
|
+
entryPoints: [tempEntryFile],
|
|
51
|
+
bundle: true,
|
|
52
|
+
minify: true,
|
|
53
|
+
sourcemap: true,
|
|
54
|
+
outfile: path_1.default.join(distDir, 'bundle.js'),
|
|
55
|
+
platform: 'browser',
|
|
56
|
+
target: ['es2020'],
|
|
57
|
+
loader: {
|
|
58
|
+
'.tsx': 'tsx',
|
|
59
|
+
'.ts': 'ts',
|
|
60
|
+
'.jsx': 'jsx',
|
|
61
|
+
'.js': 'js',
|
|
62
|
+
},
|
|
63
|
+
jsxFactory: 'React.createElement',
|
|
64
|
+
jsxFragment: 'React.Fragment',
|
|
65
|
+
define: {
|
|
66
|
+
'process.env.NODE_ENV': '"production"',
|
|
67
|
+
},
|
|
68
|
+
external: [],
|
|
69
|
+
});
|
|
70
|
+
// Clean up temp file
|
|
71
|
+
await fs_extra_1.default.remove(tempEntryFile);
|
|
72
|
+
console.log(chalk_1.default.green('โ Bundle created'));
|
|
73
|
+
// Create HTML file
|
|
74
|
+
console.log(chalk_1.default.blue('๐ Generating HTML...'));
|
|
75
|
+
const htmlContent = `<!DOCTYPE html>
|
|
76
|
+
<html lang="id">
|
|
77
|
+
<head>
|
|
78
|
+
<meta charset="UTF-8">
|
|
79
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
80
|
+
<title>EreactThohir App</title>
|
|
81
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
82
|
+
<style>
|
|
83
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');
|
|
84
|
+
body {
|
|
85
|
+
font-family: 'Inter', sans-serif;
|
|
86
|
+
margin: 0;
|
|
87
|
+
padding: 0;
|
|
88
|
+
}
|
|
89
|
+
@keyframes gradient {
|
|
90
|
+
0% { background-position: 0% 50%; }
|
|
91
|
+
50% { background-position: 100% 50%; }
|
|
92
|
+
100% { background-position: 0% 50%; }
|
|
93
|
+
}
|
|
94
|
+
.animate-gradient {
|
|
95
|
+
background-size: 200% 200%;
|
|
96
|
+
animation: gradient 3s ease infinite;
|
|
97
|
+
}
|
|
98
|
+
</style>
|
|
99
|
+
</head>
|
|
100
|
+
<body>
|
|
101
|
+
<div id="root"></div>
|
|
102
|
+
<script src="./bundle.js"></script>
|
|
103
|
+
</body>
|
|
104
|
+
</html>`;
|
|
105
|
+
await fs_extra_1.default.writeFile(path_1.default.join(distDir, 'index.html'), htmlContent);
|
|
106
|
+
console.log(chalk_1.default.green('โ HTML generated'));
|
|
107
|
+
// Copy public assets if they exist
|
|
108
|
+
const publicDir = path_1.default.join(projectRoot, 'public');
|
|
109
|
+
if (fs_extra_1.default.existsSync(publicDir)) {
|
|
110
|
+
console.log(chalk_1.default.blue('๐ Copying public assets...'));
|
|
111
|
+
await fs_extra_1.default.copy(publicDir, distDir, {
|
|
112
|
+
filter: (src) => !src.includes('node_modules'),
|
|
113
|
+
});
|
|
114
|
+
console.log(chalk_1.default.green('โ Public assets copied'));
|
|
115
|
+
}
|
|
116
|
+
// Get bundle size
|
|
117
|
+
const bundleStats = await fs_extra_1.default.stat(path_1.default.join(distDir, 'bundle.js'));
|
|
118
|
+
const bundleSize = (bundleStats.size / 1024).toFixed(2);
|
|
119
|
+
console.log(chalk_1.default.green.bold('\nโ
Build completed successfully!'));
|
|
120
|
+
console.log(chalk_1.default.gray('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ'));
|
|
121
|
+
console.log(chalk_1.default.white(' Output directory: ') + chalk_1.default.cyan(distDir));
|
|
122
|
+
console.log(chalk_1.default.white(' Bundle size: ') + chalk_1.default.cyan(`${bundleSize} KB`));
|
|
123
|
+
console.log(chalk_1.default.gray('\n To serve the build, run:'));
|
|
124
|
+
console.log(chalk_1.default.cyan(' npx serve dist\n'));
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
console.error(chalk_1.default.red('\nโ Build failed:'), error);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function buildAndroid() {
|
|
132
|
+
console.log(chalk_1.default.yellow('๐ง Android build is not yet implemented'));
|
|
133
|
+
console.log(chalk_1.default.gray('This feature is coming soon!'));
|
|
134
|
+
}
|
|
135
|
+
async function buildIOS() {
|
|
136
|
+
console.log(chalk_1.default.yellow('๐ง iOS build is not yet implemented'));
|
|
137
|
+
console.log(chalk_1.default.gray('This feature is coming soon!'));
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAMA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,iBAiRxC"}
|