@deot/dev-adder 1.1.1 → 2.0.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.
package/dist/index.cjs.js CHANGED
@@ -1,153 +1,146 @@
1
1
  'use strict';
2
2
 
3
- var devShared = require('@deot/dev-shared');
4
- var node_path = require('node:path');
5
- var ora = require('ora');
6
- var fs = require('fs-extra');
7
- var inquirer = require('inquirer');
8
- var autocomplete = require('inquirer-autocomplete-prompt');
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const devShared = require('@deot/dev-shared');
6
+ const node_path = require('node:path');
7
+ const ora = require('ora');
8
+ const fs = require('fs-extra');
9
+ const inquirer = require('inquirer');
10
+ const autocomplete = require('inquirer-autocomplete-prompt');
9
11
 
10
12
  const { prompt, registerPrompt, Separator } = inquirer;
11
13
  const getOptions = async () => {
12
- const { packageFolderNames } = devShared.Locals.impl();
13
- const question = [
14
- {
15
- type: 'list',
16
- name: 'mode',
17
- message: 'Select Mode:',
18
- choices: [
19
- new Separator('选择添加的类型:'),
20
- 'dependent',
21
- 'package'
22
- ],
23
- default: 'package'
24
- },
25
- {
26
- type: 'autocomplete',
27
- message: 'Select Package To Install:',
28
- when: (answers) => answers.mode === 'dependent',
29
- name: 'packageFolderName',
30
- default: 'index',
31
- source: (_, input) => {
32
- input = input || '';
33
- return new Promise(($resolve => {
34
- let filter = input
35
- ? packageFolderNames.filter(item => item.includes(input))
36
- : packageFolderNames;
37
- $resolve(filter);
38
- }));
39
- }
40
- },
41
- {
42
- type: 'input',
43
- name: 'dependentName',
44
- message: 'Input Dependent Name',
45
- default: '',
46
- when: (answers) => answers.mode === 'dependent',
47
- validate: (answer) => {
48
- if (!answer) {
49
- return '请输入需要添加的模块名';
50
- }
51
- return true;
52
- }
53
- },
54
- {
55
- type: 'list',
56
- name: 'args',
57
- when: (answers) => answers.mode === 'dependent',
58
- message: 'Select Install Mode:',
59
- choices: [
60
- '-S',
61
- '-D',
62
- '-O'
63
- ]
64
- },
65
- {
66
- type: 'input',
67
- name: 'packageFolderName',
68
- message: 'Input Package Name',
69
- default: '',
70
- when: (answers) => answers.mode === 'package',
71
- validate: (answer) => {
72
- if (!answer) {
73
- return '请输入需要添加的包名';
74
- }
75
- if (packageFolderNames.includes(answer) || answer === 'dev') {
76
- return '包名已存在';
77
- }
78
- return true;
79
- }
14
+ const { packageFolderNames } = devShared.Locals.impl();
15
+ const question = [
16
+ {
17
+ type: "list",
18
+ name: "mode",
19
+ message: "Select Mode:",
20
+ choices: [
21
+ new Separator("选择添加的类型:"),
22
+ "dependent",
23
+ "package"
24
+ ],
25
+ default: "package"
26
+ },
27
+ {
28
+ type: "autocomplete",
29
+ message: "Select Package To Install:",
30
+ when: (answers) => answers.mode === "dependent",
31
+ name: "packageFolderName",
32
+ // suggestOnly: true, 开启后可以验证数据且需要使用tab选中
33
+ default: "index",
34
+ source: (_, input) => {
35
+ input = input || "";
36
+ return new Promise(($resolve) => {
37
+ let filter = input ? packageFolderNames.filter((item) => item.includes(input)) : packageFolderNames;
38
+ $resolve(filter);
39
+ });
40
+ }
41
+ },
42
+ {
43
+ type: "input",
44
+ name: "dependentName",
45
+ message: "Input Dependent Name",
46
+ default: "",
47
+ when: (answers) => answers.mode === "dependent",
48
+ validate: (answer) => {
49
+ if (!answer) {
50
+ return "请输入需要添加的模块名";
80
51
  }
81
- ];
82
- registerPrompt('autocomplete', autocomplete);
83
- let result = await prompt(question);
84
- if (result.mode == 'dependent') {
85
- result.packageName = devShared.Locals.getPackageName(result.packageFolderName);
86
- }
87
- if (result.mode == 'package') {
88
- result.packageName = devShared.Locals.getPackageName(result.packageFolderName);
52
+ return true;
53
+ }
54
+ },
55
+ {
56
+ type: "list",
57
+ name: "args",
58
+ when: (answers) => answers.mode === "dependent",
59
+ message: "Select Install Mode:",
60
+ choices: [
61
+ "-S",
62
+ "-D",
63
+ "-O"
64
+ ]
65
+ },
66
+ {
67
+ type: "input",
68
+ name: "packageFolderName",
69
+ message: "Input Package Name",
70
+ default: "",
71
+ when: (answers) => answers.mode === "package",
72
+ validate: (answer) => {
73
+ if (!answer) {
74
+ return "请输入需要添加的包名";
75
+ }
76
+ if (packageFolderNames.includes(answer) || answer === "dev") {
77
+ return "包名已存在";
78
+ }
79
+ return true;
80
+ }
89
81
  }
90
- result.args = [result.args];
91
- return result;
82
+ ];
83
+ registerPrompt("autocomplete", autocomplete);
84
+ let result = await prompt(question);
85
+ if (result.mode == "dependent") {
86
+ result.packageName = devShared.Locals.getPackageName(result.packageFolderName);
87
+ }
88
+ if (result.mode == "package") {
89
+ result.packageName = devShared.Locals.getPackageName(result.packageFolderName);
90
+ }
91
+ result.args = [result.args];
92
+ return result;
92
93
  };
93
94
 
94
95
  const run = (options) => devShared.Utils.autoCatch(async () => {
95
- options = {
96
- dryRun: false,
97
- ...options
98
- };
99
- const locals = devShared.Locals.impl();
100
- const { workspace, packageDir } = locals;
101
- if (!workspace) {
102
- return devShared.Logger.log(`<add> Monorepo Supported Only.`);
103
- }
104
- if (typeof options.dryRun === 'undefined') {
105
- options.dryRun = process.env.NODE_ENV === 'UNIT';
106
- }
107
- const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
108
- let command = mode === 'dependent'
109
- ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(' ')}`
110
- : `npx pnpm link ./${workspace}/${packageFolderName}`;
111
- if (options.dryRun)
112
- return devShared.Shell.spawn(`echo "${command}"`);
113
- const spinner = ora(`${command}\n`).start();
114
- if (mode === 'package') {
115
- let dir = node_path.resolve(packageDir);
116
- fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, '// TODO');
117
- fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, '// TODO');
118
- fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, '// TODO');
119
- fs.outputFileSync(`${dir}/${packageFolderName}/package.json`, JSON.stringify({
120
- name: packageName,
121
- version: '1.0.0',
122
- main: 'dist/index.cjs.js',
123
- module: 'dist/index.es.js',
124
- types: "dist/index.d.ts",
125
- exports: {
126
- ".": {
127
- import: "./dist/index.es.js",
128
- require: "./dist/index.cjs.js",
129
- types: "./dist/index.d.ts"
130
- }
131
- },
132
- files: [
133
- "dist"
134
- ],
135
- license: 'MIT',
136
- publishConfig: {
137
- access: 'public'
138
- },
139
- dependencies: {}
140
- }, null, 2));
141
- fs.outputFileSync(`${dir}/${packageFolderName}/api-extractor.json`, JSON.stringify({
142
- extends: "../../api-extractor.json",
143
- mainEntryPointFilePath: `./dist/${workspace}/${packageFolderName}/src/index.d.ts`,
144
- dtsRollup: {
145
- publicTrimmedFilePath: "./dist/index.d.ts"
146
- }
147
- }, null, 2));
148
- }
149
- await devShared.Shell.spawn(command);
150
- spinner.stop();
96
+ options = {
97
+ dryRun: false,
98
+ ...options
99
+ };
100
+ const locals = devShared.Locals.impl();
101
+ const { workspace, packageDir } = locals;
102
+ if (!workspace) {
103
+ return devShared.Logger.log(`<add> Monorepo Supported Only.`);
104
+ }
105
+ if (typeof options.dryRun === "undefined") {
106
+ options.dryRun = process.env.NODE_ENV === "UNIT";
107
+ }
108
+ const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
109
+ let command = mode === "dependent" ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(" ")}` : `npx pnpm link ./${workspace}/${packageFolderName}`;
110
+ if (options.dryRun)
111
+ return devShared.Shell.spawn(`echo "${command}"`);
112
+ const spinner = ora(`${command}
113
+ `).start();
114
+ if (mode === "package") {
115
+ let dir = node_path.resolve(packageDir);
116
+ fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, "// TODO");
117
+ fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, "// TODO");
118
+ fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, "// TODO");
119
+ fs.outputFileSync(`${dir}/${packageFolderName}/package.json`, JSON.stringify({
120
+ name: packageName,
121
+ version: "1.0.0",
122
+ main: "dist/index.cjs.js",
123
+ module: "dist/index.es.js",
124
+ types: "dist/index.d.ts",
125
+ exports: {
126
+ ".": {
127
+ import: "./dist/index.es.js",
128
+ require: "./dist/index.cjs.js",
129
+ types: "./dist/index.d.ts"
130
+ }
131
+ },
132
+ files: [
133
+ "dist"
134
+ ],
135
+ license: "MIT",
136
+ publishConfig: {
137
+ access: "public"
138
+ },
139
+ dependencies: {}
140
+ }, null, 2));
141
+ }
142
+ await devShared.Shell.spawn(command);
143
+ spinner.stop();
151
144
  });
152
145
 
153
146
  exports.run = run;
package/dist/index.es.js CHANGED
@@ -7,145 +7,136 @@ import autocomplete from 'inquirer-autocomplete-prompt';
7
7
 
8
8
  const { prompt, registerPrompt, Separator } = inquirer;
9
9
  const getOptions = async () => {
10
- const { packageFolderNames } = Locals.impl();
11
- const question = [
12
- {
13
- type: 'list',
14
- name: 'mode',
15
- message: 'Select Mode:',
16
- choices: [
17
- new Separator('选择添加的类型:'),
18
- 'dependent',
19
- 'package'
20
- ],
21
- default: 'package'
22
- },
23
- {
24
- type: 'autocomplete',
25
- message: 'Select Package To Install:',
26
- when: (answers) => answers.mode === 'dependent',
27
- name: 'packageFolderName',
28
- default: 'index',
29
- source: (_, input) => {
30
- input = input || '';
31
- return new Promise(($resolve => {
32
- let filter = input
33
- ? packageFolderNames.filter(item => item.includes(input))
34
- : packageFolderNames;
35
- $resolve(filter);
36
- }));
37
- }
38
- },
39
- {
40
- type: 'input',
41
- name: 'dependentName',
42
- message: 'Input Dependent Name',
43
- default: '',
44
- when: (answers) => answers.mode === 'dependent',
45
- validate: (answer) => {
46
- if (!answer) {
47
- return '请输入需要添加的模块名';
48
- }
49
- return true;
50
- }
51
- },
52
- {
53
- type: 'list',
54
- name: 'args',
55
- when: (answers) => answers.mode === 'dependent',
56
- message: 'Select Install Mode:',
57
- choices: [
58
- '-S',
59
- '-D',
60
- '-O'
61
- ]
62
- },
63
- {
64
- type: 'input',
65
- name: 'packageFolderName',
66
- message: 'Input Package Name',
67
- default: '',
68
- when: (answers) => answers.mode === 'package',
69
- validate: (answer) => {
70
- if (!answer) {
71
- return '请输入需要添加的包名';
72
- }
73
- if (packageFolderNames.includes(answer) || answer === 'dev') {
74
- return '包名已存在';
75
- }
76
- return true;
77
- }
10
+ const { packageFolderNames } = Locals.impl();
11
+ const question = [
12
+ {
13
+ type: "list",
14
+ name: "mode",
15
+ message: "Select Mode:",
16
+ choices: [
17
+ new Separator("选择添加的类型:"),
18
+ "dependent",
19
+ "package"
20
+ ],
21
+ default: "package"
22
+ },
23
+ {
24
+ type: "autocomplete",
25
+ message: "Select Package To Install:",
26
+ when: (answers) => answers.mode === "dependent",
27
+ name: "packageFolderName",
28
+ // suggestOnly: true, 开启后可以验证数据且需要使用tab选中
29
+ default: "index",
30
+ source: (_, input) => {
31
+ input = input || "";
32
+ return new Promise(($resolve) => {
33
+ let filter = input ? packageFolderNames.filter((item) => item.includes(input)) : packageFolderNames;
34
+ $resolve(filter);
35
+ });
36
+ }
37
+ },
38
+ {
39
+ type: "input",
40
+ name: "dependentName",
41
+ message: "Input Dependent Name",
42
+ default: "",
43
+ when: (answers) => answers.mode === "dependent",
44
+ validate: (answer) => {
45
+ if (!answer) {
46
+ return "请输入需要添加的模块名";
78
47
  }
79
- ];
80
- registerPrompt('autocomplete', autocomplete);
81
- let result = await prompt(question);
82
- if (result.mode == 'dependent') {
83
- result.packageName = Locals.getPackageName(result.packageFolderName);
84
- }
85
- if (result.mode == 'package') {
86
- result.packageName = Locals.getPackageName(result.packageFolderName);
48
+ return true;
49
+ }
50
+ },
51
+ {
52
+ type: "list",
53
+ name: "args",
54
+ when: (answers) => answers.mode === "dependent",
55
+ message: "Select Install Mode:",
56
+ choices: [
57
+ "-S",
58
+ "-D",
59
+ "-O"
60
+ ]
61
+ },
62
+ {
63
+ type: "input",
64
+ name: "packageFolderName",
65
+ message: "Input Package Name",
66
+ default: "",
67
+ when: (answers) => answers.mode === "package",
68
+ validate: (answer) => {
69
+ if (!answer) {
70
+ return "请输入需要添加的包名";
71
+ }
72
+ if (packageFolderNames.includes(answer) || answer === "dev") {
73
+ return "包名已存在";
74
+ }
75
+ return true;
76
+ }
87
77
  }
88
- result.args = [result.args];
89
- return result;
78
+ ];
79
+ registerPrompt("autocomplete", autocomplete);
80
+ let result = await prompt(question);
81
+ if (result.mode == "dependent") {
82
+ result.packageName = Locals.getPackageName(result.packageFolderName);
83
+ }
84
+ if (result.mode == "package") {
85
+ result.packageName = Locals.getPackageName(result.packageFolderName);
86
+ }
87
+ result.args = [result.args];
88
+ return result;
90
89
  };
91
90
 
92
91
  const run = (options) => Utils.autoCatch(async () => {
93
- options = {
94
- dryRun: false,
95
- ...options
96
- };
97
- const locals = Locals.impl();
98
- const { workspace, packageDir } = locals;
99
- if (!workspace) {
100
- return Logger.log(`<add> Monorepo Supported Only.`);
101
- }
102
- if (typeof options.dryRun === 'undefined') {
103
- options.dryRun = process.env.NODE_ENV === 'UNIT';
104
- }
105
- const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
106
- let command = mode === 'dependent'
107
- ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(' ')}`
108
- : `npx pnpm link ./${workspace}/${packageFolderName}`;
109
- if (options.dryRun)
110
- return Shell.spawn(`echo "${command}"`);
111
- const spinner = ora(`${command}\n`).start();
112
- if (mode === 'package') {
113
- let dir = resolve(packageDir);
114
- fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, '// TODO');
115
- fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, '// TODO');
116
- fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, '// TODO');
117
- fs.outputFileSync(`${dir}/${packageFolderName}/package.json`, JSON.stringify({
118
- name: packageName,
119
- version: '1.0.0',
120
- main: 'dist/index.cjs.js',
121
- module: 'dist/index.es.js',
122
- types: "dist/index.d.ts",
123
- exports: {
124
- ".": {
125
- import: "./dist/index.es.js",
126
- require: "./dist/index.cjs.js",
127
- types: "./dist/index.d.ts"
128
- }
129
- },
130
- files: [
131
- "dist"
132
- ],
133
- license: 'MIT',
134
- publishConfig: {
135
- access: 'public'
136
- },
137
- dependencies: {}
138
- }, null, 2));
139
- fs.outputFileSync(`${dir}/${packageFolderName}/api-extractor.json`, JSON.stringify({
140
- extends: "../../api-extractor.json",
141
- mainEntryPointFilePath: `./dist/${workspace}/${packageFolderName}/src/index.d.ts`,
142
- dtsRollup: {
143
- publicTrimmedFilePath: "./dist/index.d.ts"
144
- }
145
- }, null, 2));
146
- }
147
- await Shell.spawn(command);
148
- spinner.stop();
92
+ options = {
93
+ dryRun: false,
94
+ ...options
95
+ };
96
+ const locals = Locals.impl();
97
+ const { workspace, packageDir } = locals;
98
+ if (!workspace) {
99
+ return Logger.log(`<add> Monorepo Supported Only.`);
100
+ }
101
+ if (typeof options.dryRun === "undefined") {
102
+ options.dryRun = process.env.NODE_ENV === "UNIT";
103
+ }
104
+ const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
105
+ let command = mode === "dependent" ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(" ")}` : `npx pnpm link ./${workspace}/${packageFolderName}`;
106
+ if (options.dryRun)
107
+ return Shell.spawn(`echo "${command}"`);
108
+ const spinner = ora(`${command}
109
+ `).start();
110
+ if (mode === "package") {
111
+ let dir = resolve(packageDir);
112
+ fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, "// TODO");
113
+ fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, "// TODO");
114
+ fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, "// TODO");
115
+ fs.outputFileSync(`${dir}/${packageFolderName}/package.json`, JSON.stringify({
116
+ name: packageName,
117
+ version: "1.0.0",
118
+ main: "dist/index.cjs.js",
119
+ module: "dist/index.es.js",
120
+ types: "dist/index.d.ts",
121
+ exports: {
122
+ ".": {
123
+ import: "./dist/index.es.js",
124
+ require: "./dist/index.cjs.js",
125
+ types: "./dist/index.d.ts"
126
+ }
127
+ },
128
+ files: [
129
+ "dist"
130
+ ],
131
+ license: "MIT",
132
+ publishConfig: {
133
+ access: "public"
134
+ },
135
+ dependencies: {}
136
+ }, null, 2));
137
+ }
138
+ await Shell.spawn(command);
139
+ spinner.stop();
149
140
  });
150
141
 
151
142
  export { run };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deot/dev-adder",
3
- "version": "1.1.1",
3
+ "version": "2.0.0",
4
4
  "main": "dist/index.es.js",
5
5
  "module": "dist/index.es.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,6 +17,6 @@
17
17
  "inquirer": "^9.1.5",
18
18
  "inquirer-autocomplete-prompt": "^3.0.0",
19
19
  "ora": "^6.1.2",
20
- "@deot/dev-shared": "^1.1.1"
20
+ "@deot/dev-shared": "^2.0.0"
21
21
  }
22
22
  }