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 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.1" , '-v, --version');
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 dependabotPath = path__default["default"].join(projectPath, '.github/dependabot.yml');
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
- if (await fs__default["default"].pathExists(dependabotPath)) {
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 yarnPath = path__default["default"].join(projectPath, 'yarn.lock');
221
+ const files = ['yarn.lock'];
228
222
  if (isRemoveYarn) {
229
- if (await fs__default["default"].pathExists(yarnPath)) {
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
- if (await fs__default["default"].pathExists(newReadmePath)) {
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 newReadmePath = path__default["default"].join(projectPath, 'CONTRIBUTING.md');
432
- const readmeContent = await ejs__default["default"].render(template, projectInfos, {
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
- if (await fs__default["default"].pathExists(newReadmePath)) {
437
- await fs__default["default"].remove(newReadmePath);
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 newReadmePath = path__default["default"].join(projectPath, 'LICENSE');
460
- const readmeContent = await ejs__default["default"].render(template, projectInfos, {
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
- if (await fs__default["default"].pathExists(newReadmePath)) {
465
- await fs__default["default"].remove(newReadmePath);
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
- files.forEach(async (file) => {
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
- const oldReleaseYml = path__default["default"].join(projectPath, releaseYml);
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
- files.forEach(async (file) => {
515
- const templatePath = path__default["default"].join(__dirname, '../templates/', file);
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
- files.forEach(async (file) => {
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
- files.forEach(async (file) => {
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
- files.forEach(async (file) => {
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.2",
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": "^17.0.0",
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": "^12.0.2",
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",