cmyr-template-cli 1.2.0 → 1.3.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.
Files changed (2) hide show
  1. package/dist/plopfile.js +41 -6
  2. package/package.json +7 -3
package/dist/plopfile.js CHANGED
@@ -5,7 +5,9 @@ var path = require('path');
5
5
  var fs = require('fs-extra');
6
6
  var ora = require('ora');
7
7
  var download = require('download-git-repo');
8
+ var axios = require('axios');
8
9
  var child_process = require('child_process');
10
+ var any = require('promise.any');
9
11
 
10
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
13
 
@@ -13,16 +15,27 @@ var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
13
15
  var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
14
16
  var ora__default = /*#__PURE__*/_interopDefaultLegacy(ora);
15
17
  var download__default = /*#__PURE__*/_interopDefaultLegacy(download);
18
+ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
19
+ var any__default = /*#__PURE__*/_interopDefaultLegacy(any);
16
20
 
17
- const env = process.env;
18
- const __DEV__ = env.NODE_ENV === 'development';
21
+ process.env;
19
22
  const PACKAGE_MANAGER = 'pnpm';
20
23
 
24
+ if (!Promise.any) {
25
+ Promise.any = any__default["default"];
26
+ }
27
+ const REMOTES = [
28
+ 'https://github.com',
29
+ 'https://hub.fastgit.org',
30
+ 'https://gitclone.com',
31
+ 'https://github.com.cnpmjs.org',
32
+ ];
21
33
  async function downloadGitRepo(repository, destination, options = {}) {
34
+ const fastRepo = await getFastGitRepo(repository);
22
35
  const loading = ora__default["default"](`download - ${repository}`);
23
36
  loading.start();
24
37
  return new Promise((resolve, reject) => {
25
- download__default["default"](repository, destination, options, (err) => {
38
+ download__default["default"](fastRepo, destination, options, (err) => {
26
39
  loading.stop();
27
40
  if (err) {
28
41
  return reject(err);
@@ -85,6 +98,28 @@ async function getGitUserName() {
85
98
  const username = (await asyncExec('git config user.name'));
86
99
  return username.trim();
87
100
  }
101
+ async function getFastGitRepo(repository) {
102
+ const loading = ora__default["default"](`正在选择镜像源 - ${repository}`);
103
+ loading.start();
104
+ try {
105
+ const fast = await Promise.any(REMOTES.map((remote) => {
106
+ const url = `${remote}/${repository}/archive/refs/heads/master.zip`;
107
+ return axios__default["default"]({
108
+ url,
109
+ method: 'HEAD',
110
+ timeout: 15 * 1000,
111
+ });
112
+ }));
113
+ return `direct:${fast.config.url}`;
114
+ }
115
+ catch (error) {
116
+ console.error(error);
117
+ process.exit(1);
118
+ }
119
+ finally {
120
+ loading.stop();
121
+ }
122
+ }
88
123
 
89
124
  module.exports = function (plop) {
90
125
  plop.setActionType('initProject', async (answers) => {
@@ -92,7 +127,7 @@ module.exports = function (plop) {
92
127
  const author = answers.author;
93
128
  const template = answers.template;
94
129
  const projectPath = path__default["default"].join(process.cwd(), name);
95
- await downloadGitRepo(`github:CaoMeiYouRen/${template}`, projectPath);
130
+ await downloadGitRepo(`CaoMeiYouRen/${template}`, projectPath);
96
131
  await init(projectPath, {
97
132
  name,
98
133
  author,
@@ -110,7 +145,7 @@ module.exports = function (plop) {
110
145
  validate(input) {
111
146
  return input.trim().length !== 0;
112
147
  },
113
- default: __DEV__ ? 'temp' : '',
148
+ default: '',
114
149
  filter: (e) => e.trim(),
115
150
  },
116
151
  {
@@ -120,7 +155,7 @@ module.exports = function (plop) {
120
155
  validate(input) {
121
156
  return input.trim().length !== 0;
122
157
  },
123
- default: __DEV__ ? 'CaoMeiYouRen' : await getGitUserName(),
158
+ default: await getGitUserName(),
124
159
  filter: (e) => e.trim(),
125
160
  },
126
161
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmyr-template-cli",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "草梅友仁自制的项目模板创建器",
5
5
  "author": "CaoMeiYouRen",
6
6
  "license": "MIT",
@@ -27,13 +27,14 @@
27
27
  "release": "semantic-release",
28
28
  "commit": "git add . && git cz",
29
29
  "create": "ct create",
30
- "build:dev": "npm run build && rimraf temp && cross-env NODE_ENV=development ct create",
30
+ "build:dev": "rimraf dist && cross-env NODE_ENV=development rollup -c && rimraf temp && cross-env NODE_ENV=development ct create",
31
31
  "build:prod": "npm run build && rimraf temp && cross-env NODE_ENV=production ct create"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@rollup/plugin-commonjs": "^21.0.0",
35
35
  "@rollup/plugin-json": "^4.1.0",
36
36
  "@rollup/plugin-node-resolve": "^13.0.5",
37
+ "@rollup/plugin-replace": "^3.0.0",
37
38
  "@rollup/plugin-typescript": "^8.0.0",
38
39
  "@semantic-release/changelog": "^6.0.0",
39
40
  "@semantic-release/git": "^10.0.0",
@@ -41,6 +42,7 @@
41
42
  "@types/fs-extra": "^9.0.4",
42
43
  "@types/lodash": "^4.14.165",
43
44
  "@types/node": "^16.9.6",
45
+ "@types/promise.any": "^2.0.0",
44
46
  "@typescript-eslint/eslint-plugin": "^4.9.0",
45
47
  "@typescript-eslint/parser": "^4.9.0",
46
48
  "commitizen": "^4.2.2",
@@ -64,6 +66,7 @@
64
66
  "validate-commit-msg": "^2.14.0"
65
67
  },
66
68
  "dependencies": {
69
+ "axios": "^0.24.0",
67
70
  "colors": "^1.4.0",
68
71
  "commander": "^8.2.0",
69
72
  "dayjs": "^1.9.6",
@@ -71,7 +74,8 @@
71
74
  "fs-extra": "^10.0.0",
72
75
  "minimist": "^1.2.5",
73
76
  "ora": "^5.4.1",
74
- "plop": "^2.7.6"
77
+ "plop": "^2.7.6",
78
+ "promise.any": "^2.0.2"
75
79
  },
76
80
  "config": {
77
81
  "commitizen": {