@deot/dev-cli 1.0.6 → 1.0.8

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.
@@ -106,6 +106,10 @@ class Shared {
106
106
  pre[packageFolderName$] = require$$2(path.resolve(packageDir, packageFolderName$, 'package.json'));
107
107
  return pre;
108
108
  }, {});
109
+ const packageDirsMap = packageFolderNames.reduce((pre, packageFolderName$) => {
110
+ pre[packageFolderName$] = path.resolve(packageDir, packageFolderName$);
111
+ return pre;
112
+ }, {});
109
113
  const packageRelation = packageFolderNames.reduce((pre, packageFolderName$) => {
110
114
  let packagesOptions = packageOptionsMap[packageFolderName$];
111
115
  let deps = {
@@ -120,6 +124,7 @@ class Shared {
120
124
  .map(i => i.replace(new RegExp(`${packageName}-?`), '') || packageFolderName);
121
125
  const homepage = (rootPackageOptions.repository || packageOptions.repository || {}).url || '';
122
126
  const config = {
127
+ cwd,
123
128
  workspace,
124
129
  homepage: homepage.replace(/(.*)(https?:\/\/.*)(#|\.git)/, '$2'),
125
130
  packageFolderName,
@@ -129,6 +134,7 @@ class Shared {
129
134
  packageVersion,
130
135
  packageFolderNames,
131
136
  packageOptionsMap,
137
+ packageDirsMap,
132
138
  packageRelation,
133
139
  normalizePackageNames,
134
140
  normalizePackageFolderNames
@@ -345,9 +351,18 @@ const run$3 = (options) => Utils.autoCatch(async () => {
345
351
  ...promptOptions
346
352
  };
347
353
  }
354
+ const { cwd, workspace, packageOptionsMap, packageDirsMap } = locals;
348
355
  const { packageName, watch, dryRun } = options;
349
356
  options.packageFolderName = Shared.getPackageFolderName(options.packageName) || options.packageFolderName;
350
- options.workspace = locals.workspace;
357
+ options.workspace = workspace;
358
+ const packageOptions = packageOptionsMap[options.packageFolderName];
359
+ const packageDir = packageDirsMap[options.packageFolderName];
360
+ if (workspace
361
+ && cwd !== packageDir
362
+ && packageOptions?.scripts?.['test']) {
363
+ await Shell.spawn(`npm`, ['run', 'test']);
364
+ return;
365
+ }
351
366
  if (!options.packageFolderName)
352
367
  delete options.packageFolderName;
353
368
  if (!options.workspace)
@@ -377,14 +392,34 @@ const run$3 = (options) => Utils.autoCatch(async () => {
377
392
  });
378
393
 
379
394
  const run$2 = (options) => Utils.autoCatch(async () => {
395
+ const locals = Shared.impl();
380
396
  if (typeof options.dryRun === 'undefined') {
381
397
  options.dryRun = process.env.NODE_ENV === 'UNIT';
382
398
  }
383
399
  if (options.dryRun)
384
400
  return Shell.spawn(`echo development`);
385
- process.env.NODE_ENV = process.env.NODE_ENV || 'development';
401
+ const { cwd, workspace, packageOptionsMap, packageDirsMap } = locals;
402
+ const { packageName } = options;
403
+ const getPackageFolderName = Shared.getPackageFolderName(packageName);
404
+ const packageOptions = packageOptionsMap[getPackageFolderName];
405
+ const packageDir = packageDirsMap[getPackageFolderName];
386
406
  options.watch = true;
387
- await run$3(options);
407
+ if (!workspace
408
+ && packageName
409
+ && packageName !== '**'
410
+ && cwd !== packageDir
411
+ && packageOptions?.scripts?.['dev']) {
412
+ await Shell.spawn(`npm`, ['run', 'dev']);
413
+ return;
414
+ }
415
+ await Shell.spawn(`cross-env`, [
416
+ 'NODE_ENV=development',
417
+ 'npm',
418
+ 'run',
419
+ 'test',
420
+ '--',
421
+ packageName ? `--package-name ${packageName}` : ''
422
+ ]);
388
423
  });
389
424
 
390
425
  const require$$1 = createRequire(import.meta.url);
@@ -393,7 +428,8 @@ class Builder {
393
428
  packageName;
394
429
  packageOptions;
395
430
  config;
396
- constructor(config) {
431
+ commandOptions;
432
+ constructor(config, commandOptions) {
397
433
  const { workspace, packageDir, packageName } = Shared.impl();
398
434
  if (typeof config === 'string') {
399
435
  let packageFolderName = config;
@@ -402,12 +438,25 @@ class Builder {
402
438
  dir: packageDir$,
403
439
  name: packageFolderName || 'index',
404
440
  input: packageDir$ + '/src/index.ts',
405
- output: {
406
- file: packageDir$ + '/dist/index.js',
407
- format: 'es',
408
- exports: 'named',
409
- sourcemap: false
410
- }
441
+ output: [
442
+ {
443
+ file: packageDir$ + '/dist/index.es.js',
444
+ format: 'es',
445
+ exports: 'named',
446
+ sourcemap: false
447
+ },
448
+ {
449
+ file: packageDir$ + '/dist/index.iife.js',
450
+ format: 'iife',
451
+ name: packageName,
452
+ },
453
+ {
454
+ file: packageDir$ + '/dist/index.cjs.js',
455
+ format: 'cjs'
456
+ }
457
+ ].filter(i => {
458
+ return commandOptions.output.includes(i.format);
459
+ })
411
460
  };
412
461
  }
413
462
  this.packageDir = path.resolve(packageDir, workspace ? `./${config.name}` : '');
@@ -416,24 +465,37 @@ class Builder {
416
465
  : `${packageName}-${config.name}`;
417
466
  this.packageOptions = require$$1(`${this.packageDir}/package.json`);
418
467
  this.config = config;
468
+ this.commandOptions = commandOptions;
419
469
  }
420
470
  async process() {
421
- const { packageName, packageDir } = this;
471
+ const { cwd, workspace } = Shared.impl();
472
+ const { packageOptions, packageName, packageDir } = this;
473
+ if (workspace
474
+ && packageOptions?.scripts?.build
475
+ && packageDir !== cwd) {
476
+ await Shell.spawn(`npm`, ['run', 'build'], {
477
+ cwd: packageDir
478
+ });
479
+ return;
480
+ }
422
481
  const spinner = ora(`${packageName} Build ...`);
423
482
  try {
424
483
  spinner.start();
425
484
  await fs.emptyDir(`${packageDir}/dist`);
426
- const stat = await this.buildSourceAsES();
485
+ const stats = await this.buildSources();
427
486
  await this.buildTypes();
428
487
  spinner.stop();
429
- Logger.log(`${chalk.cyan(`${packageName}`)} ${chalk.green('Success')} ES: ${Utils.formatBytes(stat.size)}`);
488
+ Logger.log(`${chalk.cyan(`${packageName}`)}: ${chalk.green('Success')}`);
489
+ stats.forEach((stat) => {
490
+ Logger.log(`${chalk.green(stat.format.toUpperCase())}: ${Utils.formatBytes(stat.size)}`);
491
+ });
430
492
  }
431
493
  catch (e) {
432
494
  Logger.log('Error!', e);
433
495
  throw e;
434
496
  }
435
497
  }
436
- async buildSourceAsES() {
498
+ async buildSources() {
437
499
  const { workspace } = Shared.impl();
438
500
  const { name, input, output } = this.config;
439
501
  const { packageOptions } = this;
@@ -466,19 +528,36 @@ class Builder {
466
528
  commonjs({ extensions: ['.js', '.ts'] }),
467
529
  nodeResolve(),
468
530
  replace({
469
- '1.0.5': `'${packageOptions.version}'`,
531
+ '1.0.6': `'${packageOptions.version}'`,
470
532
  false: 'false',
471
533
  true: true
472
534
  })
473
535
  ]
474
536
  });
475
- await builder.write(output);
476
- const stat = await fs.stat(output.file);
477
- return stat;
537
+ await Promise.all(output.map(builder.write));
538
+ const stats = [];
539
+ await output.reduce((pre, cur, index) => {
540
+ pre
541
+ .then(() => fs.stat(cur.file))
542
+ .then((stat) => {
543
+ stats[index] = {
544
+ format: cur.format,
545
+ size: stat.size
546
+ };
547
+ });
548
+ return pre;
549
+ }, Promise.resolve());
550
+ return stats;
478
551
  }
479
552
  async buildTypes() {
480
553
  const { workspace } = Shared.impl();
481
- const { packageDir } = this;
554
+ const { packageDir, packageOptions } = this;
555
+ if (workspace && packageOptions?.scripts?.['build:types']) {
556
+ await Shell.spawn(`npm`, ['run', 'build:types'], {
557
+ cwd: packageDir
558
+ });
559
+ return;
560
+ }
482
561
  const config = path.resolve(packageDir, `api-extractor.json`);
483
562
  if (fs.existsSync(config)) {
484
563
  const result = Extractor.invoke(ExtractorConfig.loadFileAndPrepare(config), {
@@ -493,8 +572,8 @@ class Builder {
493
572
  await fs.remove(`${packageDir}/dist/${workspace || 'src'}`);
494
573
  }
495
574
  }
496
- const builder = (options) => {
497
- return new Builder(options);
575
+ const builder = (options, commandOptions) => {
576
+ return new Builder(options, commandOptions);
498
577
  };
499
578
 
500
579
  const run$1 = (options) => Utils.autoCatch(async () => {
@@ -515,7 +594,7 @@ const run$1 = (options) => Utils.autoCatch(async () => {
515
594
  return Shell.spawn(`echo ${inputs.join(' ')}`);
516
595
  await inputs
517
596
  .reduce((preProcess, packageFolderName$) => {
518
- preProcess = preProcess.then(() => builder(packageFolderName$).process());
597
+ preProcess = preProcess.then(() => builder(packageFolderName$, options).process());
519
598
  return preProcess;
520
599
  }, Promise.resolve());
521
600
  }, {
@@ -596,12 +675,13 @@ class Releaser {
596
675
  }
597
676
  ({ stdout } = await Shell.exec('git', params));
598
677
  }
599
- const rePlugin = new RegExp(`^[\\w\\!]+\\(([\\w,-]+)?${packageFolderName}([\\w,-]+)?\\)`, 'i');
600
- const commits = stdout
601
- .split(SUFFIX)
678
+ const allowTypes = ['feat', `fix`, `break change`, `style`, `perf`, `types`, `refactor`, `chore`];
679
+ const rePlugin = new RegExp(`^(${allowTypes.join('|')})${workspace ? `\\(${packageFolderName}\\)` : '(\\(.+\\))?'}: .*`, 'i');
680
+ const allCommits = stdout.split(SUFFIX);
681
+ const commits = allCommits
602
682
  .filter((commit) => {
603
683
  const chunk = commit.trim();
604
- return chunk && (!workspace || rePlugin.test(chunk));
684
+ return chunk && rePlugin.test(chunk);
605
685
  })
606
686
  .map((commit) => {
607
687
  const node = parser.sync(commit);
@@ -619,7 +699,11 @@ class Releaser {
619
699
  Logger.log(chalk.red(`No Commits Found.`));
620
700
  }
621
701
  else {
622
- Logger.log(chalk.yellow(`Found `) + chalk.bold(`${commits.length}`) + ` Commits`);
702
+ Logger.log(chalk.yellow(`Found `)
703
+ + chalk.bold(`${allCommits.length}`)
704
+ + ` Commits, `
705
+ + chalk.bold(`${commits.length}`)
706
+ + ' Commits Valid');
623
707
  }
624
708
  const { skipUpdatePackage } = commandOptions;
625
709
  if (commits.length && skipUpdatePackage) {
@@ -1051,7 +1135,7 @@ program
1051
1135
  .usage('<cmd>');
1052
1136
  program
1053
1137
  .command('link')
1054
- .alias('d')
1138
+ .alias('l')
1055
1139
  .description('pnpm link')
1056
1140
  .option('--dry-run [boolean]', 'Dry Run')
1057
1141
  .action(run$5);
@@ -1072,7 +1156,8 @@ program
1072
1156
  .command('build')
1073
1157
  .alias('b')
1074
1158
  .description('build')
1075
- .option('-p, --package-name <string>', 'select packageName')
1159
+ .option('-p, --package-name <string>', 'Select packageName')
1160
+ .option('--output <string>', 'Output', 'es,cjs')
1076
1161
  .option('--dry-run [boolean]', 'Dry Run')
1077
1162
  .action(run$1);
1078
1163
  program
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@deot/dev-cli",
3
- "version": "1.0.6",
4
- "main": "dist/index.js",
3
+ "version": "1.0.8",
4
+ "main": "dist/index.es.js",
5
+ "module": "dist/index.es.js",
5
6
  "types": "dist/index.d.ts",
6
7
  "type": "module",
7
8
  "files": [