easy-soft-develop 1.0.2 → 2.0.82

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 (42) hide show
  1. package/bin/cli.js +96 -3
  2. package/package.json +32 -22
  3. package/src/cliCollection/check-all-package-version.js +5 -0
  4. package/src/cliCollection/clear-all-dependence.js +39 -0
  5. package/src/cliCollection/commit-refresh.js +12 -0
  6. package/src/cliCollection/create-assist-scripts.cli.js +19 -0
  7. package/src/cliCollection/create-lerna-project.js +9 -0
  8. package/src/cliCollection/create-project-with-template.js +61 -0
  9. package/src/cliCollection/sleep.js +9 -0
  10. package/src/cliCollection/update-all-package-version.js +5 -0
  11. package/src/cliCollection/update-package-from-package.js +149 -0
  12. package/src/index.js +30 -22
  13. package/src/project/initProject.js +258 -0
  14. package/src/templates/babel.config.template.js +21 -0
  15. package/src/templates/commitlint.config.template.js +124 -0
  16. package/src/templates/editor.template.js +36 -0
  17. package/src/templates/eslint.template.js +249 -0
  18. package/src/templates/git.template.js +67 -0
  19. package/src/templates/lint-staged.template.js +35 -0
  20. package/src/templates/package.template.js +190 -0
  21. package/src/templates/prettier.template.js +133 -0
  22. package/src/templates/stylelint.template.js +79 -0
  23. package/src/templates/template.config.js +8 -0
  24. package/src/tools/clean.js +50 -0
  25. package/src/tools/commit.refresh.js +40 -0
  26. package/src/tools/develop.file.js +443 -0
  27. package/src/tools/initial.environment.js +118 -0
  28. package/src/tools/meta.js +242 -0
  29. package/src/tools/package.install.global.develop.dependence.js +92 -0
  30. package/src/tools/package.script.js +75 -0
  31. package/src/tools/package.tools.js +33 -0
  32. package/src/{package.update.js → tools/package.update.js} +16 -11
  33. package/src/tools/prettier.file.js +11 -0
  34. package/src/tools/prettier.package.json.js +17 -0
  35. package/src/{sleep.js → tools/sleep.js} +6 -3
  36. package/src/clean.js +0 -45
  37. package/src/commit.refresh.js +0 -40
  38. package/src/develop.assist.js +0 -110
  39. package/src/init.env.js +0 -146
  40. package/src/package.init.global.dependence.dev.js +0 -29
  41. package/src/package.tools.js +0 -32
  42. package/src/shell.js +0 -9
@@ -0,0 +1,258 @@
1
+ const {
2
+ checkStringIsEmpty,
3
+ promptError,
4
+ promptSuccess,
5
+ writeFileSync,
6
+ writeJsonFileSync,
7
+ promptInfo,
8
+ promptEmptyLine,
9
+ mkdirSync,
10
+ exec,
11
+ cd,
12
+ } = require('../tools/meta');
13
+ const {
14
+ createDevelopFiles,
15
+ createCommitlintConfigFile,
16
+ createBabelConfigFile,
17
+ createNcuConfigFile,
18
+ createNpmConfigFile,
19
+ } = require('../tools/develop.file');
20
+ const {
21
+ getGlobalPackages,
22
+ globalScript,
23
+ packageScript,
24
+ } = require('../tools/package.script');
25
+
26
+ function createLernaProjectFolder(name) {
27
+ mkdirSync(`./${name}`);
28
+
29
+ promptSuccess(`step *: create folder ${name} success`);
30
+ }
31
+
32
+ function createLernaPackageJsonFile(lernaName) {
33
+ const devDependencies = {};
34
+
35
+ getGlobalPackages().forEach((o) => {
36
+ if (checkStringIsEmpty(o)) {
37
+ return;
38
+ }
39
+
40
+ devDependencies[o] = '^0.0.1';
41
+ });
42
+
43
+ const packageJson = {
44
+ name: lernaName,
45
+ version: '1.0.0',
46
+ author: '',
47
+ workspaces: ['packages/*'],
48
+ scripts: globalScript,
49
+ dependencies: {},
50
+ devDependencies: devDependencies,
51
+ };
52
+
53
+ let result = writeJsonFileSync(`./package.json`, packageJson, {
54
+ coverFile: true,
55
+ });
56
+
57
+ if (result) {
58
+ promptSuccess(`step *: create package.json success`);
59
+ }
60
+ }
61
+
62
+ function createPnpmWorkspaceFile() {
63
+ const content = `packages:
64
+ - 'packages/*'`;
65
+
66
+ let result = writeFileSync(`./pnpm-workspace.yaml`, content, {
67
+ coverFile: true,
68
+ });
69
+
70
+ if (result) {
71
+ promptSuccess(`step *: create pnpm-workspace.yaml success`);
72
+ }
73
+ }
74
+
75
+ function createLernaConfigFile(lernaName) {
76
+ const content = `{
77
+ "packages": ["packages/*"],
78
+ "version": "independent",
79
+ "useWorkspaces": true,
80
+ "npmClient": "pnpm",
81
+ "command": {
82
+ "updated": {
83
+ "conventionalCommits": true,
84
+ "changelogPreset": "conventional-changelog-conventionalcommits"
85
+ },
86
+ "version": {
87
+ "conventionalCommits": true,
88
+ "message": "chore(${lernaName}): version",
89
+ "changelogPreset": "conventional-changelog-conventionalcommits"
90
+ },
91
+ "publish": {
92
+ "conventionalCommits": true,
93
+ "message": "chore(${lernaName}): publish",
94
+ "changelogPreset": "conventional-changelog-conventionalcommits"
95
+ }
96
+ }
97
+ }
98
+ `;
99
+
100
+ let result = writeFileSync(`./lerna.json`, content, { coverFile: true });
101
+
102
+ if (result) {
103
+ promptSuccess(`step *: create lerna.json success`);
104
+ }
105
+ }
106
+
107
+ function createProjectFolder(name) {
108
+ mkdirSync(`./packages/`);
109
+ mkdirSync(`./packages/${name}`);
110
+ mkdirSync(`./packages/${name}/src`);
111
+
112
+ promptSuccess(`step *: create packages folder success`);
113
+ }
114
+
115
+ function createPackageJsonFile(name) {
116
+ const devDependencies = {};
117
+
118
+ getGlobalPackages().forEach((o) => {
119
+ if (checkStringIsEmpty(o)) {
120
+ return;
121
+ }
122
+
123
+ devDependencies[o] = '^0.0.1';
124
+ });
125
+
126
+ const packageJson = {
127
+ name: name,
128
+ version: '1.0.0',
129
+ author: '',
130
+ scripts: packageScript,
131
+ dependencies: {},
132
+ devDependencies: devDependencies,
133
+ };
134
+
135
+ let result = writeJsonFileSync(
136
+ `./packages/${name}/package.json`,
137
+ packageJson,
138
+ { coverFile: true },
139
+ );
140
+
141
+ if (result) {
142
+ promptSuccess(`step *: create package.json success`);
143
+ }
144
+ }
145
+
146
+ function createHusky() {
147
+ mkdirSync(`./.husky`);
148
+
149
+ const commitMsg = `#!/bin/sh
150
+ . "$(dirname "$0")/_/husky.sh"
151
+
152
+ npx commitlint -e $HUSKY_GIT_PARAMS -V
153
+ `;
154
+
155
+ writeFileSync(`./.husky/commit-msg`, commitMsg, { coverFile: true });
156
+
157
+ const precommit = `#!/bin/sh
158
+ . "$(dirname "$0")/_/husky.sh"
159
+
160
+ npx lerna run --concurrency 1 --stream precommit --since HEAD --exclude-dependents
161
+ `;
162
+
163
+ writeFileSync(`./.husky/pre-commit`, precommit, { coverFile: true });
164
+
165
+ promptSuccess(`step *: create husky folder success`);
166
+ }
167
+
168
+ function createVscode() {
169
+ mkdirSync(`./.vscode`);
170
+
171
+ const settingJson = {
172
+ 'cSpell.words': [
173
+ 'conventionalcommits',
174
+ 'packagejson',
175
+ 'pmmmwh',
176
+ 'postcz',
177
+ 'postz',
178
+ 'precommit',
179
+ 'precz',
180
+ 'prez',
181
+ ],
182
+ 'git.ignoreLimitWarning': true,
183
+ 'editor.codeActionsOnSave': {
184
+ 'source.fixAll.eslint': true,
185
+ 'source.fixAll.stylelint': true,
186
+ },
187
+ };
188
+
189
+ writeJsonFileSync(`./.vscode/settings.json`, settingJson, {
190
+ coverFile: true,
191
+ });
192
+ }
193
+
194
+ function initialEnvironment() {
195
+ mkdirSync(`./develop`);
196
+
197
+ promptSuccess(`step *: config environment`);
198
+
199
+ promptEmptyLine();
200
+
201
+ createDevelopFiles();
202
+
203
+ promptInfo('add global dev packages');
204
+
205
+ exec('npx ncu -u --packageFile ./**/package.json');
206
+
207
+ promptInfo('install dependence packages');
208
+
209
+ exec('pnpm install -w');
210
+
211
+ exec('npm run z:initial:environment');
212
+
213
+ promptEmptyLine();
214
+
215
+ promptInfo('create git branch main');
216
+
217
+ exec('git init -b main');
218
+
219
+ promptEmptyLine();
220
+
221
+ promptInfo('husky install');
222
+
223
+ exec('npx husky install');
224
+ }
225
+
226
+ function createLernaProject(name) {
227
+ if (checkStringIsEmpty(name)) {
228
+ promptError(
229
+ 'project name disallow empty, please use create-lerna-project --name name or get info with create-lerna-project --help',
230
+ );
231
+
232
+ return;
233
+ }
234
+ const lernaName = `lerna-${name}`;
235
+
236
+ createLernaProjectFolder(lernaName);
237
+
238
+ cd(`./${lernaName}`);
239
+
240
+ createLernaPackageJsonFile(lernaName);
241
+ createLernaConfigFile(lernaName);
242
+ createPnpmWorkspaceFile();
243
+
244
+ createProjectFolder(name);
245
+ createPackageJsonFile(name);
246
+
247
+ createCommitlintConfigFile(`step *: create commitlint.config.js success`);
248
+ createBabelConfigFile(`step *: create babel.config.js success`);
249
+ createNcuConfigFile(`step *: create .ncurc.json success`);
250
+ createNpmConfigFile(`step *: create .npmrc success`);
251
+ createDevelopFiles('', `step *: create develop folder success`);
252
+ createHusky();
253
+ createVscode();
254
+
255
+ initialEnvironment();
256
+ }
257
+
258
+ module.exports = { createLernaProject };
@@ -0,0 +1,21 @@
1
+ const { fileGlobalHeader } = require('./template.config');
2
+
3
+ const folderPath = '.';
4
+
5
+ const contentFileContent = `${fileGlobalHeader}
6
+ module.exports = function (api) {
7
+ api.cache(true);
8
+ return {
9
+ babelrcRoots: ['.', 'packages/*'],
10
+ };
11
+ };
12
+ `;
13
+
14
+ const contentFile = {
15
+ folderPath: `${folderPath}`,
16
+ fileName: 'babel.config.js',
17
+ coverFile: true,
18
+ fileContent: contentFileContent,
19
+ };
20
+
21
+ module.exports = { contentFile };
@@ -0,0 +1,124 @@
1
+ const { fileGlobalHeader } = require('./template.config');
2
+
3
+ const folderPath = '.';
4
+
5
+ const contentFileContent = `${fileGlobalHeader}
6
+ module.exports = {
7
+ extends: [
8
+ '@commitlint/config-conventional',
9
+ '@commitlint/config-lerna-scopes',
10
+ ],
11
+ parserPreset: 'conventional-changelog-conventionalcommits',
12
+ prompt: {
13
+ messages: {
14
+ skip: '[可跳过]',
15
+ max: '[字数上限: %d]',
16
+ min: '[字数下限: %d]',
17
+ emptyWarning: '此为必填项目, 不能为空白',
18
+ upperLimitWarning: '超过最大限制',
19
+ lowerLimitWarning: '低于最小限制',
20
+ },
21
+ questions: {
22
+ type: {
23
+ description: '择要提交的更改类型:',
24
+ enum: {
25
+ feat: {
26
+ description: '新功能/特性',
27
+ title: 'Features',
28
+ emoji: '✨',
29
+ },
30
+ fix: {
31
+ description: 'Bug修补',
32
+ title: 'Bug Fixes',
33
+ emoji: '🐛',
34
+ },
35
+ docs: {
36
+ description: '仅文档变更',
37
+ title: 'Documentation',
38
+ emoji: '📚',
39
+ },
40
+ style: {
41
+ description: '不影响含义的更改(空白、格式、错误码、分号等)',
42
+ title: 'Styles',
43
+ emoji: '💎',
44
+ },
45
+ refactor: {
46
+ description: '代码重构(既不修复bug也不添加特性的更改)',
47
+ title: 'Code Refactoring',
48
+ emoji: '📦',
49
+ },
50
+ perf: {
51
+ description: '改进性能的调整',
52
+ title: 'Performance Improvements',
53
+ emoji: '🚀',
54
+ },
55
+ test: {
56
+ description: '添加缺失的测试或纠正现有的测试',
57
+ title: 'Tests',
58
+ emoji: '🚨',
59
+ },
60
+ build: {
61
+ description:
62
+ '影响构建系统或外部依赖的更改(例如:gulp, broccoli, npm等)',
63
+ title: 'Builds',
64
+ emoji: '🛠',
65
+ },
66
+ ci: {
67
+ description:
68
+ '更改CI配置文件和脚本(例如:Travis、Circle、BrowserStack、SauceLabs等)',
69
+ title: 'Continuous Integrations',
70
+ emoji: '⚙️',
71
+ },
72
+ chore: {
73
+ description: '其他不修改src或测试文件的更改',
74
+ title: 'Chores',
75
+ emoji: '♻️',
76
+ },
77
+ revert: {
78
+ description: '恢复前一个提交',
79
+ title: 'Reverts',
80
+ emoji: '🗑',
81
+ },
82
+ },
83
+ },
84
+ scope: {
85
+ description: '此更改的范围是什么(例如:组件或文件名)',
86
+ },
87
+ subject: {
88
+ description: '用简短的祈使语句描述变化',
89
+ },
90
+ body: {
91
+ description: '对变更提供更详细的描述',
92
+ },
93
+ isBreaking: {
94
+ description: '有什么突破性的变化吗?',
95
+ },
96
+ breakingBody: {
97
+ description: '中断变更提交需要一个主体. 请输入提交本身的更长的描述',
98
+ },
99
+ breaking: {
100
+ description: '描述突破性的变化',
101
+ },
102
+ isIssueAffected: {
103
+ description: '这个变化会影响任何未决问题吗?',
104
+ },
105
+ issuesBody: {
106
+ description:
107
+ '如果问题被关闭, 则提交需要一个主体. 请输入提交本身的更长的描述',
108
+ },
109
+ issues: {
110
+ description: '添加问题引用(例如:"fix #123", "re #123".)',
111
+ },
112
+ },
113
+ },
114
+ };
115
+ `;
116
+
117
+ const contentFile = {
118
+ folderPath: `${folderPath}`,
119
+ fileName: 'commitlint.config.js',
120
+ coverFile: true,
121
+ fileContent: contentFileContent,
122
+ };
123
+
124
+ module.exports = { contentFile };
@@ -0,0 +1,36 @@
1
+ const { fileGlobalHeader } = require('./template.config');
2
+
3
+ const folderPath = './develop/config/editor';
4
+
5
+ const contentFileContent = `${fileGlobalHeader}
6
+ const content = \`# http://editorconfig.org
7
+ root = true
8
+
9
+ [*]
10
+ indent_style = space
11
+ indent_size = 2
12
+ end_of_line = lf
13
+ charset = utf-8
14
+ trim_trailing_whitespace = true
15
+ insert_final_newline = true
16
+
17
+ [*.md]
18
+ trim_trailing_whitespace = false
19
+
20
+ [Makefile]
21
+ indent_style = tab
22
+ \`;
23
+
24
+ module.exports = {
25
+ content,
26
+ };
27
+ `;
28
+
29
+ const contentFile = {
30
+ folderPath: `${folderPath}/template`,
31
+ fileName: 'content.js',
32
+ coverFile: true,
33
+ fileContent: contentFileContent,
34
+ };
35
+
36
+ module.exports = { contentFile };
@@ -0,0 +1,249 @@
1
+ const { fileGlobalHeader } = require('./template.config');
2
+
3
+ const folderPath = './develop/config/eslint';
4
+
5
+ const ignoreFileContent = `${fileGlobalHeader}
6
+ const content = \`**/public
7
+ **/lib
8
+ **/es
9
+ **/.history
10
+ **/.vs
11
+ **/.swc
12
+ *.d.ts
13
+ *.log
14
+ *.zip
15
+ *.txt
16
+ *.7z
17
+ *.min.js
18
+ rollup.config-*.cjs
19
+ \`;
20
+
21
+ module.exports = {
22
+ content,
23
+ };
24
+ `;
25
+
26
+ const ignoreFile = {
27
+ folderPath: `${folderPath}/template`,
28
+ fileName: 'ignore.content.js',
29
+ coverFile: false,
30
+ fileContent: ignoreFileContent,
31
+ };
32
+
33
+ const contentFileContent = `${fileGlobalHeader}
34
+ const mainContent = \`${fileGlobalHeader}
35
+ const { generalConfig } = require('./develop/config/eslint/config');
36
+
37
+ module.exports = generalConfig;
38
+ \`;
39
+
40
+ const packageContent = \`${fileGlobalHeader}
41
+ const { generalConfig } = require('../../develop/config/eslint/config');
42
+
43
+ module.exports = generalConfig;
44
+ \`;
45
+
46
+ module.exports = {
47
+ mainContent,
48
+ packageContent,
49
+ };`;
50
+
51
+ const contentFile = {
52
+ folderPath: `${folderPath}/template`,
53
+ fileName: 'content.js',
54
+ coverFile: true,
55
+ fileContent: contentFileContent,
56
+ };
57
+
58
+ const configFileContent = `${fileGlobalHeader}
59
+ const { rules } = require('./items/rules');
60
+ const { parserOptions } = require('./items/parser');
61
+ const { pluginCollection } = require('./items/plugins');
62
+ const { extendCollection } = require('./items/extends');
63
+
64
+ module.exports = {
65
+ generalConfig: {
66
+ extends: [
67
+ 'eslint:recommended',
68
+ 'plugin:react/recommended',
69
+ 'plugin:unicorn/recommended',
70
+ 'plugin:promise/recommended',
71
+ 'prettier',
72
+ ...extendCollection,
73
+ ],
74
+ env: { es6: true },
75
+ plugins: [
76
+ 'unicorn',
77
+ 'simple-import-sort',
78
+ 'import',
79
+ 'prettier',
80
+ ...pluginCollection,
81
+ ],
82
+ parser: '@babel/eslint-parser',
83
+ parserOptions: parserOptions,
84
+ rules: rules,
85
+ settings: {
86
+ 'import/parsers': {
87
+ '@typescript-eslint/parser': ['.ts', '.tsx'],
88
+ },
89
+ 'import/resolver': {
90
+ node: {
91
+ extensions: ['.js', '.jsx', '.ts', '.tsx'],
92
+ moduleDirectory: ['src', 'node_modules'],
93
+ },
94
+ typescript: {
95
+ // always try to resolve types under \`<root>@types\` directory even it doesn't contain any source code, like \`@types/unIst\`
96
+ alwaysTryTypes: true,
97
+
98
+ // use an array of glob patterns
99
+ directory: ['./tsconfig.json', './packages/*/tsconfig.json'],
100
+ },
101
+ },
102
+ },
103
+ },
104
+ };
105
+ `;
106
+
107
+ const configFile = {
108
+ folderPath: `${folderPath}/config`,
109
+ fileName: 'index.js',
110
+ coverFile: true,
111
+ fileContent: configFileContent,
112
+ };
113
+
114
+ const ruleFileContent = `${fileGlobalHeader}
115
+ const generalRules = {
116
+ camelias: 0,
117
+ 'react/sort-comp': 0,
118
+ 'react/jsx-uses-react': 'off',
119
+ 'react/react-in-jsx-scope': 'off',
120
+ 'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }],
121
+ 'react/jsx-wrap-multilines': 0,
122
+ 'react/prop-types': 0,
123
+ 'react/forbid-prop-types': 0,
124
+ 'react/jsx-one-expression-per-line': 0,
125
+ 'react/jsx-props-no-spreading': 0,
126
+ 'jsx-a11y/no-noninteractive-element-interactions': 0,
127
+ 'jsx-a11y/click-events-have-key-events': 0,
128
+ 'jsx-a11y/no-static-element-interactions': 0,
129
+ 'jsx-a11y/anchor-is-valid': 0,
130
+ 'no-bitwise': 0,
131
+ 'linebreak-style': 0,
132
+ 'generator-star-spacing': 0,
133
+ 'operator-linebreak': 0,
134
+ 'object-curly-newline': 0,
135
+ 'no-use-before-define': 0,
136
+ 'no-nested-ternary': 0,
137
+ 'no-spaced-func': 2,
138
+ 'no-this-before-super': 0,
139
+ 'no-var': 1,
140
+ 'compat/compat': 0,
141
+ 'sort-imports': 0,
142
+ '@typescript-eslint/no-this-alias': ['off'],
143
+ '@typescript-eslint/no-unused-vars': 0,
144
+ '@typescript-eslint/no-invalid-this': 0,
145
+ 'jsx-quotes': ['error', 'prefer-double'],
146
+ 'import/export': 'error',
147
+ 'import/first': 'error',
148
+ 'import/named': 'error',
149
+ 'import/newline-after-import': 'error',
150
+ 'import/no-absolute-path': 'error',
151
+ // 开启将会极大增加检测执行时间
152
+ 'import/no-cycle': 0,
153
+ 'import/no-deprecated': 'error',
154
+ 'import/no-duplicates': 'error',
155
+ 'import/no-unresolved': 'error',
156
+ 'import/no-useless-path-segments': 'error',
157
+ 'import/no-unused-modules': 'error',
158
+ };
159
+
160
+ const sortRules = {
161
+ 'import/order': 0,
162
+ 'simple-import-sort/imports': [
163
+ 'error',
164
+ {
165
+ groups: [
166
+ [
167
+ '^(?!taro-fast-)(?!antd-management-fast-)(?!easy-soft-)[a-zA-Z0-9]',
168
+ '^@(?!/)',
169
+ ],
170
+ ['^(?!@/)(?!easy-soft-)(?!.)'],
171
+ ['^easy-soft-'],
172
+ ['^(?!@/)(?!taro-fast-)(?!.)'],
173
+ ['^taro-fast-'],
174
+ ['^(?!@/)(?!antd-management-fast-)(?!.)'],
175
+ ['^antd-management-fast-'],
176
+ ['^((@/).*|$)'],
177
+ ['^\u0000'],
178
+ ['^..(?!/?$)', '^../?$'],
179
+ ['^./(?=.*/)(?!/?$)', '^.(?!/?$)', '^./?$'],
180
+ ['^.+.s?less$', '^.+.s?scss$', '^.+.s?css$'],
181
+ ],
182
+ },
183
+ ],
184
+ 'simple-import-sort/exports': 'error',
185
+ 'sort-imports': 0,
186
+ };
187
+
188
+ module.exports = {
189
+ rules: { ...generalRules, ...sortRules },
190
+ };
191
+ `;
192
+
193
+ const ruleFile = {
194
+ folderPath: `${folderPath}/config/items/rules`,
195
+ fileName: 'index.js',
196
+ coverFile: false,
197
+ fileContent: ruleFileContent,
198
+ };
199
+
200
+ const extendFileContent = `${fileGlobalHeader}
201
+ module.exports = {
202
+ extendCollection: [],
203
+ }`;
204
+
205
+ const extendFile = {
206
+ folderPath: `${folderPath}/config/items/extends`,
207
+ fileName: 'index.js',
208
+ coverFile: false,
209
+ fileContent: extendFileContent,
210
+ };
211
+
212
+ const pluginFileContent = `${fileGlobalHeader}
213
+ module.exports = {
214
+ pluginCollection: [],
215
+ }`;
216
+
217
+ const pluginFile = {
218
+ folderPath: `${folderPath}/config/items/plugins`,
219
+ fileName: 'index.js',
220
+ coverFile: false,
221
+ fileContent: pluginFileContent,
222
+ };
223
+
224
+ const parserFileContent = `${fileGlobalHeader}
225
+ module.exports = {
226
+ parserOptions: {
227
+ requireConfigFile: false,
228
+ babelOptions: {
229
+ presets: ['@babel/preset-react'],
230
+ },
231
+ },
232
+ }`;
233
+
234
+ const parserFile = {
235
+ folderPath: `${folderPath}/config/items/parser`,
236
+ fileName: 'index.js',
237
+ coverFile: false,
238
+ fileContent: parserFileContent,
239
+ };
240
+
241
+ module.exports = {
242
+ ignoreFile,
243
+ contentFile,
244
+ ruleFile,
245
+ configFile,
246
+ extendFile,
247
+ pluginFile,
248
+ parserFile,
249
+ };