create-v-kit-spa 1.0.10 → 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 +4 -1
- package/dist/commands.d.ts +1 -1
- package/dist/commands.js +80 -67
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/messages.d.ts +2 -2
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +39 -69
- package/dist/prompts.d.ts +15 -3
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +98 -77
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +33 -33
- package/dist/version.d.ts +1 -1
- package/dist/version.js +25 -20
- package/lib/162/.env.example +1 -7
- package/lib/162/README.md +0 -19
- package/lib/162/app/Http/Controllers/MainController.php +12 -0
- package/lib/162/composer.json +3 -7
- package/lib/162/composer.lock +579 -1140
- package/lib/162/config/cache.php +4 -3
- package/lib/162/config/database.php +5 -2
- package/lib/162/config/filesystems.php +3 -2
- package/lib/162/config/logging.php +1 -1
- package/lib/162/config/mail.php +15 -2
- package/lib/162/config/queue.php +4 -4
- package/lib/162/config/services.php +4 -0
- package/lib/162/config/session.php +0 -1
- package/lib/162/package.json +1 -9
- package/lib/162/public/.htaccess +6 -8
- package/lib/162/resources/js/app.js +10 -10
- package/lib/162/resources/js/components/About.vue +4 -4
- package/lib/162/resources/js/components/Home.vue +11 -11
- package/lib/162/resources/js/components/pages/About.vue +5 -0
- package/lib/162/resources/js/components/pages/Error.vue +5 -0
- package/lib/162/resources/js/components/pages/Home.vue +21 -0
- package/lib/162/resources/js/components/templates/App.vue +86 -0
- package/lib/162/resources/js/failOver.js +8 -8
- package/lib/162/resources/js/mainStore.js +20 -0
- package/lib/162/resources/js/router.js +40 -24
- package/lib/162/resources/js/store.js +18 -18
- package/lib/162/resources/js/templates/App.vue +65 -65
- package/lib/162/resources/js/views/HomeView.vue +7 -7
- package/lib/162/resources/views/layouts/app.blade.php +13 -14
- package/lib/162/resources/views/welcome.blade.php +2 -2
- package/lib/162/routes/web.php +2 -3
- package/lib/162/vite.config.js +1 -1
- package/package.json +2 -4
- package/dist/count.d.ts +0 -3
- package/dist/count.d.ts.map +0 -1
- package/dist/count.js +0 -44
- package/dist/progress.d.ts +0 -2
- package/dist/progress.d.ts.map +0 -1
- package/dist/progress.js +0 -37
- package/lib/162/package-lock.json +0 -1330
package/README.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<br>
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
<div align="center">
|
|
4
5
|
<img src="https://gitlab.com/shuashuaa/v-kit-app/-/raw/main/@shuashuaa-v-kit.png?ref_type=heads" width="300" />
|
|
5
6
|
</div>
|
|
@@ -25,6 +26,8 @@ vite/webpack, vuetify and pinia. up-to-date, ready for local-deployment and full
|
|
|
25
26
|
<!-- <a href="https://www.npmjs.com/package/create-v-kit-spa"><img src="https://img.shields.io/npm/v/create-v-kit-spa?color=c95f8b&label=" alt="NPM version"></a>
|
|
26
27
|
<a href="https://www.npmjs.com/package/create-v-kit-spa"><img src="https://img.shields.io/npm/dw/create-v-kit-spa?style=flat-square" alt="NPM downloads"></a>
|
|
27
28
|
<a href="https://github.com/shuashuaa/v-kit/blob/main/LICENSE"><img src="https://img.shields.io/npm/v/create-v-kit-spa?style=flat-square" alt="License"></a> -->
|
|
29
|
+
|
|
30
|
+
[](https://github.com/Shuashuaa/create-v-kit-spa/actions/workflows/ci.yml)
|
|
28
31
|
<a href="https://github.com/shuashuaa/v-kit/blob/main/LICENSE"><img src="https://img.shields.io/npm/v/create-v-kit-spa?style=flat-square&logo=npm&color=ffe963" alt="VERSION"></a>
|
|
29
32
|
<a href="https://www.npmjs.com/package/create-v-kit-spa"><img src="https://img.shields.io/npm/dw/create-v-kit-spa?style=flat-square&logo=npm&color=ffe963" alt="NPM DOWNLOADS"></a>
|
|
30
33
|
<a href="https://github.com/shuashuaa/v-kit/blob/main/LICENSE"><img src="https://img.shields.io/bundlejs/size/create-v-kit-spa?style=flat-square&logo=npm&color=ffe963" alt="MINIFIED SIZE"></a>
|
|
@@ -67,7 +70,7 @@ https://windows.php.net/downloads/releases/archives/php-8.0.9-Win32-vs16-x64.zip
|
|
|
67
70
|
|
|
68
71
|
# Reference Table (❗ PHP Version is Important ❗)
|
|
69
72
|
|
|
70
|
-
###
|
|
73
|
+
### Monolith Repo
|
|
71
74
|
> frontend and backend are in a single folder, united via configuration.
|
|
72
75
|
|
|
73
76
|
| Version & Type | Features | Prerequisite |
|
package/dist/commands.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=commands.d.ts.map
|
package/dist/commands.js
CHANGED
|
@@ -1,67 +1,80 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const path_1 = __importDefault(require("path"));
|
|
16
|
-
const fs_1 = __importDefault(require("fs"));
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const path_1 = __importDefault(require("path"));
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
19
|
+
const helpers_1 = require("yargs/helpers");
|
|
20
|
+
const prompts_1 = require("@clack/prompts");
|
|
21
|
+
const utils_1 = require("./utils");
|
|
22
|
+
const prompts_2 = require("./prompts");
|
|
23
|
+
const messages_1 = require("./messages");
|
|
24
|
+
function createProject() {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const argv = yield (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
|
|
27
|
+
.scriptName('create-v-kit-spa')
|
|
28
|
+
.option('template', {
|
|
29
|
+
alias: 't',
|
|
30
|
+
type: 'string',
|
|
31
|
+
describe: `Boilerplate id (${prompts_2.TEMPLATES.map((t) => t.id).join(', ')}) — skips the prompt`,
|
|
32
|
+
})
|
|
33
|
+
.help()
|
|
34
|
+
.parse();
|
|
35
|
+
(0, prompts_1.intro)(chalk_1.default.bgCyan.black(' create-v-kit-spa '));
|
|
36
|
+
// Project name: positional arg wins, otherwise prompt.
|
|
37
|
+
const projectName = argv._[0] ? String(argv._[0]) : yield (0, prompts_2.getProjectName)();
|
|
38
|
+
const destinationPath = path_1.default.join(process.cwd(), projectName);
|
|
39
|
+
if (fs_1.default.existsSync(destinationPath)) {
|
|
40
|
+
(0, messages_1.errorMessage)(new Error(`The directory "${projectName}" already exists.`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
// Scan PHP (informational — boilerplates still install without it locally).
|
|
44
|
+
const phpSpinner = (0, prompts_1.spinner)();
|
|
45
|
+
phpSpinner.start('Scanning php');
|
|
46
|
+
const phpVersion = yield (0, prompts_2.detectPhp)();
|
|
47
|
+
phpSpinner.stop(phpVersion
|
|
48
|
+
? `php ${phpVersion} detected`
|
|
49
|
+
: 'php not found in PATH — install it before running the project');
|
|
50
|
+
// Template: --template flag wins (validated), otherwise prompt.
|
|
51
|
+
let templateId = argv.template;
|
|
52
|
+
if (templateId && !prompts_2.TEMPLATES.some((t) => t.id === templateId)) {
|
|
53
|
+
(0, messages_1.errorMessage)(new Error(`Invalid template "${templateId}". Valid ids: ${prompts_2.TEMPLATES.map((t) => t.id).join(', ')}`));
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
if (!templateId)
|
|
57
|
+
templateId = yield (0, prompts_2.getTemplateChoice)();
|
|
58
|
+
const template = prompts_2.TEMPLATES.find((t) => t.id === templateId);
|
|
59
|
+
const sourcePath = path_1.default.join(__dirname, '../lib', template.id);
|
|
60
|
+
const copySpinner = (0, prompts_1.spinner)();
|
|
61
|
+
copySpinner.start(`Creating ${template.label} project`);
|
|
62
|
+
try {
|
|
63
|
+
yield fs_1.default.promises.mkdir(destinationPath);
|
|
64
|
+
yield (0, utils_1.copyProjectStructure)(sourcePath, destinationPath);
|
|
65
|
+
copySpinner.stop(`Created ${chalk_1.default.cyan(projectName)} (${template.label})`);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
copySpinner.stop('Failed to create project');
|
|
69
|
+
(0, messages_1.errorMessage)(error);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
(0, messages_1.successMessage)(template.id, projectName);
|
|
73
|
+
(0, prompts_1.outro)(chalk_1.default.green(`${template.label} boilerplate ready 🎉`));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
createProject().catch((error) => {
|
|
77
|
+
var _a;
|
|
78
|
+
prompts_1.log.error((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : String(error));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import './commands';
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import './commands';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
require("./commands");
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
require("./commands");
|
package/dist/messages.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function successMessage(sourceVal: string):
|
|
2
|
-
export declare function errorMessage(error: Error): void;
|
|
1
|
+
export declare function successMessage(sourceVal: string, projectName: string): void;
|
|
2
|
+
export declare function errorMessage(error: Error): void;
|
|
3
3
|
//# sourceMappingURL=messages.d.ts.map
|
package/dist/messages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QA0BpE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,QAExC"}
|
package/dist/messages.js
CHANGED
|
@@ -1,69 +1,39 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
console.log(chalk_1.default.cyan.bold(" ˜ |"));
|
|
41
|
-
console.log(chalk_1.default.red.bold(" () .-.,='``'=. - o -"));
|
|
42
|
-
console.log(chalk_1.default.yellow.bold(" '=/_ 〵 |"));
|
|
43
|
-
console.log(chalk_1.default.cyanBright.bold(" * | '=._ )"));
|
|
44
|
-
console.log(chalk_1.default.yellow.bold(" \\ `=../`, '"));
|
|
45
|
-
console.log(chalk_1.default.redBright.bold(" . '=.__.=' `=' *"));
|
|
46
|
-
console.log(chalk_1.default.yellow.bold("˜ +"));
|
|
47
|
-
console.log(chalk_1.default.cyanBright.bold(" O * ' .\n"));
|
|
48
|
-
}, 300);
|
|
49
|
-
setTimeout(() => {
|
|
50
|
-
console.log('Well done 🎉🎉,', chalk_1.default.green('These Boilerplates are created with coffee & passion by', chalk_1.default.green.underline('Joshua Tania'), chalk_1.default.whiteBright('\nFor more info (github): >>'), chalk_1.default.green.underline('https://github.com/Shuashuaa/create-v-kit-spa'), chalk_1.default.whiteBright('\nFor more info (gitlab): >>'), chalk_1.default.green.underline('https://gitlab.com/shuashuaa/create-v-kit-spa\n')));
|
|
51
|
-
}, 800);
|
|
52
|
-
setTimeout(() => {
|
|
53
|
-
if (sourceVal == "158" || sourceVal == "159") {
|
|
54
|
-
console.log(chalk_1.default.bgBlack('Locate Project:'), chalk_1.default.cyanBright('cd project_name,'));
|
|
55
|
-
console.log(chalk_1.default.bgBlack('Install Dependencies:'), chalk_1.default.cyanBright('npm install') + ',', chalk_1.default.cyanBright('composer install') + ',', chalk_1.default.cyanBright('\ncopy .env.example .env'), 'and', chalk_1.default.cyanBright('php artisan key:generate'));
|
|
56
|
-
console.log(chalk_1.default.bgBlack('Run Project:'), chalk_1.default.cyanBright('npm run artisan-watch') + '.\n');
|
|
57
|
-
}
|
|
58
|
-
else if (sourceVal == "160" || sourceVal == "161" || sourceVal == "162") {
|
|
59
|
-
console.log(chalk_1.default.bgBlack('Locate Project:'), chalk_1.default.cyanBright('cd project_name,'));
|
|
60
|
-
console.log(chalk_1.default.bgBlack('Install Dependencies:'), chalk_1.default.cyanBright('yarn install') + ',', chalk_1.default.cyanBright('composer install') + ',', chalk_1.default.cyanBright('\ncopy .env.example .env'), 'and', chalk_1.default.cyanBright('php artisan key:generate'));
|
|
61
|
-
console.log(chalk_1.default.bgBlack('Run Project:'), chalk_1.default.cyanBright('npm run artisan-dev') + '.\n');
|
|
62
|
-
}
|
|
63
|
-
console.log(chalk_1.default.bgBlack('Visit:'), chalk_1.default.bold('http://127.0.0.1:8000\n'));
|
|
64
|
-
}, 500);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
function errorMessage(error) {
|
|
68
|
-
console.error(chalk_1.default.red.inverse(`\n✖ Error creating project. ${error.message}`));
|
|
69
|
-
}
|
|
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.successMessage = successMessage;
|
|
7
|
+
exports.errorMessage = errorMessage;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const prompts_1 = require("./prompts");
|
|
10
|
+
// Templates whose install hint uses npm; the rest use yarn.
|
|
11
|
+
const NPM_TEMPLATES = ['158', '159'];
|
|
12
|
+
function successMessage(sourceVal, projectName) {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const label = (_b = (_a = prompts_1.TEMPLATES.find((t) => t.id === sourceVal)) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : sourceVal;
|
|
15
|
+
console.log(chalk_1.default.green(`\n✔ ${label} boilerplate is successfully downloaded!\n`));
|
|
16
|
+
console.log(chalk_1.default.yellow.bold(" * ˜"));
|
|
17
|
+
console.log(chalk_1.default.cyan.bold(" ˜ |"));
|
|
18
|
+
console.log(chalk_1.default.red.bold(" () .-.,='``'=. - o -"));
|
|
19
|
+
console.log(chalk_1.default.yellow.bold(" '=/_ 〵 |"));
|
|
20
|
+
console.log(chalk_1.default.cyanBright.bold(" * | '=._ )"));
|
|
21
|
+
console.log(chalk_1.default.yellow.bold(" \\ `=../`, '"));
|
|
22
|
+
console.log(chalk_1.default.redBright.bold(" . '=.__.=' `=' *"));
|
|
23
|
+
console.log(chalk_1.default.yellow.bold("˜ +"));
|
|
24
|
+
console.log(chalk_1.default.cyanBright.bold(" O * ' .\n"));
|
|
25
|
+
console.log(chalk_1.default.bgBlack('Locate Project:'), chalk_1.default.cyanBright(`cd ${projectName},`));
|
|
26
|
+
if (NPM_TEMPLATES.includes(sourceVal)) {
|
|
27
|
+
console.log(chalk_1.default.bgBlack('Install Dependencies:'), chalk_1.default.cyanBright('npm install') + ',', chalk_1.default.cyanBright('composer install') + ',', chalk_1.default.cyanBright('\ncopy .env.example .env'), 'and', chalk_1.default.cyanBright('php artisan key:generate'));
|
|
28
|
+
console.log(chalk_1.default.bgBlack('Run Project:'), chalk_1.default.cyanBright('npm run artisan-watch') + '.\n');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.log(chalk_1.default.bgBlack('Install Dependencies:'), chalk_1.default.cyanBright('yarn install') + ',', chalk_1.default.cyanBright('composer install') + ',', chalk_1.default.cyanBright('\ncopy .env.example .env'), 'and', chalk_1.default.cyanBright('php artisan key:generate'));
|
|
32
|
+
console.log(chalk_1.default.bgBlack('Run Project:'), chalk_1.default.cyanBright('npm run artisan-dev') + '.\n');
|
|
33
|
+
}
|
|
34
|
+
console.log(chalk_1.default.bgBlack('Visit:'), chalk_1.default.bold('http://127.0.0.1:8000\n'));
|
|
35
|
+
console.log('Well done 🎉🎉,', chalk_1.default.green('These Boilerplates are created with coffee & passion by', chalk_1.default.green.underline('Joshua Tania'), chalk_1.default.whiteBright('\nFor more info (github): >>'), chalk_1.default.green.underline('https://github.com/Shuashuaa/create-v-kit-spa'), chalk_1.default.whiteBright('\nFor more info (gitlab): >>'), chalk_1.default.green.underline('https://gitlab.com/shuashuaa/create-v-kit-spa\n')));
|
|
36
|
+
}
|
|
37
|
+
function errorMessage(error) {
|
|
38
|
+
console.error(chalk_1.default.red.inverse(`\n✖ Error creating project. ${error.message}`));
|
|
39
|
+
}
|
package/dist/prompts.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export interface Template {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
hint: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const TEMPLATES: Template[];
|
|
7
|
+
export declare function getProjectName(): Promise<string>;
|
|
8
|
+
export declare function getTemplateChoice(): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Resolve the installed PHP version, or null if PHP is missing.
|
|
11
|
+
* `shell: true` so the bare name `php` resolves via PATH/PATHEXT on Windows,
|
|
12
|
+
* matching how the interactive shell finds php.exe. Never rejects/throws:
|
|
13
|
+
* a missing binary emits 'error', which we catch and report as null.
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectPhp(): Promise<string | null>;
|
|
4
16
|
//# sourceMappingURL=prompts.d.ts.map
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,eAAO,MAAM,SAAS,EAAE,QAAQ,EAM/B,CAAC;AAaF,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CActD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAOzD;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBxD"}
|
package/dist/prompts.js
CHANGED
|
@@ -1,77 +1,98 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
message
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TEMPLATES = void 0;
|
|
16
|
+
exports.getProjectName = getProjectName;
|
|
17
|
+
exports.getTemplateChoice = getTemplateChoice;
|
|
18
|
+
exports.detectPhp = detectPhp;
|
|
19
|
+
const fs_1 = __importDefault(require("fs"));
|
|
20
|
+
const path_1 = __importDefault(require("path"));
|
|
21
|
+
const prompts_1 = require("@clack/prompts");
|
|
22
|
+
const { spawn } = require('child_process');
|
|
23
|
+
// Single source of truth for the boilerplates. Folder ids map to ./lib/<id>.
|
|
24
|
+
exports.TEMPLATES = [
|
|
25
|
+
{ id: '158', label: 'Vue2-Laravel8', hint: 'php 7.4' },
|
|
26
|
+
{ id: '159', label: 'Vue3-Laravel8', hint: 'php 7.4' },
|
|
27
|
+
{ id: '160', label: 'Vue3-Laravel9', hint: 'php 8.0' },
|
|
28
|
+
{ id: '161', label: 'Vue3-Laravel10', hint: 'php 8.1' },
|
|
29
|
+
{ id: '162', label: 'Vue3-Laravel11', hint: 'php 8.2 - 8.3' },
|
|
30
|
+
];
|
|
31
|
+
const DEFAULT_NAME = 'v-kit-app';
|
|
32
|
+
// Characters that are illegal in Windows paths (and a good ban list elsewhere too).
|
|
33
|
+
const INVALID_NAME = /[<>:"/\\|?*\x00-\x1f]/;
|
|
34
|
+
function bail(value) {
|
|
35
|
+
if ((0, prompts_1.isCancel)(value)) {
|
|
36
|
+
(0, prompts_1.cancel)('Cancelled.');
|
|
37
|
+
process.exit(0);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function getProjectName() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const answer = yield (0, prompts_1.text)({
|
|
43
|
+
message: 'Project name',
|
|
44
|
+
placeholder: DEFAULT_NAME,
|
|
45
|
+
defaultValue: DEFAULT_NAME,
|
|
46
|
+
validate(value) {
|
|
47
|
+
const v = (value !== null && value !== void 0 ? value : '').trim();
|
|
48
|
+
if (!v)
|
|
49
|
+
return; // empty -> default name is used
|
|
50
|
+
if (INVALID_NAME.test(v))
|
|
51
|
+
return 'Name contains invalid path characters.';
|
|
52
|
+
if (fs_1.default.existsSync(path_1.default.join(process.cwd(), v)))
|
|
53
|
+
return `Directory "${v}" already exists.`;
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
bail(answer);
|
|
57
|
+
return answer.trim() || DEFAULT_NAME;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function getTemplateChoice() {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const choice = yield (0, prompts_1.select)({
|
|
63
|
+
message: 'Select your preferred boilerplate',
|
|
64
|
+
options: exports.TEMPLATES.map((t) => ({ value: t.id, label: t.label, hint: t.hint })),
|
|
65
|
+
});
|
|
66
|
+
bail(choice);
|
|
67
|
+
return choice;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Resolve the installed PHP version, or null if PHP is missing.
|
|
72
|
+
* `shell: true` so the bare name `php` resolves via PATH/PATHEXT on Windows,
|
|
73
|
+
* matching how the interactive shell finds php.exe. Never rejects/throws:
|
|
74
|
+
* a missing binary emits 'error', which we catch and report as null.
|
|
75
|
+
*/
|
|
76
|
+
function detectPhp() {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
return new Promise((resolve) => {
|
|
79
|
+
let output = '';
|
|
80
|
+
let settled = false;
|
|
81
|
+
const finish = (version) => {
|
|
82
|
+
if (settled)
|
|
83
|
+
return;
|
|
84
|
+
settled = true;
|
|
85
|
+
resolve(version);
|
|
86
|
+
};
|
|
87
|
+
const phpProcess = spawn('php', ['-v'], { shell: true });
|
|
88
|
+
phpProcess.stdout.on('data', (data) => {
|
|
89
|
+
output += data.toString();
|
|
90
|
+
});
|
|
91
|
+
phpProcess.on('error', () => finish(null));
|
|
92
|
+
phpProcess.on('close', () => {
|
|
93
|
+
const match = output.match(/PHP (\d+\.\d+\.\d+)/);
|
|
94
|
+
finish(match ? `v${match[1]}` : null);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function copyProjectStructure(sourcePath: string, destinationPath: string): Promise<void>;
|
|
1
|
+
export declare function copyProjectStructure(sourcePath: string, destinationPath: string): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.copyProjectStructure = copyProjectStructure;
|
|
16
|
-
const fs_1 = __importDefault(require("fs"));
|
|
17
|
-
const path_1 = __importDefault(require("path"));
|
|
18
|
-
function copyProjectStructure(sourcePath, destinationPath) {
|
|
19
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
-
const entries = yield fs_1.default.promises.readdir(sourcePath, { withFileTypes: true });
|
|
21
|
-
for (const entry of entries) {
|
|
22
|
-
const sourceFile = path_1.default.join(sourcePath, entry.name);
|
|
23
|
-
const destinationFile = path_1.default.join(destinationPath, entry.name);
|
|
24
|
-
if (entry.isDirectory()) {
|
|
25
|
-
yield fs_1.default.promises.mkdir(destinationFile);
|
|
26
|
-
yield copyProjectStructure(sourceFile, destinationFile);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
yield fs_1.default.promises.copyFile(sourceFile, destinationFile);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.copyProjectStructure = copyProjectStructure;
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
function copyProjectStructure(sourcePath, destinationPath) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const entries = yield fs_1.default.promises.readdir(sourcePath, { withFileTypes: true });
|
|
21
|
+
for (const entry of entries) {
|
|
22
|
+
const sourceFile = path_1.default.join(sourcePath, entry.name);
|
|
23
|
+
const destinationFile = path_1.default.join(destinationPath, entry.name);
|
|
24
|
+
if (entry.isDirectory()) {
|
|
25
|
+
yield fs_1.default.promises.mkdir(destinationFile);
|
|
26
|
+
yield copyProjectStructure(sourceFile, destinationFile);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
yield fs_1.default.promises.copyFile(sourceFile, destinationFile);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|