easy-soft-develop 2.0.82 → 2.0.119

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.
@@ -23,10 +23,21 @@ const {
23
23
  contentFile: eslintContentFile,
24
24
  ignoreFile: eslintIgnoreFile,
25
25
  configFile: eslintConfigFile,
26
+ ruleCustomFile: eslintCustomRuleFile,
27
+ ruleEmbedFile: eslintEmbedRuleFile,
26
28
  ruleFile: eslintRuleFile,
29
+ extendEmbedFile: eslintExtendCustomFile,
30
+ extendCustomFile: eslintExtendEmbedFile,
27
31
  extendFile: eslintExtendFile,
32
+ parserCustomFile: eslintParserCustomFile,
33
+ parserEmbedFile: eslintParserEmbedFile,
28
34
  parserFile: eslintParserFile,
35
+ pluginEmbedFile: eslintPluginEmbedFile,
36
+ pluginCustomFile: eslintPluginCustomFile,
29
37
  pluginFile: eslintPluginFile,
38
+ settingCustomFile: eslintSettingCustomFile,
39
+ settingEmbedFile: eslintSettingEmbedFile,
40
+ settingFile: eslintSettingFile,
30
41
  } = require('../templates/eslint.template');
31
42
  const {
32
43
  attributeFile: gitAttributeFile,
@@ -123,11 +134,19 @@ const developDependencePackageCollection = [];
123
134
 
124
135
  const updateSpecialPackageCollection = [];
125
136
 
137
+ const updatePackageFromPackageOptions = {
138
+ agent: '',
139
+ localFile: '',
140
+ packageUrl: '',
141
+ repo: '',
142
+ };
143
+
126
144
  module.exports = {
127
145
  cleanCommand,
128
146
  cleanCollection,
129
147
  developDependencePackageCollection,
130
148
  updateSpecialPackageCollection,
149
+ updatePackageFromPackageOptions,
131
150
  };
132
151
  `;
133
152
 
@@ -151,6 +170,23 @@ clean(cleanCommand, cleanCollection);
151
170
  return createScriptFile('./develop/assists', 'clean.js', content, true);
152
171
  }
153
172
 
173
+ function createUpdatePackageFromPackageScriptFile() {
174
+ const content = `${fileGlobalHeader}
175
+ const { updatePackageFromPackage } = require('easy-soft-develop');
176
+
177
+ const { updatePackageFromPackageOptions } = require('./config');
178
+
179
+ updatePackageFromPackage(updatePackageFromPackageOptions);
180
+ `;
181
+
182
+ return createScriptFile(
183
+ './develop/assists',
184
+ 'update.package.from.package.js',
185
+ content,
186
+ true,
187
+ );
188
+ }
189
+
154
190
  function createPackageCheckSpecialVersionScriptFile() {
155
191
  const content = `${fileGlobalHeader}
156
192
  const { updateSpecialPackageVersion } = require('easy-soft-develop');
@@ -172,13 +208,23 @@ updateSpecialPackageVersion(updateSpecialPackageCollection);
172
208
  }
173
209
  }
174
210
 
175
- function createInstallGlobalDevDependenceScriptFile() {
211
+ function createInstallGlobalDevelopDependenceScriptFile() {
176
212
  const content = `${fileGlobalHeader}
177
- const { installGlobalDevDependencePackages } = require('easy-soft-develop');
178
-
179
- const { developDependencePackageCollection } = require('./config');
213
+ const { installDevelopDependencePackages } = require('easy-soft-develop');
180
214
 
181
- installGlobalDevDependencePackages(developDependencePackageCollection);
215
+ const {
216
+ globalDevelopPackageList,
217
+ mainDevelopPackageList,
218
+ childrenDevelopPackageList,
219
+ childrenSpecialDevelopPackageList,
220
+ } = require('./config');
221
+
222
+ installDevelopDependencePackages({
223
+ globalDevelopPackageList,
224
+ mainDevelopPackageList,
225
+ childrenDevelopPackageList,
226
+ childrenSpecialDevelopPackageList,
227
+ });
182
228
  `;
183
229
 
184
230
  try {
@@ -202,6 +248,7 @@ const eslintIgnoreFile = require('../config/eslint/template/ignore.content');
202
248
  const prettierFile = require('../config/prettier/template/content');
203
249
  const prettierIgnoreFile = require('../config/prettier/template/ignore.content');
204
250
  const stylelintFile = require('../config/stylelint/template/content');
251
+ const stylelintIgnoreFile = require('../config/stylelint/template/ignore.content');
205
252
  const editorFile = require('../config/editor/template/content');
206
253
  const editorAttributesFile = require('../config/git/template/attributes.content');
207
254
  const editorIgnoreFile = require('../config/git/template/ignore.content');
@@ -222,6 +269,9 @@ const packagePrettierContent = prettierFile.packageContent;
222
269
  const prettierIgnoreContent = prettierIgnoreFile.content;
223
270
 
224
271
  const mainStylelintContent = stylelintFile.mainContent;
272
+
273
+ const stylelintIgnoreContent = stylelintIgnoreFile.content;
274
+
225
275
  const packageStylelintContent = stylelintFile.packageContent;
226
276
 
227
277
  const editorConfigContent = editorFile.content;
@@ -235,38 +285,52 @@ const mainFileContentList = [
235
285
  {
236
286
  name: '.eslintrc.js',
237
287
  content: mainEslintFileContent,
288
+ coverFile: true,
238
289
  },
239
290
  {
240
291
  name: '.prettierrc.js',
241
292
  content: mainPrettierContent,
293
+ coverFile: true,
294
+ },
295
+ {
296
+ name: '.prettierignore',
297
+ content: prettierIgnoreContent,
298
+ coverFile: false,
242
299
  },
243
300
  {
244
301
  name: '.stylelintrc.js',
245
302
  content: mainStylelintContent,
303
+ coverFile: true,
304
+ },
305
+ {
306
+ name: '.stylelintignore',
307
+ content: stylelintIgnoreContent,
308
+ coverFile: false,
246
309
  },
247
310
  {
248
311
  name: '.editorconfig',
249
312
  content: editorConfigContent,
313
+ coverFile: true,
250
314
  },
251
315
  {
252
316
  name: '.eslintignore',
253
317
  content: eslintIgnoreContent,
254
- },
255
- {
256
- name: '.prettierignore',
257
- content: prettierIgnoreContent,
318
+ coverFile: false,
258
319
  },
259
320
  {
260
321
  name: '.gitattributes',
261
322
  content: gitAttributesContent,
323
+ coverFile: true,
262
324
  },
263
325
  {
264
326
  name: '.gitignore',
265
327
  content: gitIgnoreContent,
328
+ coverFile: false,
266
329
  },
267
330
  {
268
331
  name: '.lintstagedrc',
269
332
  content: lintStagedRcContent,
333
+ coverFile: false,
270
334
  },
271
335
  ];
272
336
 
@@ -274,38 +338,52 @@ const packageFileContentList = [
274
338
  {
275
339
  name: '.eslintrc.js',
276
340
  content: packageEslintFileContent,
341
+ coverFile: true,
277
342
  },
278
343
  {
279
344
  name: '.prettierrc.js',
280
345
  content: packagePrettierContent,
346
+ coverFile: true,
347
+ },
348
+ {
349
+ name: '.prettierignore',
350
+ content: prettierIgnoreContent,
351
+ coverFile: false,
281
352
  },
282
353
  {
283
354
  name: '.stylelintrc.js',
284
355
  content: packageStylelintContent,
356
+ coverFile: true,
357
+ },
358
+ {
359
+ name: '.stylelintignore',
360
+ content: stylelintIgnoreContent,
361
+ coverFile: false,
285
362
  },
286
363
  {
287
364
  name: '.editorconfig',
288
365
  content: editorConfigContent,
366
+ coverFile: true,
289
367
  },
290
368
  {
291
369
  name: '.eslintignore',
292
370
  content: eslintIgnoreContent,
293
- },
294
- {
295
- name: '.prettierignore',
296
- content: prettierIgnoreContent,
371
+ coverFile: false,
297
372
  },
298
373
  {
299
374
  name: '.gitattributes',
300
375
  content: gitAttributesContent,
376
+ coverFile: true,
301
377
  },
302
378
  {
303
379
  name: '.gitignore',
304
380
  content: gitIgnoreContent,
381
+ coverFile: false,
305
382
  },
306
383
  {
307
384
  name: '.lintstagedrc',
308
385
  content: lintStagedRcContent,
386
+ coverFile: false,
309
387
  },
310
388
  ];
311
389
 
@@ -354,12 +432,34 @@ function createDevelopFiles(waitMessage = '', successMessage = '') {
354
432
 
355
433
  writeFileWithOptionsSync(eslintConfigFile);
356
434
 
435
+ writeFileWithOptionsSync(eslintCustomRuleFile);
436
+
437
+ writeFileWithOptionsSync(eslintEmbedRuleFile);
438
+
357
439
  writeFileWithOptionsSync(eslintRuleFile);
358
440
 
441
+ writeFileWithOptionsSync(eslintSettingCustomFile);
442
+
443
+ writeFileWithOptionsSync(eslintSettingEmbedFile);
444
+
445
+ writeFileWithOptionsSync(eslintSettingFile);
446
+
447
+ writeFileWithOptionsSync(eslintExtendCustomFile);
448
+
449
+ writeFileWithOptionsSync(eslintExtendEmbedFile);
450
+
359
451
  writeFileWithOptionsSync(eslintExtendFile);
360
452
 
453
+ writeFileWithOptionsSync(eslintParserCustomFile);
454
+
455
+ writeFileWithOptionsSync(eslintParserEmbedFile);
456
+
361
457
  writeFileWithOptionsSync(eslintParserFile);
362
458
 
459
+ writeFileWithOptionsSync(eslintPluginCustomFile);
460
+
461
+ writeFileWithOptionsSync(eslintPluginEmbedFile);
462
+
363
463
  writeFileWithOptionsSync(eslintPluginFile);
364
464
 
365
465
  //#endregion
@@ -416,9 +516,11 @@ function createDevelopFiles(waitMessage = '', successMessage = '') {
416
516
 
417
517
  createCleanScriptFile();
418
518
 
519
+ createUpdatePackageFromPackageScriptFile();
520
+
419
521
  createPackageCheckSpecialVersionScriptFile();
420
522
 
421
- createInstallGlobalDevDependenceScriptFile();
523
+ createInstallGlobalDevelopDependenceScriptFile();
422
524
 
423
525
  createInitialEnvironmentScriptFiles();
424
526
 
@@ -437,7 +539,8 @@ module.exports = {
437
539
  createNpmConfigFile,
438
540
  createCleanScriptFile,
439
541
  createPackageCheckSpecialVersionScriptFile,
440
- createInstallGlobalDevDependenceScriptFile,
542
+ createInstallGlobalDevelopDependenceScriptFile,
441
543
  createInitialEnvironmentScriptFiles,
442
544
  createDevelopFiles,
545
+ createUpdatePackageFromPackageScriptFile,
443
546
  };
@@ -18,9 +18,9 @@ function createMainFile(fileWithContentCollection) {
18
18
  }
19
19
 
20
20
  fileWithContentCollection.forEach((o) => {
21
- const { name, content } = o;
21
+ const { name, content, coverFile } = o;
22
22
 
23
- writeFileSync(name, content);
23
+ writeFileSync(name, content, { coverFile });
24
24
  });
25
25
 
26
26
  const log = `main files [${fileWithContentCollection
@@ -43,9 +43,9 @@ function createPackageFile(fileWithContentCollection) {
43
43
  }
44
44
 
45
45
  fileWithContentCollection.forEach((o) => {
46
- const { name, content } = o;
46
+ const { name, content, coverFile } = o;
47
47
 
48
- writeFileSync(`${itemPath}/${name}`, content);
48
+ writeFileSync(`${itemPath}/${name}`, content, { coverFile });
49
49
  });
50
50
  });
51
51
 
@@ -82,7 +82,7 @@ function adjustMainPackageJson({ scripts }) {
82
82
  }
83
83
 
84
84
  function adjustChildrenPackageJson({ scripts }) {
85
- loopPackage(({ absolutePath }) => {
85
+ loopPackage(({ name, absolutePath }) => {
86
86
  const itemPath = absolutePath;
87
87
 
88
88
  const childPackageJsonPath = `${itemPath}/package.json`;
@@ -93,7 +93,7 @@ function adjustChildrenPackageJson({ scripts }) {
93
93
 
94
94
  writeJsonFileSync(childPackageJsonPath, packageJson, { coverFile: true });
95
95
 
96
- promptSuccess('adjust child package.json success');
96
+ promptSuccess(`adjust ${name} package.json success`);
97
97
  promptEmptyLine();
98
98
  });
99
99
  }
@@ -48,18 +48,32 @@ function adjustMainPackageJson(packageList) {
48
48
  writeJsonFileSync('./package.json', packageJson, { coverFile: true });
49
49
  }
50
50
 
51
- function adjustChildrenPackageJson(packageList) {
52
- if (!isArray(packageList) || packageList.length <= 0) {
51
+ function adjustChildrenPackageJson(packageList, specialPackageList) {
52
+ if (
53
+ !(
54
+ (isArray(packageList) && packageList.length > 0) ||
55
+ (isArray(specialPackageList) && specialPackageList.length > 0)
56
+ )
57
+ ) {
53
58
  return;
54
59
  }
55
60
 
56
61
  const o = buildPackageObject(packageList);
57
62
 
58
- loopPackage(({ relativePath }) => {
63
+ loopPackage(({ name, relativePath }) => {
59
64
  const packageJson = readJsonFileSync(`${relativePath}/package.json`);
60
65
 
66
+ let specials = {};
67
+
68
+ if (specialPackageList[name]) {
69
+ if (isArray(specialPackageList[name])) {
70
+ specials = buildPackageObject(specialPackageList[name]);
71
+ }
72
+ }
73
+
61
74
  packageJson.devDependencies = assignObject(
62
75
  o,
76
+ specials,
63
77
  packageJson.devDependencies || {},
64
78
  );
65
79
 
@@ -69,14 +83,30 @@ function adjustChildrenPackageJson(packageList) {
69
83
  });
70
84
  }
71
85
 
72
- function installGlobalDevelopDependencePackages(packageList) {
73
- const packages = getGlobalPackages().concat(packageList);
86
+ function installDevelopDependencePackages({
87
+ globalDevelopPackageList,
88
+ mainDevelopPackageList = [],
89
+ childrenDevelopPackageList = [],
90
+ childrenSpecialDevelopPackageList = [],
91
+ }) {
92
+ const packages = getGlobalPackages().concat(globalDevelopPackageList);
74
93
 
75
94
  promptInfo(`${packages.join()} will install`);
76
95
 
77
- adjustChildrenPackageJson(packages);
96
+ adjustChildrenPackageJson(
97
+ packages.concat(
98
+ isArray(childrenDevelopPackageList) ? childrenDevelopPackageList : [],
99
+ ),
100
+ isArray(childrenSpecialDevelopPackageList)
101
+ ? childrenSpecialDevelopPackageList
102
+ : [],
103
+ );
78
104
 
79
- adjustMainPackageJson(packages);
105
+ adjustMainPackageJson(
106
+ packages.concat(
107
+ isArray(mainDevelopPackageList) ? mainDevelopPackageList : [],
108
+ ),
109
+ );
80
110
 
81
111
  prettierAllPackageJson();
82
112
 
@@ -88,5 +118,5 @@ function installGlobalDevelopDependencePackages(packageList) {
88
118
  }
89
119
 
90
120
  module.exports = {
91
- installGlobalDevelopDependencePackages,
121
+ installDevelopDependencePackages,
92
122
  };
@@ -16,6 +16,7 @@ function getGlobalPackages() {
16
16
  '@babel/plugin-transform-runtime',
17
17
  '@babel/preset-env',
18
18
  '@babel/preset-react',
19
+ '@babel/runtime',
19
20
  ]);
20
21
 
21
22
  packages = packages.concat([
@@ -47,6 +48,8 @@ function getGlobalPackages() {
47
48
  'eslint-plugin-unicorn',
48
49
  ]);
49
50
 
51
+ packages = packages.concat(['documentation']);
52
+
50
53
  packages = packages.concat([
51
54
  'prettier',
52
55
  'prettier-plugin-organize-imports',
@@ -59,13 +62,7 @@ function getGlobalPackages() {
59
62
  'stylelint-config-standard',
60
63
  ]);
61
64
 
62
- packages = packages.concat(
63
- 'rimraf',
64
- 'lint-staged',
65
- 'husky',
66
- 'shelljs',
67
- 'terminal-kit',
68
- );
65
+ packages = packages.concat('rimraf', 'lint-staged', 'husky');
69
66
 
70
67
  packages = packages.concat('easy-soft-develop');
71
68
 
@@ -0,0 +1,153 @@
1
+ const download = require('download');
2
+ const agent = require('hpagent');
3
+
4
+ const {
5
+ promptSuccess,
6
+ promptLine,
7
+ promptError,
8
+ promptWarn,
9
+ exit,
10
+ readJsonFileSync,
11
+ resolvePath,
12
+ writeJsonFileSync,
13
+ checkStringIsEmpty,
14
+ } = require('../tools/meta');
15
+
16
+ const { HttpsProxyAgent } = agent;
17
+
18
+ function handlePackage({ packageFilePath, packageTempPath }) {
19
+ promptSuccess(`referential package.json :${packageTempPath}`);
20
+
21
+ const packageProjectPath = resolvePath(packageFilePath);
22
+
23
+ const packageJsonTemp = readJsonFileSync(packageTempPath);
24
+
25
+ const packageJsonTarget = readJsonFileSync(packageProjectPath);
26
+
27
+ const dependencies = packageJsonTemp.dependencies;
28
+ const devDependencies = packageJsonTemp.devDependencies;
29
+
30
+ packageJsonTarget.dependencies = dependencies;
31
+ packageJsonTarget.devDependencies = devDependencies;
32
+
33
+ writeJsonFileSync(packageProjectPath, packageJsonTarget, { coverFile: true });
34
+
35
+ promptSuccess(`update package.json success!`);
36
+
37
+ promptLine();
38
+
39
+ exit();
40
+ }
41
+
42
+ async function handleTempPackagePath({ agent, localFile, packageUrl, repo }) {
43
+ let packageTempPath = '';
44
+
45
+ if (localFile) {
46
+ promptSuccess(`use local referential package.json`);
47
+
48
+ promptSuccess(`file path: ${localFile}`);
49
+
50
+ promptLine();
51
+
52
+ packageTempPath = resolvePath(localFile);
53
+ } else {
54
+ promptSuccess(`try ${repo} repo`);
55
+
56
+ if (agent) {
57
+ promptSuccess(`agent: ${agent}`);
58
+ }
59
+
60
+ promptSuccess(`${repo} repo: ${packageUrl}`);
61
+
62
+ await download(packageUrl, resolvePath(`./temp`), {
63
+ ...(agent
64
+ ? {
65
+ agent: {
66
+ https: new HttpsProxyAgent({
67
+ keepAlive: true,
68
+ keepAliveMsecs: 1000,
69
+ maxSockets: 256,
70
+ maxFreeSockets: 256,
71
+ scheduling: 'lifo',
72
+ proxy: agent,
73
+ }),
74
+ },
75
+ }
76
+ : {}),
77
+ });
78
+
79
+ promptSuccess(`use ${repo} repo success!`);
80
+
81
+ packageTempPath = resolvePath(`./temp/package.json`);
82
+
83
+ promptSuccess(`packageTempPath: ${packageTempPath}`);
84
+ }
85
+
86
+ return packageTempPath;
87
+ }
88
+
89
+ async function updatePackageFromPackage({
90
+ path,
91
+ primaryRemoteUrl,
92
+ spareRemoteUrl,
93
+ agent,
94
+ localFile,
95
+ }) {
96
+ if (checkStringIsEmpty(primaryRemoteUrl)) {
97
+ promptError('please input primary remote package.json url');
98
+
99
+ exit();
100
+ }
101
+
102
+ let packageTempPath = '';
103
+
104
+ promptSuccess(`prepare to update package.json: `);
105
+
106
+ promptLine();
107
+
108
+ try {
109
+ packageTempPath = await handleTempPackagePath({
110
+ agent,
111
+ localFile,
112
+ packageUrl: primaryRemoteUrl,
113
+ repo: 'github',
114
+ });
115
+ } catch (error) {
116
+ if (checkStringIsEmpty(primaryRemoteUrl)) {
117
+ promptError('please input spare remote package.json url');
118
+
119
+ exit();
120
+ }
121
+
122
+ promptLine();
123
+
124
+ promptWarn(
125
+ `use github repo failure! switch to gitee, gitee repo possible update delay.`,
126
+ );
127
+
128
+ promptLine();
129
+
130
+ try {
131
+ packageTempPath = await handleTempPackagePath({
132
+ agent: '',
133
+ localFile,
134
+ packageUrl: spareRemoteUrl,
135
+ repo: 'gitee',
136
+ });
137
+ } catch (error) {
138
+ promptLine();
139
+
140
+ promptError(error);
141
+
142
+ promptLine();
143
+
144
+ promptWarn('download error, please check network');
145
+
146
+ exit();
147
+ }
148
+ }
149
+
150
+ handlePackage(path, packageTempPath);
151
+ }
152
+
153
+ module.exports = { updatePackageFromPackage };