cmyr-template-cli 1.12.2 → 1.12.3
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/dist/index.js +1 -1
- package/dist/plopfile.js +59 -75
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
|
13
13
|
|
|
14
14
|
const program = new commander.Command('ct')
|
|
15
15
|
.description('草梅项目创建器');
|
|
16
|
-
program.version("1.12.
|
|
16
|
+
program.version("1.12.2" , '-v, --version');
|
|
17
17
|
const args = process.argv.slice(2);
|
|
18
18
|
if (args.length === 0) {
|
|
19
19
|
args.push('create');
|
package/dist/plopfile.js
CHANGED
|
@@ -206,15 +206,9 @@ async function getGitUserName() {
|
|
|
206
206
|
async function initDependabot(projectPath, answers) {
|
|
207
207
|
try {
|
|
208
208
|
const { isOpenSource, isRemoveDependabot } = answers;
|
|
209
|
-
const
|
|
210
|
-
const mergifyPath = path__default["default"].join(projectPath, '.github/mergify.yml');
|
|
209
|
+
const files = ['.github/dependabot.yml', '.github/mergify.yml'];
|
|
211
210
|
if (!isOpenSource || isRemoveDependabot) {
|
|
212
|
-
|
|
213
|
-
await fs__default["default"].remove(dependabotPath);
|
|
214
|
-
}
|
|
215
|
-
if (await fs__default["default"].pathExists(mergifyPath)) {
|
|
216
|
-
await fs__default["default"].remove(mergifyPath);
|
|
217
|
-
}
|
|
211
|
+
await removeFiles(projectPath, files);
|
|
218
212
|
}
|
|
219
213
|
}
|
|
220
214
|
catch (error) {
|
|
@@ -224,11 +218,9 @@ async function initDependabot(projectPath, answers) {
|
|
|
224
218
|
async function initYarn(projectPath, answers) {
|
|
225
219
|
try {
|
|
226
220
|
const { isRemoveYarn } = answers;
|
|
227
|
-
const
|
|
221
|
+
const files = ['yarn.lock'];
|
|
228
222
|
if (isRemoveYarn) {
|
|
229
|
-
|
|
230
|
-
await fs__default["default"].remove(yarnPath);
|
|
231
|
-
}
|
|
223
|
+
await removeFiles(projectPath, files);
|
|
232
224
|
}
|
|
233
225
|
}
|
|
234
226
|
catch (error) {
|
|
@@ -412,9 +404,7 @@ async function initReadme(projectPath, projectInfos) {
|
|
|
412
404
|
debug: false,
|
|
413
405
|
async: true,
|
|
414
406
|
});
|
|
415
|
-
|
|
416
|
-
await fs__default["default"].remove(newReadmePath);
|
|
417
|
-
}
|
|
407
|
+
await removeFiles(projectPath, ['README.md']);
|
|
418
408
|
await fs__default["default"].writeFile(newReadmePath, lintMd(lodash.unescape(readmeContent)));
|
|
419
409
|
loading.succeed('README.md 初始化成功!');
|
|
420
410
|
}
|
|
@@ -428,15 +418,13 @@ async function initContributing(projectPath, projectInfos) {
|
|
|
428
418
|
try {
|
|
429
419
|
const templatePath = path__default["default"].join(__dirname, '../templates/CONTRIBUTING.md');
|
|
430
420
|
const template = (await fs__default["default"].readFile(templatePath, 'utf8')).toString();
|
|
431
|
-
const
|
|
432
|
-
const
|
|
421
|
+
const newContributingPath = path__default["default"].join(projectPath, 'CONTRIBUTING.md');
|
|
422
|
+
const content = await ejs__default["default"].render(template, projectInfos, {
|
|
433
423
|
debug: false,
|
|
434
424
|
async: true,
|
|
435
425
|
});
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
}
|
|
439
|
-
await fs__default["default"].writeFile(newReadmePath, lintMd(lodash.unescape(readmeContent)));
|
|
426
|
+
await removeFiles(projectPath, ['CONTRIBUTING.md']);
|
|
427
|
+
await fs__default["default"].writeFile(newContributingPath, lintMd(lodash.unescape(content)));
|
|
440
428
|
loading.succeed('贡献指南 初始化成功!');
|
|
441
429
|
}
|
|
442
430
|
catch (error) {
|
|
@@ -456,15 +444,13 @@ async function initLicense(projectPath, projectInfos) {
|
|
|
456
444
|
return;
|
|
457
445
|
}
|
|
458
446
|
const template = (await fs__default["default"].readFile(templatePath, 'utf8')).toString();
|
|
459
|
-
const
|
|
460
|
-
const
|
|
447
|
+
const newPath = path__default["default"].join(projectPath, 'LICENSE');
|
|
448
|
+
const content = await ejs__default["default"].render(template, projectInfos, {
|
|
461
449
|
debug: false,
|
|
462
450
|
async: true,
|
|
463
451
|
});
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
}
|
|
467
|
-
await fs__default["default"].writeFile(newReadmePath, lodash.unescape(readmeContent));
|
|
452
|
+
await removeFiles(projectPath, ['LICENSE']);
|
|
453
|
+
await fs__default["default"].writeFile(newPath, lodash.unescape(content));
|
|
468
454
|
loading.succeed('LICENSE 初始化成功!');
|
|
469
455
|
}
|
|
470
456
|
catch (error) {
|
|
@@ -475,14 +461,7 @@ async function initLicense(projectPath, projectInfos) {
|
|
|
475
461
|
async function initConfig(projectPath) {
|
|
476
462
|
try {
|
|
477
463
|
const files = ['.editorconfig', 'commitlint.config.js'];
|
|
478
|
-
|
|
479
|
-
const templatePath = path__default["default"].join(__dirname, '../templates/', file);
|
|
480
|
-
const newPath = path__default["default"].join(projectPath, file);
|
|
481
|
-
if (await fs__default["default"].pathExists(newPath)) {
|
|
482
|
-
await fs__default["default"].remove(newPath);
|
|
483
|
-
}
|
|
484
|
-
await fs__default["default"].copyFile(templatePath, newPath);
|
|
485
|
-
});
|
|
464
|
+
await copyFilesFromTemplates(projectPath, files);
|
|
486
465
|
}
|
|
487
466
|
catch (error) {
|
|
488
467
|
console.error(error);
|
|
@@ -502,23 +481,10 @@ async function initGithubWorkflows(projectPath, answers) {
|
|
|
502
481
|
files.push(releaseYml);
|
|
503
482
|
}
|
|
504
483
|
else {
|
|
505
|
-
|
|
506
|
-
if (await fs__default["default"].pathExists(oldReleaseYml)) {
|
|
507
|
-
await fs__default["default"].remove(oldReleaseYml);
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
const oldReleaseYml = path__default["default"].join(projectPath, '.github/release.yml');
|
|
511
|
-
if (await fs__default["default"].pathExists(oldReleaseYml)) {
|
|
512
|
-
await fs__default["default"].remove(oldReleaseYml);
|
|
484
|
+
await removeFiles(projectPath, [releaseYml]);
|
|
513
485
|
}
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
const newPath = path__default["default"].join(projectPath, file);
|
|
517
|
-
if (await fs__default["default"].pathExists(newPath)) {
|
|
518
|
-
await fs__default["default"].remove(newPath);
|
|
519
|
-
}
|
|
520
|
-
await fs__default["default"].copyFile(templatePath, newPath);
|
|
521
|
-
});
|
|
486
|
+
await removeFiles(projectPath, ['.github/workflows/auto-merge.yml', '.github/release.yml']);
|
|
487
|
+
await copyFilesFromTemplates(projectPath, files);
|
|
522
488
|
loading.succeed('Github Workflows 初始化成功!');
|
|
523
489
|
}
|
|
524
490
|
catch (error) {
|
|
@@ -530,14 +496,7 @@ async function initSemanticRelease(projectPath) {
|
|
|
530
496
|
const loading = ora__default["default"]('正在初始化 semantic-release ……').start();
|
|
531
497
|
try {
|
|
532
498
|
const files = ['.releaserc.js'];
|
|
533
|
-
|
|
534
|
-
const templatePath = path__default["default"].join(__dirname, '../templates/', file);
|
|
535
|
-
const newPath = path__default["default"].join(projectPath, file);
|
|
536
|
-
if (await fs__default["default"].pathExists(newPath)) {
|
|
537
|
-
await fs__default["default"].remove(newPath);
|
|
538
|
-
}
|
|
539
|
-
await fs__default["default"].copyFile(templatePath, newPath);
|
|
540
|
-
});
|
|
499
|
+
await copyFilesFromTemplates(projectPath, files);
|
|
541
500
|
const pkg = await getProjectJson(projectPath);
|
|
542
501
|
const devDependencies = {
|
|
543
502
|
'@semantic-release/changelog': '^6.0.1',
|
|
@@ -572,14 +531,7 @@ async function initHusky(projectPath) {
|
|
|
572
531
|
if (!await fs__default["default"].pathExists(dir)) {
|
|
573
532
|
await fs__default["default"].mkdirp(dir);
|
|
574
533
|
}
|
|
575
|
-
|
|
576
|
-
const templatePath = path__default["default"].join(__dirname, '../templates/', file);
|
|
577
|
-
const newPath = path__default["default"].join(projectPath, file);
|
|
578
|
-
if (await fs__default["default"].pathExists(newPath)) {
|
|
579
|
-
await fs__default["default"].remove(newPath);
|
|
580
|
-
}
|
|
581
|
-
await fs__default["default"].copyFile(templatePath, newPath);
|
|
582
|
-
});
|
|
534
|
+
await copyFilesFromTemplates(projectPath, files);
|
|
583
535
|
const extnames = ['js', 'ts'];
|
|
584
536
|
const pkg = await getProjectJson(projectPath);
|
|
585
537
|
if ((_a = pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) === null || _a === void 0 ? void 0 : _a.vue) {
|
|
@@ -656,14 +608,7 @@ async function initDocker(projectPath) {
|
|
|
656
608
|
const loading = ora__default["default"]('正在初始化 Docker ……').start();
|
|
657
609
|
try {
|
|
658
610
|
const files = ['.dockerignore', 'docker-compose.yml', 'Dockerfile'];
|
|
659
|
-
|
|
660
|
-
const templatePath = path__default["default"].join(__dirname, '../templates/', file);
|
|
661
|
-
const newPath = path__default["default"].join(projectPath, file);
|
|
662
|
-
if (await fs__default["default"].pathExists(newPath)) {
|
|
663
|
-
await fs__default["default"].remove(newPath);
|
|
664
|
-
}
|
|
665
|
-
await fs__default["default"].copyFile(templatePath, newPath);
|
|
666
|
-
});
|
|
611
|
+
await copyFilesFromTemplates(projectPath, files);
|
|
667
612
|
loading.succeed('Docker 初始化成功!');
|
|
668
613
|
}
|
|
669
614
|
catch (error) {
|
|
@@ -762,6 +707,45 @@ async function saveProjectJson(projectPath, pkgData) {
|
|
|
762
707
|
const newPkg = Object.assign({}, pkg, pkgData);
|
|
763
708
|
await fs__default["default"].writeFile(pkgPath, JSON.stringify(newPkg, null, 2));
|
|
764
709
|
}
|
|
710
|
+
async function copyFilesFromTemplates(projectPath, files) {
|
|
711
|
+
const loading = ora__default["default"](`正在复制文件 ${files.join()} ……`).start();
|
|
712
|
+
try {
|
|
713
|
+
for await (const file of files) {
|
|
714
|
+
const templatePath = path__default["default"].join(__dirname, '../templates/', file);
|
|
715
|
+
const newPath = path__default["default"].join(projectPath, file);
|
|
716
|
+
if (await fs__default["default"].pathExists(newPath)) {
|
|
717
|
+
await fs__default["default"].remove(newPath);
|
|
718
|
+
}
|
|
719
|
+
await fs__default["default"].copyFile(templatePath, newPath);
|
|
720
|
+
}
|
|
721
|
+
loading.succeed(`文件 ${files.join()} 复制成功!`);
|
|
722
|
+
return true;
|
|
723
|
+
}
|
|
724
|
+
catch (error) {
|
|
725
|
+
loading.fail(`文件 ${files.join()} 复制失败!`);
|
|
726
|
+
throw error;
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
async function removeFiles(projectPath, files) {
|
|
730
|
+
const loading = ora__default["default"](`正在删除文件 ${files.join()} ……`).start();
|
|
731
|
+
try {
|
|
732
|
+
for await (const file of files) {
|
|
733
|
+
const newPath = path__default["default"].join(projectPath, file);
|
|
734
|
+
if (await fs__default["default"].pathExists(newPath)) {
|
|
735
|
+
await fs__default["default"].remove(newPath);
|
|
736
|
+
loading.succeed(`文件 ${file} 删除成功!`);
|
|
737
|
+
}
|
|
738
|
+
else {
|
|
739
|
+
loading.succeed(`文件 ${file} 不存在,已跳过删除`);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
return true;
|
|
743
|
+
}
|
|
744
|
+
catch (error) {
|
|
745
|
+
loading.fail(`文件 ${files.join()} 删除失败!`);
|
|
746
|
+
throw error;
|
|
747
|
+
}
|
|
748
|
+
}
|
|
765
749
|
|
|
766
750
|
module.exports = function (plop) {
|
|
767
751
|
plop.setActionType('initProject', initProject);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cmyr-template-cli",
|
|
3
|
-
"version": "1.12.
|
|
3
|
+
"version": "1.12.3",
|
|
4
4
|
"description": "草梅友仁自制的项目模板创建器",
|
|
5
5
|
"author": "CaoMeiYouRen",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@types/ejs": "^3.1.0",
|
|
44
44
|
"@types/fs-extra": "^9.0.4",
|
|
45
45
|
"@types/lodash": "^4.14.165",
|
|
46
|
-
"@types/node": "^
|
|
46
|
+
"@types/node": "^18.0.0",
|
|
47
47
|
"@types/promise.any": "^2.0.0",
|
|
48
48
|
"@typescript-eslint/eslint-plugin": "^4.9.0",
|
|
49
49
|
"@typescript-eslint/parser": "^4.9.0",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"eslint": "^7.14.0",
|
|
58
58
|
"eslint-config-cmyr": "^1.1.14",
|
|
59
59
|
"husky": "^8.0.1",
|
|
60
|
-
"lint-staged": "^
|
|
60
|
+
"lint-staged": "^13.0.0",
|
|
61
61
|
"rimraf": "^3.0.2",
|
|
62
62
|
"rollup": "^2.33.3",
|
|
63
63
|
"rollup-plugin-terser": "^7.0.2",
|