@heathenjs/taro-router-generator 1.0.8 → 1.0.10
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.
Potentially problematic release.
This version of @heathenjs/taro-router-generator might be problematic. Click here for more details.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +35 -24
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +40 -41
package/dist/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare class Generator {
|
|
|
23
23
|
/** 生成路由方法 */
|
|
24
24
|
private generateRouterNavigateMethod;
|
|
25
25
|
/** 生成页面对象的集合 */
|
|
26
|
-
private
|
|
26
|
+
private generatePagesSet;
|
|
27
27
|
private createRouterSourceFile;
|
|
28
28
|
private overrideRouter;
|
|
29
29
|
generateRouter(): void;
|
package/dist/index.js
CHANGED
|
@@ -4,14 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Generator = void 0;
|
|
7
|
-
const package_json_1 = __importDefault(require("@heathenjs/taro-router/package.json"));
|
|
8
7
|
const fs_1 = __importDefault(require("fs"));
|
|
9
8
|
const ignore_1 = __importDefault(require("ignore"));
|
|
10
9
|
const normalize_path_1 = __importDefault(require("normalize-path"));
|
|
11
10
|
const path_1 = __importDefault(require("path"));
|
|
12
11
|
const ts_morph_1 = require("ts-morph");
|
|
13
12
|
const utils_1 = require("./utils");
|
|
14
|
-
const
|
|
13
|
+
const ora_1 = __importDefault(require("ora"));
|
|
14
|
+
const TARGET_MODULE_PATH = path_1.default.resolve('node_modules', '@heathenjs/taro-router');
|
|
15
15
|
const ACCEPTS_INDEX_FILE = ['index.js', 'index.jsx', 'index.jsx', 'index.tsx'];
|
|
16
16
|
const CURRENT_PATH = process.cwd();
|
|
17
17
|
const SOURCE_PATH = path_1.default.resolve(CURRENT_PATH, './src');
|
|
@@ -24,14 +24,15 @@ class Generator {
|
|
|
24
24
|
});
|
|
25
25
|
const mainPackages = packages.filter((pkg) => pkg.isMainPackage);
|
|
26
26
|
if (!mainPackages.length) {
|
|
27
|
-
console.warn('[
|
|
28
|
-
throw new Error('[
|
|
27
|
+
console.warn('[@heathenjs/taro-router]: 没有检测到主包,请确认配置');
|
|
28
|
+
throw new Error('[@heathenjs/taro-router]: 没有检测到主包,请确认配置');
|
|
29
29
|
}
|
|
30
30
|
else if (mainPackages.length > 1) {
|
|
31
|
-
console.warn('[
|
|
31
|
+
console.warn('[@heathenjs/taro-router]: 存在多个配置的主包,将使用首个主包');
|
|
32
32
|
}
|
|
33
33
|
this.mainPackageName = (_a = mainPackages[0]) === null || _a === void 0 ? void 0 : _a.name;
|
|
34
34
|
const ignoreFilter = (0, ignore_1.default)().add(ignore).createFilter();
|
|
35
|
+
const spinner = (0, ora_1.default)('开始解析页面...').start();
|
|
35
36
|
for (const pkg of packages) {
|
|
36
37
|
const pkgPagePath = path_1.default.resolve(CURRENT_PATH, pkg.pagePath);
|
|
37
38
|
const routeConfigSourceFiles = this.tsProject.addSourceFilesAtPaths(path_1.default.join(pkgPagePath, '/**/route.config.ts'));
|
|
@@ -85,12 +86,10 @@ class Generator {
|
|
|
85
86
|
}, {})
|
|
86
87
|
: undefined,
|
|
87
88
|
});
|
|
88
|
-
|
|
89
|
-
// LOG_TYPE.GENERATE,
|
|
90
|
-
// `Router.${pkg.name === MAIN_PACKAGE_NAME ? '' : `${pkg.name}.`}to${formatPageDir(dirName)}`,
|
|
91
|
-
// );
|
|
89
|
+
spinner.text = `Router.${pkg.name === this.mainPackageName ? '' : `${pkg.name}.`}to${(0, utils_1.formatPageDir)(dirName)}`;
|
|
92
90
|
}
|
|
93
91
|
}
|
|
92
|
+
spinner.succeed('页面解析成功');
|
|
94
93
|
}
|
|
95
94
|
/** 生成路由方法 */
|
|
96
95
|
generateRouterNavigateMethod() {
|
|
@@ -146,25 +145,35 @@ class Generator {
|
|
|
146
145
|
return methodText;
|
|
147
146
|
}
|
|
148
147
|
/** 生成页面对象的集合 */
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
|
|
148
|
+
generatePagesSet() {
|
|
149
|
+
const pathToPageObj = {};
|
|
150
|
+
const methodLikePathObj = {};
|
|
151
|
+
for (let A = 0; A < this.pages.length; ++A) {
|
|
152
|
+
const currentPage = this.pages[A];
|
|
153
|
+
pathToPageObj[currentPage.path] = currentPage;
|
|
154
|
+
const methodName = (0, utils_1.formatPageDir)(currentPage.dirName);
|
|
152
155
|
const pageName = methodName.replace(/^(\w)/g, (_, letter) => {
|
|
153
156
|
return letter.toLowerCase();
|
|
154
157
|
});
|
|
155
|
-
if (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
158
|
+
if (currentPage.packageName === this.mainPackageName) {
|
|
159
|
+
methodLikePathObj[pageName] = {
|
|
160
|
+
path: currentPage.path,
|
|
161
|
+
};
|
|
159
162
|
}
|
|
160
163
|
else {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
+
if (!methodLikePathObj[currentPage.packageName]) {
|
|
165
|
+
methodLikePathObj[currentPage.packageName] = {};
|
|
166
|
+
}
|
|
167
|
+
methodLikePathObj[currentPage.packageName][pageName] = {
|
|
168
|
+
path: currentPage.path,
|
|
169
|
+
};
|
|
164
170
|
}
|
|
165
|
-
}
|
|
166
|
-
return
|
|
167
|
-
|
|
171
|
+
}
|
|
172
|
+
return [
|
|
173
|
+
`private static _methodLikePathObj = ${JSON.stringify(methodLikePathObj)}`,
|
|
174
|
+
`private static _pathToPageMap = ${JSON.stringify(pathToPageObj)}`,
|
|
175
|
+
`static getPages = () => { return Router._methodLikePathObj }`,
|
|
176
|
+
].join('\n');
|
|
168
177
|
}
|
|
169
178
|
createRouterSourceFile() {
|
|
170
179
|
return this.tsProject.createSourceFile('temp.ts', (writer) => {
|
|
@@ -174,7 +183,7 @@ class Generator {
|
|
|
174
183
|
writer.writeLine('type Params<P> = RequiredKeys<P> extends never ? { params?: P } : { params: P }');
|
|
175
184
|
writer.writeLine('class Router {');
|
|
176
185
|
writer.write(this.generateRouterNavigateMethod());
|
|
177
|
-
writer.write(this.
|
|
186
|
+
writer.write(this.generatePagesSet());
|
|
178
187
|
writer.writeLine('}');
|
|
179
188
|
});
|
|
180
189
|
}
|
|
@@ -192,10 +201,12 @@ class Generator {
|
|
|
192
201
|
routerSourceFile.emitSync();
|
|
193
202
|
}
|
|
194
203
|
generateRouter() {
|
|
204
|
+
const spinner = (0, ora_1.default)('开始生成路由...').start();
|
|
195
205
|
const sourceFile = this.createRouterSourceFile();
|
|
196
206
|
this.overrideRouter(sourceFile);
|
|
197
207
|
sourceFile.delete();
|
|
198
|
-
console.log(
|
|
208
|
+
console.log(``);
|
|
209
|
+
spinner.succeed(`已生成 ${this.pages.length} 个页面的路由`);
|
|
199
210
|
}
|
|
200
211
|
getPages() {
|
|
201
212
|
return this.pages;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heathenjs/taro-router-generator",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"normalize-path": "^3.0.0",
|
|
16
|
+
"ora": "^8.2.0",
|
|
16
17
|
"ts-morph": "^21.0.1"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|
|
19
|
-
"@types/normalize-path": "^3.0.0"
|
|
20
|
-
"@heathenjs/taro-router": "1.0.8"
|
|
20
|
+
"@types/normalize-path": "^3.0.0"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"prod": "tsc -p ./tsconfig.json",
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import routerModulePkgJson from '@heathenjs/taro-router/package.json';
|
|
2
1
|
import fs from 'fs';
|
|
3
2
|
import createIgnore from 'ignore';
|
|
4
3
|
import normalize from 'normalize-path';
|
|
@@ -6,8 +5,9 @@ import path from 'path';
|
|
|
6
5
|
import { Project, SourceFile } from 'ts-morph';
|
|
7
6
|
import { Page, RouterNavigateMethodConfig } from './type';
|
|
8
7
|
import { extractValue, formatPageDir } from './utils';
|
|
8
|
+
import ora from 'ora';
|
|
9
9
|
|
|
10
|
-
const TARGET_MODULE_PATH = path.resolve('node_modules',
|
|
10
|
+
const TARGET_MODULE_PATH = path.resolve('node_modules', '@heathenjs/taro-router');
|
|
11
11
|
const ACCEPTS_INDEX_FILE = ['index.js', 'index.jsx', 'index.jsx', 'index.tsx'];
|
|
12
12
|
const CURRENT_PATH = process.cwd();
|
|
13
13
|
const SOURCE_PATH = path.resolve(CURRENT_PATH, './src');
|
|
@@ -36,15 +36,16 @@ export class Generator {
|
|
|
36
36
|
constructor({ ignore, packages }: GeneratorOptions) {
|
|
37
37
|
const mainPackages = packages.filter((pkg) => pkg.isMainPackage);
|
|
38
38
|
if (!mainPackages.length) {
|
|
39
|
-
console.warn('[
|
|
40
|
-
throw new Error('[
|
|
39
|
+
console.warn('[@heathenjs/taro-router]: 没有检测到主包,请确认配置');
|
|
40
|
+
throw new Error('[@heathenjs/taro-router]: 没有检测到主包,请确认配置');
|
|
41
41
|
} else if (mainPackages.length > 1) {
|
|
42
|
-
console.warn('[
|
|
42
|
+
console.warn('[@heathenjs/taro-router]: 存在多个配置的主包,将使用首个主包');
|
|
43
43
|
}
|
|
44
44
|
this.mainPackageName = mainPackages[0]?.name;
|
|
45
45
|
|
|
46
46
|
const ignoreFilter = createIgnore().add(ignore).createFilter();
|
|
47
47
|
|
|
48
|
+
const spinner = ora('开始解析页面...').start();
|
|
48
49
|
for (const pkg of packages) {
|
|
49
50
|
const pkgPagePath = path.resolve(CURRENT_PATH, pkg.pagePath);
|
|
50
51
|
const routeConfigSourceFiles = this.tsProject.addSourceFilesAtPaths(
|
|
@@ -110,12 +111,10 @@ export class Generator {
|
|
|
110
111
|
: undefined,
|
|
111
112
|
});
|
|
112
113
|
|
|
113
|
-
|
|
114
|
-
// LOG_TYPE.GENERATE,
|
|
115
|
-
// `Router.${pkg.name === MAIN_PACKAGE_NAME ? '' : `${pkg.name}.`}to${formatPageDir(dirName)}`,
|
|
116
|
-
// );
|
|
114
|
+
spinner.text = `Router.${pkg.name === this.mainPackageName ? '' : `${pkg.name}.`}to${formatPageDir(dirName)}`;
|
|
117
115
|
}
|
|
118
116
|
}
|
|
117
|
+
spinner.succeed('页面解析成功');
|
|
119
118
|
}
|
|
120
119
|
|
|
121
120
|
/** 生成路由方法 */
|
|
@@ -182,37 +181,35 @@ export class Generator {
|
|
|
182
181
|
}
|
|
183
182
|
|
|
184
183
|
/** 生成页面对象的集合 */
|
|
185
|
-
private
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
[page.packageName]: {
|
|
204
|
-
...(store[page.packageName] || {}),
|
|
205
|
-
[pageName]: {
|
|
206
|
-
path: page.path,
|
|
207
|
-
},
|
|
208
|
-
},
|
|
209
|
-
};
|
|
184
|
+
private generatePagesSet() {
|
|
185
|
+
const pathToPageObj: Record<string, Page> = {};
|
|
186
|
+
const methodLikePathObj: Record<string, { path: string } | Record<string, { path: string }>> = {};
|
|
187
|
+
for (let A = 0; A < this.pages.length; ++A) {
|
|
188
|
+
const currentPage = this.pages[A];
|
|
189
|
+
pathToPageObj[currentPage.path] = currentPage;
|
|
190
|
+
|
|
191
|
+
const methodName = formatPageDir(currentPage.dirName);
|
|
192
|
+
const pageName = methodName.replace(/^(\w)/g, (_, letter: string) => {
|
|
193
|
+
return letter.toLowerCase();
|
|
194
|
+
});
|
|
195
|
+
if (currentPage.packageName === this.mainPackageName) {
|
|
196
|
+
methodLikePathObj[pageName] = {
|
|
197
|
+
path: currentPage.path,
|
|
198
|
+
};
|
|
199
|
+
} else {
|
|
200
|
+
if (!methodLikePathObj[currentPage.packageName]) {
|
|
201
|
+
methodLikePathObj[currentPage.packageName] = {};
|
|
210
202
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
203
|
+
methodLikePathObj[currentPage.packageName][pageName] = {
|
|
204
|
+
path: currentPage.path,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return [
|
|
209
|
+
`private static _methodLikePathObj = ${JSON.stringify(methodLikePathObj)}`,
|
|
210
|
+
`private static _pathToPageMap = ${JSON.stringify(pathToPageObj)}`,
|
|
211
|
+
`static getPages = () => { return Router._methodLikePathObj }`,
|
|
212
|
+
].join('\n');
|
|
216
213
|
}
|
|
217
214
|
|
|
218
215
|
private createRouterSourceFile() {
|
|
@@ -224,7 +221,7 @@ export class Generator {
|
|
|
224
221
|
writer.writeLine('class Router {');
|
|
225
222
|
|
|
226
223
|
writer.write(this.generateRouterNavigateMethod());
|
|
227
|
-
writer.write(this.
|
|
224
|
+
writer.write(this.generatePagesSet());
|
|
228
225
|
|
|
229
226
|
writer.writeLine('}');
|
|
230
227
|
});
|
|
@@ -251,12 +248,14 @@ export class Generator {
|
|
|
251
248
|
}
|
|
252
249
|
|
|
253
250
|
public generateRouter() {
|
|
251
|
+
const spinner = ora('开始生成路由...').start();
|
|
254
252
|
const sourceFile = this.createRouterSourceFile();
|
|
255
253
|
|
|
256
254
|
this.overrideRouter(sourceFile);
|
|
257
255
|
|
|
258
256
|
sourceFile.delete();
|
|
259
|
-
console.log(
|
|
257
|
+
console.log(``);
|
|
258
|
+
spinner.succeed(`已生成 ${this.pages.length} 个页面的路由`);
|
|
260
259
|
}
|
|
261
260
|
|
|
262
261
|
public getPages() {
|