lcd-router-webpack-plugin 1.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/.lecprc.ts +5 -0
- package/LICENSE +674 -0
- package/lib/Generator.d.ts +16 -0
- package/lib/Generator.d.ts.map +1 -0
- package/lib/Generator.js +35 -0
- package/lib/Generator.js.map +1 -0
- package/lib/ReducersGenerator.d.ts +15 -0
- package/lib/ReducersGenerator.d.ts.map +1 -0
- package/lib/ReducersGenerator.js +62 -0
- package/lib/ReducersGenerator.js.map +1 -0
- package/lib/RoutersGenerator.d.ts +24 -0
- package/lib/RoutersGenerator.d.ts.map +1 -0
- package/lib/RoutersGenerator.js +115 -0
- package/lib/RoutersGenerator.js.map +1 -0
- package/lib/SagasGenerator.d.ts +16 -0
- package/lib/SagasGenerator.d.ts.map +1 -0
- package/lib/SagasGenerator.js +56 -0
- package/lib/SagasGenerator.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +181 -0
- package/lib/index.js.map +1 -0
- package/lib/utils/files.d.ts +23 -0
- package/lib/utils/files.d.ts.map +1 -0
- package/lib/utils/files.js +65 -0
- package/lib/utils/files.js.map +1 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +50 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/paths.d.ts +38 -0
- package/lib/utils/paths.d.ts.map +1 -0
- package/lib/utils/paths.js +81 -0
- package/lib/utils/paths.js.map +1 -0
- package/lib/utils/resolver.d.ts +25 -0
- package/lib/utils/resolver.d.ts.map +1 -0
- package/lib/utils/resolver.js +41 -0
- package/lib/utils/resolver.js.map +1 -0
- package/lib/utils/types.d.ts +75 -0
- package/lib/utils/types.d.ts.map +1 -0
- package/lib/utils/types.js +6 -0
- package/lib/utils/types.js.map +1 -0
- package/package.json +29 -0
- package/src/Generator.ts +46 -0
- package/src/ReducersGenerator.ts +90 -0
- package/src/RoutersGenerator.ts +295 -0
- package/src/SagasGenerator.ts +101 -0
- package/src/index.ts +204 -0
- package/src/utils/files.ts +54 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/paths.ts +77 -0
- package/src/utils/resolver.ts +37 -0
- package/src/utils/types.ts +76 -0
- package/tsconfig.json +14 -0
package/lib/index.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _globby = _interopRequireDefault(require("globby"));
|
|
8
|
+
var _chokidar = _interopRequireDefault(require("chokidar"));
|
|
9
|
+
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
10
|
+
var _utils = require("./utils");
|
|
11
|
+
var _ReducersGenerator = require("./ReducersGenerator");
|
|
12
|
+
var _SagasGenerator = require("./SagasGenerator");
|
|
13
|
+
var _RoutersGenerator = require("./RoutersGenerator");
|
|
14
|
+
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
class LcdRouterWebpackPlugin {
|
|
17
|
+
options;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this.options = options;
|
|
20
|
+
}
|
|
21
|
+
apply(compiler) {
|
|
22
|
+
this.mergeOptions(compiler);
|
|
23
|
+
compiler.hooks.afterPlugins.tap('LcdRouterWebpackPlugin', compiler => {
|
|
24
|
+
const options = this.options;
|
|
25
|
+
const pathService = new _utils.PathService(options);
|
|
26
|
+
const resolver = new _utils.Resolver(compiler, options);
|
|
27
|
+
const fileService = new _utils.FileService(pathService);
|
|
28
|
+
const reducersGenerator = new _ReducersGenerator.ReducersGenerator();
|
|
29
|
+
const sagasGenerator = new _SagasGenerator.SagasGenerator();
|
|
30
|
+
const routersGenerator = new _RoutersGenerator.RoutersGenerator(options, pathService);
|
|
31
|
+
function isDev(compiler) {
|
|
32
|
+
if (compiler.options.mode === 'production' || process.env.NODE_ENV === 'production') return false;
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
function writeCode() {
|
|
36
|
+
reducersGenerator.writeCodeToFile(pathService.getReducersCacheFileAbs());
|
|
37
|
+
sagasGenerator.writeCodeToFile(pathService.getSagasCacheFileAbs());
|
|
38
|
+
routersGenerator.writeCodeToFile(pathService.getRoutersCacheFileAbs());
|
|
39
|
+
}
|
|
40
|
+
function resolveFile(filepath) {
|
|
41
|
+
const absFilePath = pathService.getCurrentFileAbs(filepath);
|
|
42
|
+
const currentDir = _nodePath.default.dirname(filepath);
|
|
43
|
+
const absCurrentDir = _nodePath.default.dirname(absFilePath);
|
|
44
|
+
const chunkCode = [];
|
|
45
|
+
try {
|
|
46
|
+
const reducerPath = resolver.getReducerFile(absCurrentDir);
|
|
47
|
+
chunkCode.push(`export { default as reducer } from '${reducerPath}';`);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
// feat: reducers 可以不存在, 方便结合reactive 和 ak,默认创建一个reducers
|
|
50
|
+
chunkCode.push(`export function reducer(){ return {} }`);
|
|
51
|
+
}
|
|
52
|
+
const viewPath = resolver.getViewFile(absCurrentDir);
|
|
53
|
+
chunkCode.push(`export { default as view } from '${viewPath}';`);
|
|
54
|
+
const meJSON = fileService.readJSONSync(absFilePath);
|
|
55
|
+
if (meJSON.theme && !options.theme?.hash) {
|
|
56
|
+
throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);
|
|
57
|
+
}
|
|
58
|
+
if (!meJSON.mobx) {
|
|
59
|
+
const sagaPath = resolver.getSagaFile(absCurrentDir);
|
|
60
|
+
chunkCode.push(`export { default as saga } from '${sagaPath}';`);
|
|
61
|
+
}
|
|
62
|
+
if (meJSON.errorComponent) {
|
|
63
|
+
const errorCompPath = resolver.getErrorComFile(absCurrentDir, meJSON.errorComponent);
|
|
64
|
+
chunkCode.push(`export { default as ErrorComponent } from '${errorCompPath}';`);
|
|
65
|
+
}
|
|
66
|
+
if (options.theme?.hash) {
|
|
67
|
+
const themePath = pathService.getThemeJSCacheFileAbs(options.theme?.hash);
|
|
68
|
+
chunkCode.push(`export * from '${themePath}';`);
|
|
69
|
+
}
|
|
70
|
+
if (meJSON.theme) {
|
|
71
|
+
fileService.writeThemeFile(meJSON.theme, 'toGlobalTheme');
|
|
72
|
+
const themePath = pathService.getThemeJSCacheFileAbs(meJSON.theme);
|
|
73
|
+
chunkCode.push(`export * from '${themePath}';`);
|
|
74
|
+
}
|
|
75
|
+
const meJSONPath = pathService.getMeJSONCacheFileAbs(filepath);
|
|
76
|
+
fileService.writeMeJSONFile(meJSONPath, chunkCode);
|
|
77
|
+
const isExternal = options.externals?.some?.(x => x === _nodePath.default.dirname(filepath)) ?? false;
|
|
78
|
+
|
|
79
|
+
// 处理是否存在多store的场景
|
|
80
|
+
const hasChildStore = _globby.default.sync(`**/*.${options.reducerName}.{t,j}s`, {
|
|
81
|
+
cwd: absCurrentDir
|
|
82
|
+
}).length > 0;
|
|
83
|
+
if (hasChildStore && (meJSON.sync || isExternal)) {
|
|
84
|
+
throw Error(`如果开启了Sync模式或当前页面存在于LCD的external中,那么则不支持多Store功能,${absCurrentDir}`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** reducers.js */
|
|
88
|
+
reducersGenerator.set(filepath, {
|
|
89
|
+
meJSON,
|
|
90
|
+
isExternal,
|
|
91
|
+
namespace: currentDir,
|
|
92
|
+
meJSONPath: meJSONPath
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
/** saga.js */
|
|
96
|
+
sagasGenerator.set(currentDir, {
|
|
97
|
+
meJSON,
|
|
98
|
+
isExternal,
|
|
99
|
+
namespace: currentDir,
|
|
100
|
+
meJSONPath: meJSONPath
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
/** router */
|
|
104
|
+
routersGenerator.set(currentDir, {
|
|
105
|
+
meJSON,
|
|
106
|
+
isExternal,
|
|
107
|
+
page: currentDir,
|
|
108
|
+
path: currentDir,
|
|
109
|
+
exact: false,
|
|
110
|
+
meJSONPath: meJSONPath
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
/** 处理 /list 的路由 */
|
|
114
|
+
if (new RegExp(`\/${options.index}$`).test(absCurrentDir)) {
|
|
115
|
+
const _key = absCurrentDir.replace(new RegExp(`\/${options.index}$`), '');
|
|
116
|
+
routersGenerator.set(_key, {
|
|
117
|
+
meJSON,
|
|
118
|
+
isExternal,
|
|
119
|
+
page: absCurrentDir,
|
|
120
|
+
path: _key,
|
|
121
|
+
exact: true,
|
|
122
|
+
meJSONPath: meJSONPath
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (options.theme?.hash) {
|
|
127
|
+
fileService.writeThemeFile(options.theme.hash, 'toGlobalTheme');
|
|
128
|
+
}
|
|
129
|
+
const list = _globby.default.sync('**/me.json', {
|
|
130
|
+
cwd: pathService.getPageRootAbs()
|
|
131
|
+
});
|
|
132
|
+
if (list.length === 0) {
|
|
133
|
+
console.warn('没有找到me.json文件');
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* glob 的排序 是包含文件名 me.json 的完整路径,存在问题
|
|
138
|
+
* 比如 会将 /xx/ss/me.json 排到 /xx/ss/zz/me.json 前面
|
|
139
|
+
* glob 的 noSort option 会将 文件夹排到前面, 因此需要手动排序, 并且统一成 globby, 速度更快
|
|
140
|
+
*/
|
|
141
|
+
const sortedList = list.map(filepath => filepath?.replace(/me.json$/, '')).sort((a, b) => {
|
|
142
|
+
if (a?.startsWith(b)) return -1;
|
|
143
|
+
return a.localeCompare(b, 'en');
|
|
144
|
+
}).map(dir => `${dir}me.json`);
|
|
145
|
+
sortedList.forEach(filepath => {
|
|
146
|
+
resolveFile(filepath);
|
|
147
|
+
});
|
|
148
|
+
writeCode();
|
|
149
|
+
if (isDev(compiler)) {
|
|
150
|
+
const watcher = _chokidar.default.watch('**/me.json', {
|
|
151
|
+
cwd: pathService.getPageRootAbs(),
|
|
152
|
+
ignoreInitial: true
|
|
153
|
+
});
|
|
154
|
+
const fn = async filepath => {
|
|
155
|
+
await resolveFile(filepath);
|
|
156
|
+
writeCode();
|
|
157
|
+
};
|
|
158
|
+
watcher.on('add', fn);
|
|
159
|
+
watcher.on('addDir', fn);
|
|
160
|
+
watcher.on('change', fn);
|
|
161
|
+
watcher.on('unlink', fn);
|
|
162
|
+
watcher.on('unlinkDir', fn);
|
|
163
|
+
watcher.on('error', fn);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
mergeOptions(compiler) {
|
|
168
|
+
const defaultOptions = {
|
|
169
|
+
context: compiler.context,
|
|
170
|
+
enablePreFetch: false,
|
|
171
|
+
index: 'list',
|
|
172
|
+
externals: [],
|
|
173
|
+
pageDir: 'component',
|
|
174
|
+
reducerName: 'reducers',
|
|
175
|
+
disableBuiltInRoute: false
|
|
176
|
+
};
|
|
177
|
+
this.options = (0, _deepmerge.default)(defaultOptions, this.options);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.default = LcdRouterWebpackPlugin;
|
|
181
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_globby","_interopRequireDefault","require","_chokidar","_deepmerge","_utils","_ReducersGenerator","_SagasGenerator","_RoutersGenerator","_nodePath","obj","__esModule","default","LcdRouterWebpackPlugin","options","constructor","apply","compiler","mergeOptions","hooks","afterPlugins","tap","pathService","PathService","resolver","Resolver","fileService","FileService","reducersGenerator","ReducersGenerator","sagasGenerator","SagasGenerator","routersGenerator","RoutersGenerator","isDev","mode","process","env","NODE_ENV","writeCode","writeCodeToFile","getReducersCacheFileAbs","getSagasCacheFileAbs","getRoutersCacheFileAbs","resolveFile","filepath","absFilePath","getCurrentFileAbs","currentDir","path","dirname","absCurrentDir","chunkCode","reducerPath","getReducerFile","push","e","viewPath","getViewFile","meJSON","readJSONSync","theme","hash","Error","mobx","sagaPath","getSagaFile","errorComponent","errorCompPath","getErrorComFile","themePath","getThemeJSCacheFileAbs","writeThemeFile","meJSONPath","getMeJSONCacheFileAbs","writeMeJSONFile","isExternal","externals","some","x","hasChildStore","globby","sync","reducerName","cwd","length","set","namespace","page","exact","RegExp","index","test","_key","replace","list","getPageRootAbs","console","warn","sortedList","map","sort","a","b","startsWith","localeCompare","dir","forEach","watcher","chokidar","watch","ignoreInitial","fn","on","defaultOptions","context","enablePreFetch","pageDir","disableBuiltInRoute","deepmerge","exports"],"sources":["../index.ts"],"sourcesContent":["import type { Compiler, WebpackPluginInstance } from 'webpack';\nimport globby from 'globby';\nimport chokidar from 'chokidar';\nimport deepmerge from 'deepmerge';\nimport { PathService, Resolver, Options, FileService } from './utils';\nimport { ReducersGenerator } from './ReducersGenerator';\nimport { SagasGenerator } from './SagasGenerator';\nimport { RoutersGenerator } from './RoutersGenerator';\n\nimport path from 'node:path';\n\nexport default class LcdRouterWebpackPlugin implements WebpackPluginInstance {\n options: Options;\n constructor(options: Options) {\n this.options = options;\n }\n\n apply(compiler: Compiler) {\n this.mergeOptions(compiler);\n\n compiler.hooks.afterPlugins.tap('LcdRouterWebpackPlugin', (compiler) => {\n const options = this.options;\n\n const pathService = new PathService(options);\n const resolver = new Resolver(compiler, options);\n const fileService = new FileService(pathService);\n\n const reducersGenerator = new ReducersGenerator();\n const sagasGenerator = new SagasGenerator();\n const routersGenerator = new RoutersGenerator(options, pathService);\n\n function isDev(compiler) {\n if (compiler.options.mode === 'production' || process.env.NODE_ENV === 'production')\n return false;\n return true;\n }\n\n function writeCode() {\n reducersGenerator.writeCodeToFile(pathService.getReducersCacheFileAbs());\n sagasGenerator.writeCodeToFile(pathService.getSagasCacheFileAbs());\n routersGenerator.writeCodeToFile(pathService.getRoutersCacheFileAbs());\n }\n\n function resolveFile(filepath: string) {\n const absFilePath = pathService.getCurrentFileAbs(filepath);\n const currentDir = path.dirname(filepath);\n const absCurrentDir = path.dirname(absFilePath);\n\n const chunkCode = [] as string[];\n try {\n const reducerPath = resolver.getReducerFile(absCurrentDir);\n chunkCode.push(`export { default as reducer } from '${reducerPath}';`);\n } catch (e) {\n // feat: reducers 可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n chunkCode.push(`export function reducer(){ return {} }`);\n }\n\n const viewPath = resolver.getViewFile(absCurrentDir);\n chunkCode.push(`export { default as view } from '${viewPath}';`);\n\n const meJSON = fileService.readJSONSync(absFilePath);\n if (meJSON.theme && !options.theme?.hash) {\n throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);\n }\n\n if (!meJSON.mobx) {\n const sagaPath = resolver.getSagaFile(absCurrentDir);\n chunkCode.push(`export { default as saga } from '${sagaPath}';`);\n }\n\n if (meJSON.errorComponent) {\n const errorCompPath = resolver.getErrorComFile(absCurrentDir, meJSON.errorComponent);\n chunkCode.push(`export { default as ErrorComponent } from '${errorCompPath}';`);\n }\n\n if (options.theme?.hash) {\n const themePath = pathService.getThemeJSCacheFileAbs(options.theme?.hash);\n chunkCode.push(`export * from '${themePath}';`);\n }\n\n if (meJSON.theme) {\n fileService.writeThemeFile(meJSON.theme, 'toGlobalTheme');\n const themePath = pathService.getThemeJSCacheFileAbs(meJSON.theme);\n chunkCode.push(`export * from '${themePath}';`);\n }\n\n const meJSONPath = pathService.getMeJSONCacheFileAbs(filepath);\n\n fileService.writeMeJSONFile(meJSONPath, chunkCode);\n\n const isExternal = options.externals?.some?.((x) => x === path.dirname(filepath)) ?? false;\n\n // 处理是否存在多store的场景\n const hasChildStore =\n globby.sync(`**/*.${options.reducerName}.{t,j}s`, { cwd: absCurrentDir }).length > 0;\n if (hasChildStore && (meJSON.sync || isExternal)) {\n throw Error(\n `如果开启了Sync模式或当前页面存在于LCD的external中,那么则不支持多Store功能,${absCurrentDir}`,\n );\n }\n\n /** reducers.js */\n reducersGenerator.set(filepath, {\n meJSON,\n isExternal,\n namespace: currentDir,\n meJSONPath: meJSONPath,\n });\n\n /** saga.js */\n sagasGenerator.set(currentDir, {\n meJSON,\n isExternal,\n namespace: currentDir,\n meJSONPath: meJSONPath,\n });\n\n /** router */\n routersGenerator.set(currentDir, {\n meJSON,\n isExternal,\n page: currentDir,\n path: currentDir,\n exact: false,\n meJSONPath: meJSONPath,\n });\n\n /** 处理 /list 的路由 */\n if (new RegExp(`\\/${options.index}$`).test(absCurrentDir)) {\n const _key = absCurrentDir.replace(new RegExp(`\\/${options.index}$`), '');\n routersGenerator.set(_key, {\n meJSON,\n isExternal,\n page: absCurrentDir,\n path: _key,\n exact: true,\n meJSONPath: meJSONPath,\n });\n }\n }\n\n if (options.theme?.hash) {\n fileService.writeThemeFile(options.theme.hash, 'toGlobalTheme');\n }\n\n const list = globby.sync('**/me.json', {\n cwd: pathService.getPageRootAbs(),\n });\n\n if (list.length === 0) {\n console.warn('没有找到me.json文件');\n }\n\n /**\n * glob 的排序 是包含文件名 me.json 的完整路径,存在问题\n * 比如 会将 /xx/ss/me.json 排到 /xx/ss/zz/me.json 前面\n * glob 的 noSort option 会将 文件夹排到前面, 因此需要手动排序, 并且统一成 globby, 速度更快\n */\n const sortedList = list\n .map((filepath) => filepath?.replace(/me.json$/, ''))\n .sort((a, b) => {\n if (a?.startsWith(b)) return -1;\n return a.localeCompare(b, 'en');\n })\n .map((dir) => `${dir}me.json`);\n\n sortedList.forEach((filepath) => {\n resolveFile(filepath);\n });\n\n writeCode();\n\n if (isDev(compiler)) {\n const watcher = chokidar.watch('**/me.json', {\n cwd: pathService.getPageRootAbs(),\n ignoreInitial: true,\n });\n const fn = async (filepath) => {\n await resolveFile(filepath);\n writeCode();\n };\n watcher.on('add', fn);\n watcher.on('addDir', fn);\n watcher.on('change', fn);\n watcher.on('unlink', fn);\n watcher.on('unlinkDir', fn);\n watcher.on('error', fn);\n }\n });\n }\n\n mergeOptions(compiler: Compiler) {\n const defaultOptions = {\n context: compiler.context,\n enablePreFetch: false,\n index: 'list',\n externals: [],\n pageDir: 'component',\n reducerName: 'reducers',\n disableBuiltInRoute: false,\n };\n this.options = deepmerge(defaultOptions, this.options);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PathService } from './paths';
|
|
2
|
+
export declare class FileService {
|
|
3
|
+
pathService: PathService;
|
|
4
|
+
constructor(pathService: any);
|
|
5
|
+
writeFileSync: (path: string, content: string) => void;
|
|
6
|
+
/**
|
|
7
|
+
* 创建 meJSON.js 文件, 包含部分内容
|
|
8
|
+
*/
|
|
9
|
+
writeMeJSONFile: (filepath: string, chunkCode: string[]) => void;
|
|
10
|
+
/**
|
|
11
|
+
* 书写主题文件
|
|
12
|
+
*/
|
|
13
|
+
writeThemeFile: (hash: string, funcName: string) => void;
|
|
14
|
+
/**
|
|
15
|
+
* 获取 主题 文件内容
|
|
16
|
+
*/
|
|
17
|
+
fetchThemeFileContent: (hash: string) => any;
|
|
18
|
+
/**
|
|
19
|
+
* 读 json 文件
|
|
20
|
+
*/
|
|
21
|
+
readJSONSync: (path: string) => any;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,qBAAa,WAAW;IACtB,WAAW,EAAE,WAAW,CAAC;gBAEb,WAAW,KAAA;IAIvB,aAAa,SAAU,MAAM,WAAW,MAAM,UAE5C;IAEF;;OAEG;IACH,eAAe,aAAc,MAAM,aAAa,MAAM,EAAE,UAGtD;IAEF;;OAEG;IACH,cAAc,SAAU,MAAM,YAAY,MAAM,UAM9C;IAEF;;OAEG;IAEH,qBAAqB,SAAU,MAAM,SAOnC;IAEF;;OAEG;IACH,YAAY,SAAU,MAAM,SAE1B;CACH"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FileService = void 0;
|
|
7
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
8
|
+
var _syncFetch = _interopRequireDefault(require("sync-fetch"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
class FileService {
|
|
11
|
+
pathService;
|
|
12
|
+
constructor(pathService) {
|
|
13
|
+
this.pathService = pathService;
|
|
14
|
+
}
|
|
15
|
+
writeFileSync = (path, content) => {
|
|
16
|
+
_fsExtra.default.outputFileSync(path, content, {
|
|
17
|
+
encoding: 'utf8'
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 创建 meJSON.js 文件, 包含部分内容
|
|
23
|
+
*/
|
|
24
|
+
writeMeJSONFile = (filepath, chunkCode) => {
|
|
25
|
+
const code = chunkCode.join('\n');
|
|
26
|
+
this.writeFileSync(filepath, code);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 书写主题文件
|
|
31
|
+
*/
|
|
32
|
+
writeThemeFile = (hash, funcName) => {
|
|
33
|
+
const code = this.fetchThemeFileContent(hash);
|
|
34
|
+
const target = this.pathService.getThemeJSCacheFileAbs(hash);
|
|
35
|
+
if (!_fsExtra.default.pathExistsSync(target)) {
|
|
36
|
+
_fsExtra.default.outputFileSync(target, ` export function ${funcName}(){ ${code} }`, {
|
|
37
|
+
encoding: 'utf8'
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 获取 主题 文件内容
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
fetchThemeFileContent = hash => {
|
|
47
|
+
// TODO: 需要加错误处理, 以及重试机制
|
|
48
|
+
const code = (0, _syncFetch.default)(`https://assets.dotfashion.cn/unpkg/@shein-components/shineout-theme@0.0.0-${hash}/index.js`).text();
|
|
49
|
+
if (!code.includes('(function(){')) {
|
|
50
|
+
throw new Error(`获取主题文件失败,hash:${hash}`);
|
|
51
|
+
}
|
|
52
|
+
return code;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* 读 json 文件
|
|
57
|
+
*/
|
|
58
|
+
readJSONSync = path => {
|
|
59
|
+
return _fsExtra.default.readJSONSync(path, {
|
|
60
|
+
encoding: 'utf8'
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
exports.FileService = FileService;
|
|
65
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","names":["_fsExtra","_interopRequireDefault","require","_syncFetch","obj","__esModule","default","FileService","pathService","constructor","writeFileSync","path","content","fse","outputFileSync","encoding","writeMeJSONFile","filepath","chunkCode","code","join","writeThemeFile","hash","funcName","fetchThemeFileContent","target","getThemeJSCacheFileAbs","pathExistsSync","fetchSync","text","includes","Error","readJSONSync","exports"],"sources":["../../files.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport { PathService } from './paths';\nimport fetchSync from 'sync-fetch';\n\nexport class FileService {\n pathService: PathService;\n\n constructor(pathService) {\n this.pathService = pathService;\n }\n\n writeFileSync = (path: string, content: string) => {\n fse.outputFileSync(path, content, { encoding: 'utf8' });\n };\n\n /**\n * 创建 meJSON.js 文件, 包含部分内容\n */\n writeMeJSONFile = (filepath: string, chunkCode: string[]) => {\n const code = chunkCode.join('\\n');\n this.writeFileSync(filepath, code);\n };\n\n /**\n * 书写主题文件\n */\n writeThemeFile = (hash: string, funcName: string) => {\n const code = this.fetchThemeFileContent(hash);\n const target = this.pathService.getThemeJSCacheFileAbs(hash);\n if (!fse.pathExistsSync(target)) {\n fse.outputFileSync(target, ` export function ${funcName}(){ ${code} }`, { encoding: 'utf8' });\n }\n };\n\n /**\n * 获取 主题 文件内容\n */\n\n fetchThemeFileContent = (hash: string) => {\n // TODO: 需要加错误处理, 以及重试机制\n const code = fetchSync(`https://assets.dotfashion.cn/unpkg/@shein-components/shineout-theme@0.0.0-${hash}/index.js`).text();\n if (!code.includes('(function(){')) {\n throw new Error(`获取主题文件失败,hash:${hash}`);\n }\n return code;\n };\n\n /**\n * 读 json 文件\n */\n readJSONSync = (path: string) => {\n return fse.readJSONSync(path, { encoding: 'utf8' });\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAmC,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5B,MAAMG,WAAW,CAAC;EACvBC,WAAW;EAEXC,WAAWA,CAACD,WAAW,EAAE;IACvB,IAAI,CAACA,WAAW,GAAGA,WAAW;EAChC;EAEAE,aAAa,GAAGA,CAACC,IAAY,EAAEC,OAAe,KAAK;IACjDC,gBAAG,CAACC,cAAc,CAACH,IAAI,EAAEC,OAAO,EAAE;MAAEG,QAAQ,EAAE;IAAO,CAAC,CAAC;EACzD,CAAC;;EAED;AACF;AACA;EACEC,eAAe,GAAGA,CAACC,QAAgB,EAAEC,SAAmB,KAAK;IAC3D,MAAMC,IAAI,GAAGD,SAAS,CAACE,IAAI,CAAC,IAAI,CAAC;IACjC,IAAI,CAACV,aAAa,CAACO,QAAQ,EAAEE,IAAI,CAAC;EACpC,CAAC;;EAED;AACF;AACA;EACEE,cAAc,GAAGA,CAACC,IAAY,EAAEC,QAAgB,KAAK;IACnD,MAAMJ,IAAI,GAAG,IAAI,CAACK,qBAAqB,CAACF,IAAI,CAAC;IAC7C,MAAMG,MAAM,GAAG,IAAI,CAACjB,WAAW,CAACkB,sBAAsB,CAACJ,IAAI,CAAC;IAC5D,IAAI,CAACT,gBAAG,CAACc,cAAc,CAACF,MAAM,CAAC,EAAE;MAC/BZ,gBAAG,CAACC,cAAc,CAACW,MAAM,EAAG,oBAAmBF,QAAS,OAAMJ,IAAK,IAAG,EAAE;QAAEJ,QAAQ,EAAE;MAAO,CAAC,CAAC;IAC/F;EACF,CAAC;;EAED;AACF;AACA;;EAEES,qBAAqB,GAAIF,IAAY,IAAK;IACxC;IACA,MAAMH,IAAI,GAAG,IAAAS,kBAAS,EAAE,6EAA4EN,IAAK,WAAU,CAAC,CAACO,IAAI,EAAE;IAC3H,IAAI,CAACV,IAAI,CAACW,QAAQ,CAAC,cAAc,CAAC,EAAE;MAClC,MAAM,IAAIC,KAAK,CAAE,iBAAgBT,IAAK,EAAC,CAAC;IAC1C;IACA,OAAOH,IAAI;EACb,CAAC;;EAED;AACF;AACA;EACEa,YAAY,GAAIrB,IAAY,IAAK;IAC/B,OAAOE,gBAAG,CAACmB,YAAY,CAACrB,IAAI,EAAE;MAAEI,QAAQ,EAAE;IAAO,CAAC,CAAC;EACrD,CAAC;AACH;AAACkB,OAAA,CAAA1B,WAAA,GAAAA,WAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _paths = require("./paths");
|
|
7
|
+
Object.keys(_paths).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _paths[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _paths[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _types = require("./types");
|
|
18
|
+
Object.keys(_types).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _types[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _types[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _resolver = require("./resolver");
|
|
29
|
+
Object.keys(_resolver).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _resolver[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _resolver[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
var _files = require("./files");
|
|
40
|
+
Object.keys(_files).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _files[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _files[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_paths","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_types","_resolver","_files"],"sources":["../../index.ts"],"sourcesContent":["export * from './paths';\nexport * from './types';\nexport * from './resolver';\nexport * from './files';\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,SAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,SAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,SAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,SAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,MAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,MAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,MAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,MAAA,CAAAP,GAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Options } from '../utils';
|
|
2
|
+
export declare const dir = "lessCoding";
|
|
3
|
+
export declare const themes = "themes";
|
|
4
|
+
export declare const LcdTempDir = ".lego";
|
|
5
|
+
/**
|
|
6
|
+
* 路径处理服务
|
|
7
|
+
*/
|
|
8
|
+
export declare class PathService {
|
|
9
|
+
options: Options;
|
|
10
|
+
legoAbs: string;
|
|
11
|
+
constructor(options: any);
|
|
12
|
+
/**
|
|
13
|
+
* 页面根目录绝对路径
|
|
14
|
+
* 通常都是
|
|
15
|
+
* - src
|
|
16
|
+
* - components
|
|
17
|
+
* */
|
|
18
|
+
getPageRootAbs(): string;
|
|
19
|
+
getSrcRootAbs(): string;
|
|
20
|
+
/**
|
|
21
|
+
* 当前文件的绝对路径
|
|
22
|
+
* */
|
|
23
|
+
getCurrentFileAbs(relativeFilePath: string): string;
|
|
24
|
+
/** 当前文件的绝对目录路径 */
|
|
25
|
+
getCurrentDirAbs(relativeFilePath: string): string;
|
|
26
|
+
/** 生成的 reducers 文件路径 */
|
|
27
|
+
getReducersCacheFileAbs(): string;
|
|
28
|
+
/** 生成的 sagas 文件路径 */
|
|
29
|
+
getSagasCacheFileAbs(): string;
|
|
30
|
+
/** 生成的 routers 文件路径 */
|
|
31
|
+
getRoutersCacheFileAbs(): string;
|
|
32
|
+
/** 主题文件cache 的路径 */
|
|
33
|
+
getThemeJSCacheFileAbs(hash: string): string;
|
|
34
|
+
/** 获取 mejson 编译后的文件路径 */
|
|
35
|
+
getMeJSONCacheFileAbs(relativeFilePath: string): string;
|
|
36
|
+
getMeJsonCacheFileName(relativeFilePath: string): string;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,GAAG,eAAe,CAAC;AAEhC,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,UAAU,UAAU,CAAC;AAElC;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;gBAEJ,OAAO,KAAA;IAKnB;;;;;SAKK;IACL,cAAc;IAId,aAAa;IAIb;;SAEK;IACL,iBAAiB,CAAC,gBAAgB,EAAE,MAAM;IAI1C,kBAAkB;IAClB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM;IAIzC,wBAAwB;IACxB,uBAAuB;IAIvB,qBAAqB;IACrB,oBAAoB;IAIpB,uBAAuB;IACvB,sBAAsB;IAItB,oBAAoB;IACpB,sBAAsB,CAAC,IAAI,EAAE,MAAM;IAInC,yBAAyB;IACzB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM;IAI9C,sBAAsB,CAAC,gBAAgB,EAAE,MAAM;CAGhD"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.themes = exports.dir = exports.PathService = exports.LcdTempDir = void 0;
|
|
7
|
+
var _path = _interopRequireDefault(require("path"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
const dir = 'lessCoding';
|
|
10
|
+
exports.dir = dir;
|
|
11
|
+
const themes = 'themes';
|
|
12
|
+
exports.themes = themes;
|
|
13
|
+
const LcdTempDir = '.lego';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 路径处理服务
|
|
17
|
+
*/
|
|
18
|
+
exports.LcdTempDir = LcdTempDir;
|
|
19
|
+
class PathService {
|
|
20
|
+
options;
|
|
21
|
+
legoAbs;
|
|
22
|
+
constructor(options) {
|
|
23
|
+
this.options = options;
|
|
24
|
+
this.legoAbs = _path.default.join(this.options.context, 'src', LcdTempDir);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 页面根目录绝对路径
|
|
29
|
+
* 通常都是
|
|
30
|
+
* - src
|
|
31
|
+
* - components
|
|
32
|
+
* */
|
|
33
|
+
getPageRootAbs() {
|
|
34
|
+
return _path.default.join(this.options.context, 'src', this.options.pageDir);
|
|
35
|
+
}
|
|
36
|
+
getSrcRootAbs() {
|
|
37
|
+
return _path.default.join(this.options.context, 'src');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 当前文件的绝对路径
|
|
42
|
+
* */
|
|
43
|
+
getCurrentFileAbs(relativeFilePath) {
|
|
44
|
+
return _path.default.join(this.getPageRootAbs(), relativeFilePath);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** 当前文件的绝对目录路径 */
|
|
48
|
+
getCurrentDirAbs(relativeFilePath) {
|
|
49
|
+
return _path.default.join(this.getPageRootAbs(), _path.default.dirname(relativeFilePath));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** 生成的 reducers 文件路径 */
|
|
53
|
+
getReducersCacheFileAbs() {
|
|
54
|
+
return _path.default.join(this.legoAbs, dir, 'reducers.js');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** 生成的 sagas 文件路径 */
|
|
58
|
+
getSagasCacheFileAbs() {
|
|
59
|
+
return _path.default.join(this.legoAbs, dir, 'sagas.js');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** 生成的 routers 文件路径 */
|
|
63
|
+
getRoutersCacheFileAbs() {
|
|
64
|
+
return _path.default.join(this.legoAbs, dir, 'routers.js');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** 主题文件cache 的路径 */
|
|
68
|
+
getThemeJSCacheFileAbs(hash) {
|
|
69
|
+
return _path.default.join(this.legoAbs, dir, themes, `${hash}.js`);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** 获取 mejson 编译后的文件路径 */
|
|
73
|
+
getMeJSONCacheFileAbs(relativeFilePath) {
|
|
74
|
+
return _path.default.join(this.legoAbs, dir, 'me-json', this.getMeJsonCacheFileName(relativeFilePath));
|
|
75
|
+
}
|
|
76
|
+
getMeJsonCacheFileName(relativeFilePath) {
|
|
77
|
+
return relativeFilePath.replace(/(.*)\/me\.json$/, '$1.js').replace(/\//g, '-_-');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.PathService = PathService;
|
|
81
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","names":["_path","_interopRequireDefault","require","obj","__esModule","default","dir","exports","themes","LcdTempDir","PathService","options","legoAbs","constructor","path","join","context","getPageRootAbs","pageDir","getSrcRootAbs","getCurrentFileAbs","relativeFilePath","getCurrentDirAbs","dirname","getReducersCacheFileAbs","getSagasCacheFileAbs","getRoutersCacheFileAbs","getThemeJSCacheFileAbs","hash","getMeJSONCacheFileAbs","getMeJsonCacheFileName","replace"],"sources":["../../paths.ts"],"sourcesContent":["import path from 'path';\nimport type { Options } from '../utils';\n\nexport const dir = 'lessCoding';\n\nexport const themes = 'themes';\n\nexport const LcdTempDir = '.lego';\n\n/**\n * 路径处理服务\n */\nexport class PathService {\n options: Options;\n\n legoAbs: string;\n\n constructor(options) {\n this.options = options;\n this.legoAbs = path.join(this.options.context!, 'src', LcdTempDir);\n }\n\n /**\n * 页面根目录绝对路径\n * 通常都是\n * - src\n * - components\n * */\n getPageRootAbs() {\n return path.join(this.options.context!, 'src', this.options.pageDir);\n }\n\n getSrcRootAbs() {\n return path.join(this.options.context!, 'src');\n }\n\n /**\n * 当前文件的绝对路径\n * */\n getCurrentFileAbs(relativeFilePath: string) {\n return path.join(this.getPageRootAbs(), relativeFilePath);\n }\n\n /** 当前文件的绝对目录路径 */\n getCurrentDirAbs(relativeFilePath: string) {\n return path.join(this.getPageRootAbs(), path.dirname(relativeFilePath));\n }\n\n /** 生成的 reducers 文件路径 */\n getReducersCacheFileAbs() {\n return path.join(this.legoAbs, dir, 'reducers.js');\n }\n\n /** 生成的 sagas 文件路径 */\n getSagasCacheFileAbs() {\n return path.join(this.legoAbs, dir, 'sagas.js');\n }\n\n /** 生成的 routers 文件路径 */\n getRoutersCacheFileAbs() {\n return path.join(this.legoAbs, dir, 'routers.js');\n }\n\n /** 主题文件cache 的路径 */\n getThemeJSCacheFileAbs(hash: string) {\n return path.join(this.legoAbs, dir, themes, `${hash}.js`);\n }\n\n /** 获取 mejson 编译后的文件路径 */\n getMeJSONCacheFileAbs(relativeFilePath: string) {\n return path.join(this.legoAbs, dir, 'me-json', this.getMeJsonCacheFileName(relativeFilePath));\n }\n\n getMeJsonCacheFileName(relativeFilePath: string) {\n return relativeFilePath.replace(/(.*)\\/me\\.json$/, '$1.js').replace(/\\//g, '-_-');\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwB,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGjB,MAAMG,GAAG,GAAG,YAAY;AAACC,OAAA,CAAAD,GAAA,GAAAA,GAAA;AAEzB,MAAME,MAAM,GAAG,QAAQ;AAACD,OAAA,CAAAC,MAAA,GAAAA,MAAA;AAExB,MAAMC,UAAU,GAAG,OAAO;;AAEjC;AACA;AACA;AAFAF,OAAA,CAAAE,UAAA,GAAAA,UAAA;AAGO,MAAMC,WAAW,CAAC;EACvBC,OAAO;EAEPC,OAAO;EAEPC,WAAWA,CAACF,OAAO,EAAE;IACnB,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,OAAO,GAAGE,aAAI,CAACC,IAAI,CAAC,IAAI,CAACJ,OAAO,CAACK,OAAO,EAAG,KAAK,EAAEP,UAAU,CAAC;EACpE;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEQ,cAAcA,CAAA,EAAG;IACf,OAAOH,aAAI,CAACC,IAAI,CAAC,IAAI,CAACJ,OAAO,CAACK,OAAO,EAAG,KAAK,EAAE,IAAI,CAACL,OAAO,CAACO,OAAO,CAAC;EACtE;EAEAC,aAAaA,CAAA,EAAG;IACd,OAAOL,aAAI,CAACC,IAAI,CAAC,IAAI,CAACJ,OAAO,CAACK,OAAO,EAAG,KAAK,CAAC;EAChD;;EAEA;AACF;AACA;EACEI,iBAAiBA,CAACC,gBAAwB,EAAE;IAC1C,OAAOP,aAAI,CAACC,IAAI,CAAC,IAAI,CAACE,cAAc,EAAE,EAAEI,gBAAgB,CAAC;EAC3D;;EAEA;EACAC,gBAAgBA,CAACD,gBAAwB,EAAE;IACzC,OAAOP,aAAI,CAACC,IAAI,CAAC,IAAI,CAACE,cAAc,EAAE,EAAEH,aAAI,CAACS,OAAO,CAACF,gBAAgB,CAAC,CAAC;EACzE;;EAEA;EACAG,uBAAuBA,CAAA,EAAG;IACxB,OAAOV,aAAI,CAACC,IAAI,CAAC,IAAI,CAACH,OAAO,EAAEN,GAAG,EAAE,aAAa,CAAC;EACpD;;EAEA;EACAmB,oBAAoBA,CAAA,EAAG;IACrB,OAAOX,aAAI,CAACC,IAAI,CAAC,IAAI,CAACH,OAAO,EAAEN,GAAG,EAAE,UAAU,CAAC;EACjD;;EAEA;EACAoB,sBAAsBA,CAAA,EAAG;IACvB,OAAOZ,aAAI,CAACC,IAAI,CAAC,IAAI,CAACH,OAAO,EAAEN,GAAG,EAAE,YAAY,CAAC;EACnD;;EAEA;EACAqB,sBAAsBA,CAACC,IAAY,EAAE;IACnC,OAAOd,aAAI,CAACC,IAAI,CAAC,IAAI,CAACH,OAAO,EAAEN,GAAG,EAAEE,MAAM,EAAG,GAAEoB,IAAK,KAAI,CAAC;EAC3D;;EAEA;EACAC,qBAAqBA,CAACR,gBAAwB,EAAE;IAC9C,OAAOP,aAAI,CAACC,IAAI,CAAC,IAAI,CAACH,OAAO,EAAEN,GAAG,EAAE,SAAS,EAAE,IAAI,CAACwB,sBAAsB,CAACT,gBAAgB,CAAC,CAAC;EAC/F;EAEAS,sBAAsBA,CAACT,gBAAwB,EAAE;IAC/C,OAAOA,gBAAgB,CAACU,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;EACnF;AACF;AAACxB,OAAA,CAAAG,WAAA,GAAAA,WAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Compiler } from 'webpack';
|
|
2
|
+
import type { Options } from './types';
|
|
3
|
+
export declare class Resolver {
|
|
4
|
+
resolver: any;
|
|
5
|
+
options: Options;
|
|
6
|
+
constructor(compiler: Compiler, options: Options);
|
|
7
|
+
/**
|
|
8
|
+
* 获取 当前目录下 reducer文件的路径
|
|
9
|
+
*/
|
|
10
|
+
getReducerFile: (dirname: any) => any;
|
|
11
|
+
/**
|
|
12
|
+
* 获取 当前目录下 view文件的路径
|
|
13
|
+
*/
|
|
14
|
+
getViewFile: (dirname: any) => any;
|
|
15
|
+
/**
|
|
16
|
+
* 获取 当前目录下 saga 文件的路径
|
|
17
|
+
* @param isMobx 如果是 mobx 则返回 reducers 的地址
|
|
18
|
+
*/
|
|
19
|
+
getSagaFile: (dirname: any, isMobx?: boolean) => any;
|
|
20
|
+
/**
|
|
21
|
+
* 获取 me.json 配置的 errorComponent 地址
|
|
22
|
+
*/
|
|
23
|
+
getErrorComFile: (dirname: any, errorComponent: any) => any;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/utils/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,QAAQ;IACnB,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;gBACL,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAQhD;;OAEG;IACH,cAAc,wBAAwE;IAEtF;;OAEG;IACH,WAAW,wBAAiD;IAE5D;;;OAGG;IACH,WAAW,0BAAsB,OAAO,SACmC;IAE3E;;OAEG;IACH,eAAe,6CAAuE;CACvF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Resolver = void 0;
|
|
7
|
+
var _enhancedResolve = require("enhanced-resolve");
|
|
8
|
+
class Resolver {
|
|
9
|
+
resolver;
|
|
10
|
+
options;
|
|
11
|
+
constructor(compiler, options) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
this.resolver = _enhancedResolve.create.sync({
|
|
14
|
+
extensions: compiler.options.resolve.extensions,
|
|
15
|
+
alias: compiler.options.resolve.alias
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* 获取 当前目录下 reducer文件的路径
|
|
21
|
+
*/
|
|
22
|
+
getReducerFile = dirname => this.resolver(dirname, `./${this.options.reducerName}`);
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* 获取 当前目录下 view文件的路径
|
|
26
|
+
*/
|
|
27
|
+
getViewFile = dirname => this.resolver(dirname, `./view`);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 获取 当前目录下 saga 文件的路径
|
|
31
|
+
* @param isMobx 如果是 mobx 则返回 reducers 的地址
|
|
32
|
+
*/
|
|
33
|
+
getSagaFile = (dirname, isMobx) => isMobx ? this.getReducerFile(dirname) : this.resolver(dirname, `./saga`);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 获取 me.json 配置的 errorComponent 地址
|
|
37
|
+
*/
|
|
38
|
+
getErrorComFile = (dirname, errorComponent) => this.resolver(dirname, errorComponent);
|
|
39
|
+
}
|
|
40
|
+
exports.Resolver = Resolver;
|
|
41
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","names":["_enhancedResolve","require","Resolver","resolver","options","constructor","compiler","create","sync","extensions","resolve","alias","getReducerFile","dirname","reducerName","getViewFile","getSagaFile","isMobx","getErrorComFile","errorComponent","exports"],"sources":["../../resolver.ts"],"sourcesContent":["import { create } from 'enhanced-resolve';\nimport type { Compiler } from 'webpack';\nimport type { Options } from './types';\n\nexport class Resolver {\n resolver: any;\n options: Options;\n constructor(compiler: Compiler, options: Options) {\n this.options = options;\n this.resolver = create.sync({\n extensions: compiler.options.resolve.extensions,\n alias: compiler.options.resolve.alias,\n });\n }\n\n /**\n * 获取 当前目录下 reducer文件的路径\n */\n getReducerFile = (dirname) => this.resolver(dirname, `./${this.options.reducerName}`);\n\n /**\n * 获取 当前目录下 view文件的路径\n */\n getViewFile = (dirname) => this.resolver(dirname, `./view`);\n\n /**\n * 获取 当前目录下 saga 文件的路径\n * @param isMobx 如果是 mobx 则返回 reducers 的地址\n */\n getSagaFile = (dirname, isMobx?: boolean) =>\n isMobx ? this.getReducerFile(dirname) : this.resolver(dirname, `./saga`);\n\n /**\n * 获取 me.json 配置的 errorComponent 地址\n */\n getErrorComFile = (dirname, errorComponent) => this.resolver(dirname, errorComponent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAIO,MAAMC,QAAQ,CAAC;EACpBC,QAAQ;EACRC,OAAO;EACPC,WAAWA,CAACC,QAAkB,EAAEF,OAAgB,EAAE;IAChD,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,QAAQ,GAAGI,uBAAM,CAACC,IAAI,CAAC;MAC1BC,UAAU,EAAEH,QAAQ,CAACF,OAAO,CAACM,OAAO,CAACD,UAAU;MAC/CE,KAAK,EAAEL,QAAQ,CAACF,OAAO,CAACM,OAAO,CAACC;IAClC,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACEC,cAAc,GAAIC,OAAO,IAAK,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,KAAI,IAAI,CAACT,OAAO,CAACU,WAAY,EAAC,CAAC;;EAErF;AACF;AACA;EACEC,WAAW,GAAIF,OAAO,IAAK,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,QAAO,CAAC;;EAE3D;AACF;AACA;AACA;EACEG,WAAW,GAAGA,CAACH,OAAO,EAAEI,MAAgB,KACtCA,MAAM,GAAG,IAAI,CAACL,cAAc,CAACC,OAAO,CAAC,GAAG,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,QAAO,CAAC;;EAE1E;AACF;AACA;EACEK,eAAe,GAAGA,CAACL,OAAO,EAAEM,cAAc,KAAK,IAAI,CAAChB,QAAQ,CAACU,OAAO,EAAEM,cAAc,CAAC;AACvF;AAACC,OAAA,CAAAlB,QAAA,GAAAA,QAAA"}
|