create-cleanslice 0.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/bin/create.mjs +52 -0
- package/package.json +25 -0
package/bin/create.mjs
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { downloadTemplate } from 'giget';
|
|
4
|
+
import { resolve, basename } from 'node:path';
|
|
5
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
6
|
+
|
|
7
|
+
const TEMPLATE = 'gh:CleanSlice/nest-nuxt-starter-kit';
|
|
8
|
+
|
|
9
|
+
const target = process.argv[2];
|
|
10
|
+
|
|
11
|
+
if (!target) {
|
|
12
|
+
console.log('\nUsage: npx create-cleanslice <project-name>\n');
|
|
13
|
+
console.log('Example: npx create-cleanslice my-app\n');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const dir = resolve(process.cwd(), target);
|
|
18
|
+
const name = basename(dir);
|
|
19
|
+
|
|
20
|
+
console.log(`\nScaffolding ${name}...\n`);
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
await downloadTemplate(TEMPLATE, { dir, force: false });
|
|
24
|
+
|
|
25
|
+
// Update API package.json name
|
|
26
|
+
updatePackageName(resolve(dir, 'api/package.json'), `${name}-api`);
|
|
27
|
+
|
|
28
|
+
// Update App package.json name
|
|
29
|
+
updatePackageName(resolve(dir, 'app/package.json'), `${name}-app`);
|
|
30
|
+
|
|
31
|
+
console.log(`Done! Next steps:\n`);
|
|
32
|
+
console.log(` cd ${target}`);
|
|
33
|
+
console.log(` cd api && npm install && npm run dev`);
|
|
34
|
+
console.log(` cd app && npm install && npm run dev\n`);
|
|
35
|
+
} catch (err) {
|
|
36
|
+
if (err.message?.includes('already exists')) {
|
|
37
|
+
console.error(`Error: Directory "${target}" already exists.\n`);
|
|
38
|
+
} else {
|
|
39
|
+
console.error('Error:', err.message || err);
|
|
40
|
+
}
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function updatePackageName(path, newName) {
|
|
45
|
+
try {
|
|
46
|
+
const pkg = JSON.parse(readFileSync(path, 'utf-8'));
|
|
47
|
+
pkg.name = newName;
|
|
48
|
+
writeFileSync(path, JSON.stringify(pkg, null, 2) + '\n');
|
|
49
|
+
} catch {
|
|
50
|
+
// File may not exist in template — skip silently
|
|
51
|
+
}
|
|
52
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-cleanslice",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Scaffold a new CleanSlice full-stack project",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"create-cleanslice": "./bin/create.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin"
|
|
11
|
+
],
|
|
12
|
+
"keywords": [
|
|
13
|
+
"cleanslice",
|
|
14
|
+
"nestjs",
|
|
15
|
+
"nuxt",
|
|
16
|
+
"starter",
|
|
17
|
+
"scaffold",
|
|
18
|
+
"create"
|
|
19
|
+
],
|
|
20
|
+
"author": "CleanSlice",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"giget": "^2.0.0"
|
|
24
|
+
}
|
|
25
|
+
}
|