jjb-cmd 2.0.9 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/package.json +2 -1
  2. package/src/new/cmd.init/index.js +1 -102
  3. package/src/new/cmd.install/config.js +1 -47
  4. package/src/new/cmd.install/index.js +1 -262
  5. package/src/new/cmd.install/tools.js +1 -230
  6. package/src/new/cmd.push/index.js +1 -54
  7. package/src/new/cmd.reglist/index.js +1 -22
  8. package/src/new/cmd.rm-rf/index.js +1 -58
  9. package/src/new/cmd.version/index.js +1 -34
  10. package/src/old/cli.init.js +1 -26
  11. package/src/old/cli.install/config.js +1 -206
  12. package/src/old/cli.install/index.js +1 -340
  13. package/src/old/cli.install/tools.js +1 -230
  14. package/src/old/cli.merge.js +1 -80
  15. package/src/old/cli.pull.js +1 -94
  16. package/src/old/cli.pull2.js +1 -377
  17. package/src/old/cli.rm-rf.js +1 -88
  18. package/src/old/progress-bar.js +1 -23
  19. package/src/old/util.js +1 -149
  20. package/.idea/jjb-cmd.iml +0 -12
  21. package/.idea/modules.xml +0 -8
  22. package/.idea/vcs.xml +0 -6
  23. package/src/old/cli.dva.register.saas.txt +0 -40
  24. package/src/old/cli.dva.register.spa.txt +0 -22
  25. package/src/old/cli.dva.router.saas.txt +0 -210
  26. package/src/old/cli.dva.router.spa.txt +0 -119
  27. package/src/old/cli.init/jjb.config.json +0 -40
  28. package/src/old/cli.init/jjb.script/build.js +0 -11
  29. package/src/old/cli.init/jjb.script/config.js +0 -217
  30. package/src/old/cli.init/jjb.script/proxy.js +0 -19
  31. package/src/old/cli.init/jjb.script/server.js +0 -29
  32. package/src/old/cli.init/jjb.script/utils.js +0 -13
  33. package/src/old/cli.init/package.json +0 -65
  34. package/src/old/cli.init/public/index.html +0 -21
  35. package/src/old/cli.init/src/enumerate/menu/index.js +0 -1
  36. package/src/old/cli.init/src/enumerate/namespace/index.js +0 -3
  37. package/src/old/cli.init/src/index.js +0 -24
  38. package/src/old/cli.init/src/models/main/index.js +0 -31
  39. package/src/old/cli.init/src/pages/index.js +0 -9
  40. package/src/old/cli.init/webstorm.config.js +0 -18
@@ -1,206 +1 @@
1
- const os = require('os');
2
-
3
- exports.GIT_HOST = 'http://192.168.1.242:10985';
4
- exports.GIT_TEMP_DIR = `jjbAssembly_${Date.now()}`;
5
- exports.CLOUD_PROJECT = {
6
- 'common': {
7
- token: 'G4HJRsHr9D7Ssmixegw2',
8
- projectId: 279
9
- },
10
- 'react-admin-component': {
11
- token: 'FT3pKzxpRynFkmddJ9Bs',
12
- projectId: 340
13
- },
14
- 'jjb-dva-runtime': {
15
- token: 'hLqARY89CN6fUD3yg4NL',
16
- projectId: 571
17
- },
18
- 'jjb-common-lib': {
19
- token: 'e9njpBd1nS_LREN8GFpR',
20
- projectId: 572
21
- },
22
- 'jjb-common-decorator': {
23
- token: 'gPSit8aJsLVmNzuQ5Cy4',
24
- projectId: 574
25
- },
26
- 'vue-unisass-component': {
27
- token: 'd4wQ7dzEjYPsgVbKnYei',
28
- projectId: 339
29
- },
30
- };
31
- exports.TEMPLATE_FOLDER = `${os.tmpdir()}\\${exports.GIT_TEMP_DIR}`;
32
- exports.CLI_DVA_ROUTER_SPA = `${__dirname}\\..\\cli.dva.router.spa.txt`;
33
- exports.CLI_DVA_ROUTER_SAAS = `${__dirname}\\..\\cli.dva.router.saas.txt`;
34
- exports.CLI_DVA_REGISTER_SPA = `${__dirname}\\..\\cli.dva.register.spa.txt`;
35
- exports.CLI_DVA_REGISTER_SAAS = `${__dirname}\\..\\cli.dva.register.saas.txt`;
36
- exports.CLI_DVA_ROUTER_PATH = '\\dva\\automatic\\router.js';
37
- exports.CLI_DVA_REGISTER_PATH = '\\dva\\automatic\\register.js';
38
-
39
- exports.COMMON_CONTENT_NOR_REPLACE = [
40
- {
41
- path: `\\tools\\index.js`,
42
- replace: [
43
- [
44
- 'components',
45
- 'jjb-react-admin-component'
46
- ]
47
- ]
48
- },
49
- {
50
- path: `\\website\\index.js`,
51
- replace: [
52
- [
53
- /const\srelation\s=\srequire\(`~\/application\/\${module.code}\/enumerate\/menu`\)\.default;/,
54
- 'const relation = require(\'~/enumerate/menu\').default;'
55
- ],
56
- [
57
- 'components',
58
- 'jjb-react-admin-component'
59
- ]
60
- ]
61
- }
62
- ];
63
-
64
- /**
65
- * @description 需要替换的文本(单应用)
66
- * @type {[{path: string, replace: string[][]}]}
67
- */
68
- exports.COMMON_CONTENT_SPA_REPLACE = [
69
- {
70
- path: `\\tools\\index.js`,
71
- replace: [
72
- [
73
- 'return __planA();',
74
- 'return process.env;'
75
- ]
76
- ]
77
- }
78
- ];
79
-
80
- /**
81
- * @description 需要替换的文本(微应用)
82
- * @type {[{path: string, replace: string[][]}]}
83
- */
84
- exports.COMMON_CONTENT_MICRO_REPLACE = [
85
- {
86
- path: `\\tools\\index.js`,
87
- replace: [
88
- [
89
- 'return __planA();',
90
- 'return process.env.app;'
91
- ]
92
- ]
93
- }
94
- ];
95
-
96
- /**
97
- * @description react-admin-component 需要替换的文本
98
- * @type {[{path: string, replace: string[][]},{path: string, replace: string[][]},{path: string, replace: string[][]},{path: string, replace: string[][]},{path: string, replace: string[][]},null,null,null,null]}
99
- */
100
- exports.COMPONENTS_CONTENT_REPLACE = [
101
- {
102
- path: `\\Editor\\index.js`,
103
- replace: [
104
- [
105
- 'common/http',
106
- 'jjb-common/http'
107
- ],
108
- [
109
- 'common/crypto',
110
- 'jjb-common/crypto'
111
- ],
112
- [
113
- 'common/tools',
114
- 'jjb-common/tools'
115
- ]
116
- ]
117
- },
118
- {
119
- path: `\\RejectText\\index.js`,
120
- replace: [
121
- [
122
- 'common/color',
123
- 'jjb-common/color'
124
- ]
125
- ]
126
- },
127
- {
128
- path: `\\RouterMenu\\index.js`,
129
- replace: [
130
- [
131
- 'common/tools',
132
- 'jjb-common/tools'
133
- ]
134
- ]
135
- },
136
- {
137
- path: `\\FileUploader\\index.js`,
138
- replace: [
139
- [
140
- 'common/http',
141
- 'jjb-common/http'
142
- ],
143
- [
144
- 'common/tools',
145
- 'jjb-common/tools'
146
- ]
147
- ]
148
- },
149
- {
150
- path: `\\ImageCropper\\index.js`,
151
- replace: [
152
- [
153
- 'common/http',
154
- 'jjb-common/http'
155
- ],
156
- [
157
- 'common/tools',
158
- 'jjb-common/tools'
159
- ]
160
- ]
161
- },
162
- {
163
- path: `\\ImageUploader\\index.js`,
164
- replace: [
165
- [
166
- 'common/http',
167
- 'jjb-common/http'
168
- ],
169
- [
170
- 'common/tools',
171
- 'jjb-common/tools'
172
- ]
173
- ]
174
- },
175
- {
176
- path: `\\PageHeaderBar\\index.js`,
177
- replace: [
178
- [
179
- 'common/color',
180
- 'jjb-common/color'
181
- ]
182
- ]
183
- },
184
- {
185
- path: `\\RouterContainer\\index.js`,
186
- replace: [
187
- [
188
- 'common/tools',
189
- 'jjb-common/tools'
190
- ]
191
- ]
192
- },
193
- {
194
- path: `\\RouterContainer\\components\\NavigationTab\\index.js`,
195
- replace: [
196
- [
197
- 'common/website',
198
- 'jjb-common/website'
199
- ],
200
- [
201
- 'common/tools',
202
- 'jjb-common/tools'
203
- ]
204
- ]
205
- }
206
- ];
1
+ const a9_0x211745=a9_0x4be3;function a9_0x5b20(){const _0x2ecad4=['\x5cdva\x5cautomatic\x5cregister.js','9213136LQypaC','FT3pKzxpRynFkmddJ9Bs','CLI_DVA_ROUTER_PATH','const\x20relation\x20=\x20require(\x27~/enumerate/menu\x27).default;','common/color','\x5cRouterContainer\x5cindex.js','10iKGHXt','hLqARY89CN6fUD3yg4NL','G4HJRsHr9D7Ssmixegw2','gPSit8aJsLVmNzuQ5Cy4','\x5c..\x5ccli.dva.register.saas.txt','7892718zHwkzN','jjb-common/website','CLI_DVA_REGISTER_SPA','tmpdir','common/http','GIT_HOST','2782262NuKjjp','CLI_DVA_REGISTER_PATH','e9njpBd1nS_LREN8GFpR','\x5ctools\x5cindex.js','GIT_TEMP_DIR','TEMPLATE_FOLDER','CLOUD_PROJECT','\x5cRouterMenu\x5cindex.js','33127767nHuJGt','\x5cRouterContainer\x5ccomponents\x5cNavigationTab\x5cindex.js','jjb-common/color','common/crypto','\x5c..\x5ccli.dva.register.spa.txt','jjb-common/tools','components','common/tools','\x5cdva\x5cautomatic\x5crouter.js','jjb-common/crypto','COMMON_CONTENT_MICRO_REPLACE','return\x20process.env.app;','CLI_DVA_ROUTER_SPA','\x5cImageCropper\x5cindex.js','jjb-common/http','5mTlpWU','CLI_DVA_ROUTER_SAAS','\x5c..\x5ccli.dva.router.spa.txt','2667124jDARFx','135643mtqPOQ','jjb-react-admin-component','8417500oTaPdL','CLI_DVA_REGISTER_SAAS','http://192.168.1.242:10985','common/website','3sqHLmi','\x5cEditor\x5cindex.js','COMMON_CONTENT_NOR_REPLACE'];a9_0x5b20=function(){return _0x2ecad4;};return a9_0x5b20();}function a9_0x4be3(_0x3bb662,_0x452e8f){const _0x5b20be=a9_0x5b20();return a9_0x4be3=function(_0x4be3af,_0x39efae){_0x4be3af=_0x4be3af-0x1c7;let _0x3c5b1b=_0x5b20be[_0x4be3af];return _0x3c5b1b;},a9_0x4be3(_0x3bb662,_0x452e8f);}(function(_0x41b137,_0x8fb3bd){const _0x471b50=a9_0x4be3,_0x2d2bb0=_0x41b137();while(!![]){try{const _0x313fde=parseInt(_0x471b50(0x1e7))/0x1+-parseInt(_0x471b50(0x1cc))/0x2*(-parseInt(_0x471b50(0x1ed))/0x3)+-parseInt(_0x471b50(0x1e6))/0x4*(parseInt(_0x471b50(0x1e3))/0x5)+-parseInt(_0x471b50(0x1fc))/0x6+-parseInt(_0x471b50(0x1e9))/0x7+-parseInt(_0x471b50(0x1f1))/0x8+-parseInt(_0x471b50(0x1d4))/0x9*(-parseInt(_0x471b50(0x1f7))/0xa);if(_0x313fde===_0x8fb3bd)break;else _0x2d2bb0['push'](_0x2d2bb0['shift']());}catch(_0x31c6c1){_0x2d2bb0['push'](_0x2d2bb0['shift']());}}}(a9_0x5b20,0xd4b5d));const os=require('os');exports[a9_0x211745(0x1cb)]=a9_0x211745(0x1eb),exports['GIT_TEMP_DIR']='jjbAssembly_'+Date['now'](),exports[a9_0x211745(0x1d2)]={'common':{'token':a9_0x211745(0x1f9),'projectId':0x117},'react-admin-component':{'token':a9_0x211745(0x1f2),'projectId':0x154},'jjb-dva-runtime':{'token':a9_0x211745(0x1f8),'projectId':0x23b},'jjb-common-lib':{'token':a9_0x211745(0x1ce),'projectId':0x23c},'jjb-common-decorator':{'token':a9_0x211745(0x1fa),'projectId':0x23e},'vue-unisass-component':{'token':'d4wQ7dzEjYPsgVbKnYei','projectId':0x153}},exports[a9_0x211745(0x1d1)]=os[a9_0x211745(0x1c9)]()+'\x5c'+exports[a9_0x211745(0x1d0)],exports[a9_0x211745(0x1e0)]=__dirname+a9_0x211745(0x1e5),exports[a9_0x211745(0x1e4)]=__dirname+'\x5c..\x5ccli.dva.router.saas.txt',exports[a9_0x211745(0x1c8)]=__dirname+a9_0x211745(0x1d8),exports[a9_0x211745(0x1ea)]=__dirname+a9_0x211745(0x1fb),exports[a9_0x211745(0x1f3)]=a9_0x211745(0x1dc),exports[a9_0x211745(0x1cd)]=a9_0x211745(0x1f0),exports[a9_0x211745(0x1ef)]=[{'path':a9_0x211745(0x1cf),'replace':[[a9_0x211745(0x1da),a9_0x211745(0x1e8)]]},{'path':'\x5cwebsite\x5cindex.js','replace':[[/const\srelation\s=\srequire\(`~\/application\/\${module.code}\/enumerate\/menu`\)\.default;/,a9_0x211745(0x1f4)],[a9_0x211745(0x1da),'jjb-react-admin-component']]}],exports['COMMON_CONTENT_SPA_REPLACE']=[{'path':a9_0x211745(0x1cf),'replace':[['return\x20__planA();','return\x20process.env;']]}],exports[a9_0x211745(0x1de)]=[{'path':a9_0x211745(0x1cf),'replace':[['return\x20__planA();',a9_0x211745(0x1df)]]}],exports['COMPONENTS_CONTENT_REPLACE']=[{'path':a9_0x211745(0x1ee),'replace':[['common/http',a9_0x211745(0x1e2)],[a9_0x211745(0x1d7),a9_0x211745(0x1dd)],[a9_0x211745(0x1db),a9_0x211745(0x1d9)]]},{'path':'\x5cRejectText\x5cindex.js','replace':[[a9_0x211745(0x1f5),a9_0x211745(0x1d6)]]},{'path':a9_0x211745(0x1d3),'replace':[['common/tools','jjb-common/tools']]},{'path':'\x5cFileUploader\x5cindex.js','replace':[['common/http',a9_0x211745(0x1e2)],['common/tools',a9_0x211745(0x1d9)]]},{'path':a9_0x211745(0x1e1),'replace':[[a9_0x211745(0x1ca),a9_0x211745(0x1e2)],[a9_0x211745(0x1db),a9_0x211745(0x1d9)]]},{'path':'\x5cImageUploader\x5cindex.js','replace':[[a9_0x211745(0x1ca),'jjb-common/http'],['common/tools',a9_0x211745(0x1d9)]]},{'path':'\x5cPageHeaderBar\x5cindex.js','replace':[[a9_0x211745(0x1f5),a9_0x211745(0x1d6)]]},{'path':a9_0x211745(0x1f6),'replace':[[a9_0x211745(0x1db),'jjb-common/tools']]},{'path':a9_0x211745(0x1d5),'replace':[[a9_0x211745(0x1ec),a9_0x211745(0x1c7)],[a9_0x211745(0x1db),a9_0x211745(0x1d9)]]}];
@@ -1,340 +1 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const request = require('request');
4
- const compressing = require('compressing');
5
- const {
6
- f_rm_rf,
7
- f_file_copy,
8
- f_content_replace,
9
- f_create_package_json,
10
- f_pull_git_repository,
11
- f_scan_jjb_config_json,
12
- f_scan_jjb_config_json_rules,
13
- f_update_project_package_json
14
- } = require('./tools');
15
- const {
16
- TEMPLATE_FOLDER,
17
- COMMON_CONTENT_SPA_REPLACE,
18
- CLI_DVA_ROUTER_PATH,
19
- CLI_DVA_REGISTER_PATH,
20
- CLI_DVA_ROUTER_SPA,
21
- CLI_DVA_REGISTER_SPA,
22
- CLI_DVA_ROUTER_SAAS,
23
- CLI_DVA_REGISTER_SAAS,
24
- COMMON_CONTENT_MICRO_REPLACE,
25
- COMMON_CONTENT_NOR_REPLACE,
26
- COMPONENTS_CONTENT_REPLACE
27
- } = require('./config');
28
- const start_time = Date.now();
29
-
30
- module.exports = () => {
31
- /**
32
- * 下发数据根路径
33
- * @type {string}
34
- */
35
- const root_path = path.resolve('./');
36
- /**
37
- * 下发数据src路径
38
- * @type {string}
39
- */
40
- const target_src = [
41
- root_path,
42
- 'src\\'
43
- ].join('\\');
44
- /**
45
- * 下发数据node_modules路径
46
- * @type {string}
47
- */
48
- const target_node_modules = [
49
- root_path,
50
- 'node_modules'
51
- ].join('\\');
52
- /**
53
- * 下发数据package.json路径
54
- * @type {string}
55
- */
56
- const target_package_json = [
57
- root_path,
58
- 'package.json'
59
- ].join('\\');
60
- if (f_scan_jjb_config_json(root_path)) {
61
- /**
62
- * 检查配置规则
63
- */
64
- const jjb_config = f_scan_jjb_config_json_rules(root_path);
65
- /**
66
- * 检查项目是否存在node_modules
67
- */
68
- if (jjb_config.installTarget === 'node_modules') {
69
- if (!fs.existsSync(target_node_modules)) {
70
- console.log('【Error】:安装失败,node_modules目录不存在。');
71
- process.exit(0);
72
- } else {
73
- console.log('【Warning】:若安装在node_modules中,请确保projectType = micro-spa,并关闭webpack.config.js rules限制。');
74
- }
75
- } else {
76
- if (!fs.existsSync(target_src)) {
77
- console.log('【Error】:安装失败,src目录不存在。');
78
- process.exit(0);
79
- }
80
- }
81
- /**
82
- * 文件操作:定义一个临时文件夹
83
- */
84
- fs.mkdirSync(TEMPLATE_FOLDER);
85
- /**
86
- * 拉取数据
87
- */
88
- f_pull_git_repository(jjb_config.installResources).map(item => {
89
- const stream = fs.createWriteStream(item.path);
90
- /**
91
- * 流操作:下载git仓库
92
- */
93
- request(item.repository).pipe(stream).on('close', () => {
94
- fs.mkdirSync(item.compress);
95
- /**
96
- * 流操作:解压
97
- */
98
- compressing.zip.uncompress(item.path, item.compress);
99
- });
100
- });
101
- const timer = setInterval(() => {
102
- /**
103
- * 文件操作:扫描临时文件夹
104
- */
105
- const folder_list = fs.readdirSync(TEMPLATE_FOLDER);
106
- /**
107
- * 文件操作:抓取临时文件夹中的内容
108
- */
109
- const match_folder = folder_list.filter(item => jjb_config.installResources.map(item => `${item.name}_zip`).includes(item));
110
- /**
111
- * 文件操作:判断是否已解压完成
112
- */
113
- if (match_folder.length === jjb_config.installResources.length) {
114
- /**
115
- * 解压完成关闭定时器
116
- */
117
- clearInterval(timer);
118
- const resource_folder = [];
119
- match_folder.forEach(name => {
120
- /**
121
- * 文件操作:定义解压包路径
122
- */
123
- const unzip = [
124
- TEMPLATE_FOLDER,
125
- name
126
- ].join('\\');
127
- /**
128
- * 文件操作:抓取解压包中的文件
129
- */
130
- fs.readdirSync(unzip).forEach(dir => resource_folder.push({
131
- name: name,
132
- path: [
133
- unzip,
134
- dir
135
- ].join('\\'),
136
- pure_name: name.replace(/_zip$/, ''),
137
- import_list: jjb_config.installResources.find(item => `${item.name}_zip` === name).importList
138
- }));
139
- });
140
- resource_folder.forEach(item => {
141
- /**
142
- * 文件操作:依赖名称
143
- */
144
- const folder_name = item.pure_name;
145
- /**
146
- * 文件操作:按需加载
147
- */
148
- const folder_import_list = item.import_list;
149
- /**
150
- * 文件操作:组装路径
151
- */
152
- const folder_idea_path = [
153
- item.path,
154
- '.idea'
155
- ].join('//');
156
- /**
157
- * 文件操作:组装路径
158
- */
159
- const folder_git_ignore_path = [
160
- item.path,
161
- '.gitignore'
162
- ].join('//');
163
- /**
164
- * 特殊处理:删除.idea文件夹
165
- */
166
- if (fs.existsSync(folder_idea_path)) {
167
- f_rm_rf(folder_idea_path);
168
- fs.rmdirSync(folder_idea_path);
169
- }
170
- /**
171
- * 特殊处理:删除.gitignore文件
172
- */
173
- if (fs.existsSync(folder_git_ignore_path)) {
174
- fs.unlinkSync(folder_git_ignore_path);
175
- }
176
- /**
177
- * 文件操作:按需加载
178
- */
179
- if (folder_import_list.length) {
180
- /**
181
- * 文件操作:根据jjb.config.json中的importList获取需要的文件
182
- */
183
- fs.readdirSync(item.path).filter(item => !folder_import_list.includes(item) && item !== 'index.js' && item !== 'setting.json').forEach(dir => {
184
- /**
185
- * 文件操作:组装路径
186
- */
187
- const dirPath = `${item.path}\\${dir}`;
188
- /**
189
- * 文件操作:删除不需要的文件夹内容
190
- */
191
- f_rm_rf(dirPath);
192
- /**
193
- * 文件操作:删除不需要的文件夹
194
- */
195
- fs.rmdirSync(dirPath);
196
- });
197
- if (folder_name === 'react-admin-component') {
198
- const codeList = [];
199
- fs.readdirSync(item.path).filter(dir => dir !== 'index.js').forEach(dir => {
200
- if (dir === 'RouterContainer') {
201
- codeList.push(`export { default as RouterContainer, PATH as RouterContainerPATH } from './RouterContainer';`);
202
- } else {
203
- codeList.push(`export { default as ${dir} } from './${dir}';`);
204
- }
205
- });
206
- fs.writeFileSync(`${item.path}\\index.js`, codeList.join('\n'));
207
- }
208
- }
209
- if (folder_name === 'jjb-common') {
210
- /**
211
- * 组装dva/automatic路径
212
- */
213
- const automaticPath = [
214
- item.path,
215
- '\\dva\\automatic'
216
- ].join('\\');
217
- if ([
218
- 'spa',
219
- 'micro-spa'
220
- ].includes(jjb_config.projectType)) {
221
- /**
222
- * 特殊处理:由于micro-spa模式下需要使用react-router-dom自动化技术,spa模式下使用基于dva/router的自动化技术,两者有差异,需要做替换操作
223
- */
224
- if (fs.existsSync(automaticPath)) {
225
- /**
226
- * 文件操作:常规替换
227
- */
228
- f_content_replace(jjb_config.projectType === 'spa'
229
- ? COMMON_CONTENT_SPA_REPLACE
230
- : [
231
- ...COMMON_CONTENT_MICRO_REPLACE,
232
- ...COMMON_CONTENT_NOR_REPLACE
233
- ], item.path);
234
- /**
235
- * 文件操作:替换dva/automatic/router.js
236
- */
237
- fs.writeFileSync(item.path + CLI_DVA_ROUTER_PATH, fs.readFileSync(jjb_config.projectType === 'spa'
238
- ? CLI_DVA_ROUTER_SPA
239
- : CLI_DVA_ROUTER_SAAS).toString());
240
- /**
241
- * 文件操作:替换dva/automatic/register.js
242
- */
243
- fs.writeFileSync(item.path + CLI_DVA_REGISTER_PATH, fs.readFileSync(jjb_config.projectType === 'spa'
244
- ? CLI_DVA_REGISTER_SPA
245
- : CLI_DVA_REGISTER_SAAS).toString());
246
- }
247
- } else if (jjb_config.projectType === 'multi') {
248
- /**
249
- * 特殊处理:由于multi模式下不需要使用自动化技术,需要删除dva/automatic文件夹
250
- */
251
- if (fs.existsSync(automaticPath)) {
252
- f_rm_rf(automaticPath);
253
- fs.rmdirSync(automaticPath);
254
- }
255
- }
256
- } else if (folder_name === 'react-admin-component') {
257
- /**
258
- * 特殊处理:仅限micro-spa模式下允许react-admin-component使用node_modules/jjb-common,其他模式使用src/components,目的是兼容老项目
259
- */
260
- if (jjb_config.projectType === 'micro-spa') {
261
- f_content_replace(COMPONENTS_CONTENT_REPLACE, item.path);
262
- }
263
- } else if (folder_name === 'vue-unisass-component') {
264
-
265
- }
266
- if (jjb_config.installTarget === 'node_modules') {
267
- /**
268
- * 特殊处理:为了避免与node_modules其他依赖重名,添加一个标识符"jjb-"
269
- */
270
- const package_name = folder_name;
271
- /**
272
- * 文件操作:判断node_modules目录下是否已存在
273
- */
274
- if (fs.existsSync(`${target_node_modules}\\${package_name}`)) {
275
- /**
276
- * 文件操作:删除node_modules目录下文件内容(保留文件夹)
277
- */
278
- f_rm_rf(`${target_node_modules}\\${package_name}`);
279
- } else {
280
- /**
281
- * 文件操作:如果不存在,定义一个新的文件夹
282
- */
283
- fs.mkdirSync(`${target_node_modules}\\${package_name}`);
284
- }
285
- /**
286
- * 文件操作:复制文件到node_modules中
287
- */
288
- f_file_copy(item.path, `${target_node_modules}\\${package_name}`);
289
- /**
290
- * 文件操作:创建package.json
291
- */
292
- f_create_package_json(`${target_node_modules}\\${package_name}`, package_name, '1.0.0');
293
- /**
294
- * 文件操作:在src/package.json中定义一个组件依赖
295
- */
296
- f_update_project_package_json(target_package_json, package_name, '1.0.0');
297
- } else if (jjb_config.installTarget === 'src') {
298
- /**
299
- * 特殊处理:由于老项目问题,此处要将react-admin-component转换为components(仅限src模式)
300
- */
301
- const t_name = 'react-admin-component';
302
- /**
303
- * 文件操作:判断src目录下是否已存在
304
- */
305
- if (fs.existsSync(target_src + t_name)) {
306
- /**
307
- * 文件操作:删除src目录下文件内容(保留文件夹)
308
- */
309
- f_rm_rf(target_src + t_name);
310
- } else {
311
- /**
312
- * 文件操作:如果不存在,定义一个新的文件夹
313
- */
314
- fs.mkdirSync(target_src + t_name);
315
- }
316
- /**
317
- * 文件操作:复制文件到src中
318
- */
319
- f_file_copy(item.path, target_src + t_name);
320
- }
321
- });
322
- setTimeout(() => {
323
- /**
324
- * 文件操作:删除临时文件夹内容
325
- */
326
- f_rm_rf(TEMPLATE_FOLDER);
327
- /**
328
- * 文件操作:删除临时文件夹
329
- */
330
- fs.rmdirSync(TEMPLATE_FOLDER);
331
- const end_time = Date.now();
332
- console.log(`【jjb-cmd】:install命令执行完成,用时${(end_time - start_time) / 1000}s`);
333
- }, 1500);
334
- }
335
- }, 1000);
336
- } else {
337
- console.log('【Error】:执行失败,在您的项目根目录,需要一个jjb.config.json文件。');
338
- }
339
- };
340
-
1
+ const a10_0x45c302=a10_0x1df9;(function(_0x2f6109,_0x13fc2b){const _0x36d9eb=a10_0x1df9,_0xac540a=_0x2f6109();while(!![]){try{const _0x58d4d2=-parseInt(_0x36d9eb(0x1e2))/0x1+-parseInt(_0x36d9eb(0x204))/0x2*(parseInt(_0x36d9eb(0x219))/0x3)+parseInt(_0x36d9eb(0x216))/0x4+parseInt(_0x36d9eb(0x20d))/0x5*(-parseInt(_0x36d9eb(0x203))/0x6)+-parseInt(_0x36d9eb(0x1fb))/0x7*(parseInt(_0x36d9eb(0x1ea))/0x8)+-parseInt(_0x36d9eb(0x217))/0x9+parseInt(_0x36d9eb(0x21e))/0xa;if(_0x58d4d2===_0x13fc2b)break;else _0xac540a['push'](_0xac540a['shift']());}catch(_0x3183d9){_0xac540a['push'](_0xac540a['shift']());}}}(a10_0x3fc8,0x64df5));function a10_0x1df9(_0x1dacaa,_0x338b67){const _0x3fc853=a10_0x3fc8();return a10_0x1df9=function(_0x1df91a,_0x15bb2){_0x1df91a=_0x1df91a-0x1dd;let _0xbde01e=_0x3fc853[_0x1df91a];return _0xbde01e;},a10_0x1df9(_0x1dacaa,_0x338b67);}const fs=require('fs'),path=require(a10_0x45c302(0x220)),request=require(a10_0x45c302(0x211)),compressing=require(a10_0x45c302(0x1e3)),{f_rm_rf,f_file_copy,f_content_replace,f_create_package_json,f_pull_git_repository,f_scan_jjb_config_json,f_scan_jjb_config_json_rules,f_update_project_package_json}=require('./tools'),{TEMPLATE_FOLDER,COMMON_CONTENT_SPA_REPLACE,CLI_DVA_ROUTER_PATH,CLI_DVA_REGISTER_PATH,CLI_DVA_ROUTER_SPA,CLI_DVA_REGISTER_SPA,CLI_DVA_ROUTER_SAAS,CLI_DVA_REGISTER_SAAS,COMMON_CONTENT_MICRO_REPLACE,COMMON_CONTENT_NOR_REPLACE,COMPONENTS_CONTENT_REPLACE}=require(a10_0x45c302(0x213)),start_time=Date[a10_0x45c302(0x1e6)]();module[a10_0x45c302(0x1dd)]=()=>{const _0x140a97=a10_0x45c302,_0x5537b5=path[_0x140a97(0x1fe)]('./'),_0x5c6a17=[_0x5537b5,'src\x5c'][_0x140a97(0x218)]('\x5c'),_0x11ef05=[_0x5537b5,_0x140a97(0x212)]['join']('\x5c'),_0x1ed617=[_0x5537b5,'package.json']['join']('\x5c');if(f_scan_jjb_config_json(_0x5537b5)){const _0x3abdb2=f_scan_jjb_config_json_rules(_0x5537b5);_0x3abdb2[_0x140a97(0x1df)]===_0x140a97(0x212)?!fs[_0x140a97(0x209)](_0x11ef05)?(console[_0x140a97(0x215)](_0x140a97(0x21d)),process['exit'](0x0)):console['log'](_0x140a97(0x1ed)):!fs['existsSync'](_0x5c6a17)&&(console[_0x140a97(0x215)](_0x140a97(0x206)),process[_0x140a97(0x1eb)](0x0));fs[_0x140a97(0x201)](TEMPLATE_FOLDER),f_pull_git_repository(_0x3abdb2[_0x140a97(0x20a)])[_0x140a97(0x1f2)](_0x209550=>{const _0x42cdf5=_0x140a97,_0x740d53=fs[_0x42cdf5(0x1f8)](_0x209550[_0x42cdf5(0x220)]);request(_0x209550[_0x42cdf5(0x200)])[_0x42cdf5(0x20f)](_0x740d53)['on']('close',()=>{const _0x1c0d8f=_0x42cdf5;fs[_0x1c0d8f(0x201)](_0x209550[_0x1c0d8f(0x202)]),compressing[_0x1c0d8f(0x207)][_0x1c0d8f(0x1ff)](_0x209550['path'],_0x209550[_0x1c0d8f(0x202)]);});});const _0x4ed981=setInterval(()=>{const _0x2289d1=_0x140a97,_0x2f634b=fs[_0x2289d1(0x1e4)](TEMPLATE_FOLDER),_0x1327e5=_0x2f634b[_0x2289d1(0x1e1)](_0x44634c=>_0x3abdb2['installResources']['map'](_0xfc8026=>_0xfc8026[_0x2289d1(0x21f)]+'_zip')[_0x2289d1(0x1fd)](_0x44634c));if(_0x1327e5['length']===_0x3abdb2[_0x2289d1(0x20a)][_0x2289d1(0x1f6)]){clearInterval(_0x4ed981);const _0x1b6d1f=[];_0x1327e5[_0x2289d1(0x1ec)](_0x43b4d0=>{const _0x5408b5=_0x2289d1,_0xa44eaa=[TEMPLATE_FOLDER,_0x43b4d0][_0x5408b5(0x218)]('\x5c');fs[_0x5408b5(0x1e4)](_0xa44eaa)['forEach'](_0x3f2826=>_0x1b6d1f[_0x5408b5(0x20b)]({'name':_0x43b4d0,'path':[_0xa44eaa,_0x3f2826][_0x5408b5(0x218)]('\x5c'),'pure_name':_0x43b4d0['replace'](/_zip$/,''),'import_list':_0x3abdb2[_0x5408b5(0x20a)]['find'](_0x41ac76=>_0x41ac76[_0x5408b5(0x21f)]+_0x5408b5(0x208)===_0x43b4d0)[_0x5408b5(0x1e0)]}));}),_0x1b6d1f[_0x2289d1(0x1ec)](_0x1bb7f5=>{const _0x14583e=_0x2289d1,_0x30200e=_0x1bb7f5[_0x14583e(0x1f1)],_0x2d8ef3=_0x1bb7f5[_0x14583e(0x1e8)],_0x3c8320=[_0x1bb7f5[_0x14583e(0x220)],_0x14583e(0x1f9)]['join']('//'),_0x558c60=[_0x1bb7f5[_0x14583e(0x220)],_0x14583e(0x21a)][_0x14583e(0x218)]('//');fs[_0x14583e(0x209)](_0x3c8320)&&(f_rm_rf(_0x3c8320),fs['rmdirSync'](_0x3c8320));fs[_0x14583e(0x209)](_0x558c60)&&fs[_0x14583e(0x210)](_0x558c60);if(_0x2d8ef3['length']){fs['readdirSync'](_0x1bb7f5[_0x14583e(0x220)])[_0x14583e(0x1e1)](_0x200f2c=>!_0x2d8ef3[_0x14583e(0x1fd)](_0x200f2c)&&_0x200f2c!==_0x14583e(0x1ee)&&_0x200f2c!==_0x14583e(0x1f5))[_0x14583e(0x1ec)](_0x35bf75=>{const _0x46e3b9=_0x14583e,_0x1e55f8=_0x1bb7f5[_0x46e3b9(0x220)]+'\x5c'+_0x35bf75;f_rm_rf(_0x1e55f8),fs[_0x46e3b9(0x1de)](_0x1e55f8);});if(_0x30200e===_0x14583e(0x205)){const _0x677a48=[];fs[_0x14583e(0x1e4)](_0x1bb7f5[_0x14583e(0x220)])[_0x14583e(0x1e1)](_0x1ba277=>_0x1ba277!==_0x14583e(0x1ee))['forEach'](_0x32ff17=>{const _0x20b32e=_0x14583e;_0x32ff17===_0x20b32e(0x1e5)?_0x677a48[_0x20b32e(0x20b)](_0x20b32e(0x1f4)):_0x677a48[_0x20b32e(0x20b)](_0x20b32e(0x1e7)+_0x32ff17+_0x20b32e(0x1ef)+_0x32ff17+'\x27;');}),fs['writeFileSync'](_0x1bb7f5['path']+_0x14583e(0x20c),_0x677a48[_0x14583e(0x218)]('\x0a'));}}if(_0x30200e===_0x14583e(0x1f0)){const _0x2fe811=[_0x1bb7f5['path'],'\x5cdva\x5cautomatic'][_0x14583e(0x218)]('\x5c');if([_0x14583e(0x1e9),'micro-spa'][_0x14583e(0x1fd)](_0x3abdb2['projectType']))fs[_0x14583e(0x209)](_0x2fe811)&&(f_content_replace(_0x3abdb2['projectType']===_0x14583e(0x1e9)?COMMON_CONTENT_SPA_REPLACE:[...COMMON_CONTENT_MICRO_REPLACE,...COMMON_CONTENT_NOR_REPLACE],_0x1bb7f5[_0x14583e(0x220)]),fs['writeFileSync'](_0x1bb7f5[_0x14583e(0x220)]+CLI_DVA_ROUTER_PATH,fs[_0x14583e(0x21b)](_0x3abdb2['projectType']===_0x14583e(0x1e9)?CLI_DVA_ROUTER_SPA:CLI_DVA_ROUTER_SAAS)['toString']()),fs[_0x14583e(0x20e)](_0x1bb7f5[_0x14583e(0x220)]+CLI_DVA_REGISTER_PATH,fs['readFileSync'](_0x3abdb2[_0x14583e(0x1f7)]==='spa'?CLI_DVA_REGISTER_SPA:CLI_DVA_REGISTER_SAAS)['toString']()));else _0x3abdb2[_0x14583e(0x1f7)]===_0x14583e(0x21c)&&(fs[_0x14583e(0x209)](_0x2fe811)&&(f_rm_rf(_0x2fe811),fs['rmdirSync'](_0x2fe811)));}else{if(_0x30200e===_0x14583e(0x205))_0x3abdb2[_0x14583e(0x1f7)]===_0x14583e(0x214)&&f_content_replace(COMPONENTS_CONTENT_REPLACE,_0x1bb7f5[_0x14583e(0x220)]);else{if(_0x30200e===_0x14583e(0x1fc)){}}}if(_0x3abdb2[_0x14583e(0x1df)]===_0x14583e(0x212)){const _0x528ee5=_0x30200e;fs[_0x14583e(0x209)](_0x11ef05+'\x5c'+_0x528ee5)?f_rm_rf(_0x11ef05+'\x5c'+_0x528ee5):fs[_0x14583e(0x201)](_0x11ef05+'\x5c'+_0x528ee5),f_file_copy(_0x1bb7f5[_0x14583e(0x220)],_0x11ef05+'\x5c'+_0x528ee5),f_create_package_json(_0x11ef05+'\x5c'+_0x528ee5,_0x528ee5,_0x14583e(0x1fa)),f_update_project_package_json(_0x1ed617,_0x528ee5,'1.0.0');}else{if(_0x3abdb2[_0x14583e(0x1df)]==='src'){const _0x4df17c=_0x14583e(0x205);fs[_0x14583e(0x209)](_0x5c6a17+_0x4df17c)?f_rm_rf(_0x5c6a17+_0x4df17c):fs[_0x14583e(0x201)](_0x5c6a17+_0x4df17c),f_file_copy(_0x1bb7f5[_0x14583e(0x220)],_0x5c6a17+_0x4df17c);}}}),setTimeout(()=>{const _0x24b32a=_0x2289d1;f_rm_rf(TEMPLATE_FOLDER),fs[_0x24b32a(0x1de)](TEMPLATE_FOLDER);const _0x26fe36=Date[_0x24b32a(0x1e6)]();console[_0x24b32a(0x215)]('【jjb-cmd】:install命令执行完成,用时'+(_0x26fe36-start_time)/0x3e8+'s');},0x5dc);}},0x3e8);}else console[_0x140a97(0x215)](_0x140a97(0x1f3));};function a10_0x3fc8(){const _0x1fd479=['createWriteStream','.idea','1.0.0','235361QJcATn','vue-unisass-component','includes','resolve','uncompress','repository','mkdirSync','compress','6bVRzZb','6Uxbcwh','react-admin-component','【Error】:安装失败,src目录不存在。','zip','_zip','existsSync','installResources','push','\x5cindex.js','22845tJtLFR','writeFileSync','pipe','unlinkSync','request','node_modules','./config','micro-spa','log','1863860IDMrqN','5374494IdReui','join','281121IEIiHq','.gitignore','readFileSync','multi','【Error】:安装失败,node_modules目录不存在。','13081230TmIjNU','name','path','exports','rmdirSync','installTarget','importList','filter','343567hOXZeh','compressing','readdirSync','RouterContainer','now','export\x20{\x20default\x20as\x20','import_list','spa','32dGtAAN','exit','forEach','【Warning】:若安装在node_modules中,请确保projectType\x20=\x20micro-spa,并关闭webpack.config.js\x20rules限制。','index.js','\x20}\x20from\x20\x27./','jjb-common','pure_name','map','【Error】:执行失败,在您的项目根目录,需要一个jjb.config.json文件。','export\x20{\x20default\x20as\x20RouterContainer,\x20PATH\x20as\x20RouterContainerPATH\x20}\x20from\x20\x27./RouterContainer\x27;','setting.json','length','projectType'];a10_0x3fc8=function(){return _0x1fd479;};return a10_0x3fc8();}