lcd-router-webpack-plugin 9.2.0 → 9.2.1-alpha.2

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.
@@ -4,12 +4,13 @@ interface GetReducersBabelPluginItem {
4
4
  meJSON: MeJSON;
5
5
  namespace: string;
6
6
  isExternal: boolean;
7
- meJSONPath: string;
7
+ reducerPath: string;
8
8
  }
9
9
  export declare class ReducersGenerator extends Generator<GetReducersBabelPluginItem> {
10
10
  constructor();
11
11
  objectPropertyValue(type: 'call' | 'string' | 'identifier', value: string): any;
12
12
  writeCodeToFile(absPath: string): void;
13
+ private generateDefaultReducerFn;
13
14
  }
14
15
  export {};
15
16
  //# sourceMappingURL=ReducersGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReducersGenerator.d.ts","sourceRoot":"","sources":["../src/ReducersGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,qBAAa,iBAAkB,SAAQ,SAAS,CAAC,0BAA0B,CAAC;;IAM1E,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;IAY/E,eAAe,CAAC,OAAO,EAAE,MAAM;CA0ChC"}
1
+ {"version":3,"file":"ReducersGenerator.d.ts","sourceRoot":"","sources":["../src/ReducersGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AACD,qBAAa,iBAAkB,SAAQ,SAAS,CAAC,0BAA0B,CAAC;;IAM1E,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;IAY/E,eAAe,CAAC,OAAO,EAAE,MAAM;IAiD/B,OAAO,CAAC,wBAAwB;CAYjC"}
@@ -38,7 +38,13 @@ class ReducersGenerator extends _Generator.Generator {
38
38
  const codes = [this.importDefaultDeclaration('decorate', 'rrc-loader-helper/lib/reducer-decorate')];
39
39
  items.filter(x => x.meJSON.sync || x.isExternal)
40
40
  // 创建一个 import 语句,从 me.json 中导入 reducer 函数
41
- .map(x => this.importNamedDeclaration([['reducer', x.namespace]], x.meJSONPath)).forEach(x => codes.push(x));
41
+ .map(x => {
42
+ if (x.reducerPath) {
43
+ return this.importDefaultDeclaration(x.namespace, x.reducerPath);
44
+ } else {
45
+ return this.generateDefaultReducerFn(x.namespace);
46
+ }
47
+ }).forEach(x => codes.push(x));
42
48
  const properties = items.map(x => {
43
49
  if (x.isExternal || x.meJSON.sync) {
44
50
  if (x.meJSON.mobx) {
@@ -60,6 +66,21 @@ class ReducersGenerator extends _Generator.Generator {
60
66
  encoding: 'utf8'
61
67
  });
62
68
  }
69
+ generateDefaultReducerFn(functionName) {
70
+ const functionBody = _core.types.blockStatement([_core.types.returnStatement(_core.types.objectExpression([])) // 返回一个空对象
71
+ ]);
72
+
73
+ return _core.types.functionDeclaration(_core.types.identifier(this.identifierString(functionName)),
74
+ // 函数名
75
+ [],
76
+ // 参数列表
77
+ functionBody,
78
+ // 函数体
79
+ false,
80
+ // generator 标志
81
+ false // async 标志
82
+ );
83
+ }
63
84
  }
64
85
  exports.ReducersGenerator = ReducersGenerator;
65
86
  //# sourceMappingURL=ReducersGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReducersGenerator.js","names":["_fs","_interopRequireDefault","require","_core","_Generator","obj","__esModule","default","ReducersGenerator","Generator","constructor","objectPropertyValue","type","value","types","callExpression","identifier","identifierString","stringLiteral","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","babelrc","plugins","name","visitor","Program","enter","path","codes","importDefaultDeclaration","filter","x","meJSON","sync","isExternal","map","importNamedDeclaration","namespace","meJSONPath","forEach","push","properties","mobx","objectProperty","exportDefaultDeclaration","objectExpression","pushContainer","fs","writeFileSync","encoding","exports"],"sources":["../ReducersGenerator.ts"],"sourcesContent":["import fs from 'fs';\nimport babelCore, { transformSync, types } from '@babel/core';\nimport type { MeJSON } from './utils';\nimport { Generator } from './Generator';\n\ninterface GetReducersBabelPluginItem {\n meJSON: MeJSON;\n namespace: string;\n isExternal: boolean;\n meJSONPath: string;\n}\nexport class ReducersGenerator extends Generator<GetReducersBabelPluginItem> {\n constructor() {\n super();\n }\n\n // TODO: 这里类型 加了个 any, 不太希望写else, 所以导致的问题,ts类型推导似乎不合理\n objectPropertyValue(type: 'call' | 'string' | 'identifier', value: string): any {\n if (type === 'call') {\n return types.callExpression(types.identifier('decorate'), [types.identifier(this.identifierString(value)), types.stringLiteral(value)]);\n }\n if (type === 'string') {\n return types.stringLiteral('');\n }\n if (type === 'identifier') {\n return types.identifier(this.identifierString(value));\n }\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n babelrc: false,\n plugins: [\n () => {\n return {\n name: 'babel-plugin-replace-react-redux',\n visitor: {\n Program: {\n enter: (path) => {\n const codes: (babelCore.types.ImportDeclaration | babelCore.types.ExportDefaultDeclaration)[] = [\n this.importDefaultDeclaration('decorate', 'rrc-loader-helper/lib/reducer-decorate'),\n ];\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n // 创建一个 import 语句,从 me.json 中导入 reducer 函数\n .map((x) => this.importNamedDeclaration([['reducer', x.namespace]], x.meJSONPath))\n .forEach((x) => codes.push(x));\n\n const properties = items.map((x) => {\n if (x.isExternal || x.meJSON.sync) {\n if (x.meJSON.mobx) {\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('call', x.namespace));\n }\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('identifier', x.namespace));\n }\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('string', x.namespace));\n });\n\n codes.push(types.exportDefaultDeclaration(types.objectExpression(properties)));\n\n path.pushContainer('body', codes);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReducersGenerator.js","names":["_fs","_interopRequireDefault","require","_core","_Generator","obj","__esModule","default","ReducersGenerator","Generator","constructor","objectPropertyValue","type","value","types","callExpression","identifier","identifierString","stringLiteral","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","babelrc","plugins","name","visitor","Program","enter","path","codes","importDefaultDeclaration","filter","x","meJSON","sync","isExternal","map","reducerPath","namespace","generateDefaultReducerFn","forEach","push","properties","mobx","objectProperty","exportDefaultDeclaration","objectExpression","pushContainer","fs","writeFileSync","encoding","functionName","functionBody","blockStatement","returnStatement","functionDeclaration","exports"],"sources":["../ReducersGenerator.ts"],"sourcesContent":["import fs from 'fs';\nimport babelCore, { transformSync, types } from '@babel/core';\nimport type { MeJSON } from './utils';\nimport { Generator } from './Generator';\n\ninterface GetReducersBabelPluginItem {\n meJSON: MeJSON;\n namespace: string;\n isExternal: boolean;\n reducerPath: string;\n}\nexport class ReducersGenerator extends Generator<GetReducersBabelPluginItem> {\n constructor() {\n super();\n }\n\n // TODO: 这里类型 加了个 any, 不太希望写else, 所以导致的问题,ts类型推导似乎不合理\n objectPropertyValue(type: 'call' | 'string' | 'identifier', value: string): any {\n if (type === 'call') {\n return types.callExpression(types.identifier('decorate'), [types.identifier(this.identifierString(value)), types.stringLiteral(value)]);\n }\n if (type === 'string') {\n return types.stringLiteral('');\n }\n if (type === 'identifier') {\n return types.identifier(this.identifierString(value));\n }\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n babelrc: false,\n plugins: [\n () => {\n return {\n name: 'babel-plugin-replace-react-redux',\n visitor: {\n Program: {\n enter: (path) => {\n const codes: (babelCore.types.ImportDeclaration | babelCore.types.ExportDefaultDeclaration)[] = [\n this.importDefaultDeclaration('decorate', 'rrc-loader-helper/lib/reducer-decorate'),\n ];\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n // 创建一个 import 语句,从 me.json 中导入 reducer 函数\n .map((x) => {\n if (x.reducerPath) {\n return this.importDefaultDeclaration(x.namespace, x.reducerPath);\n } else {\n return this.generateDefaultReducerFn(x.namespace);\n }\n })\n .forEach((x) => codes.push(x));\n\n const properties = items.map((x) => {\n if (x.isExternal || x.meJSON.sync) {\n if (x.meJSON.mobx) {\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('call', x.namespace));\n }\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('identifier', x.namespace));\n }\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('string', x.namespace));\n });\n\n codes.push(types.exportDefaultDeclaration(types.objectExpression(properties)));\n\n path.pushContainer('body', codes);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n\n private generateDefaultReducerFn(functionName: string) {\n const functionBody = types.blockStatement([\n types.returnStatement(types.objectExpression([])), // 返回一个空对象\n ]);\n return types.functionDeclaration(\n types.identifier(this.identifierString(functionName)), // 函数名\n [], // 参数列表\n functionBody, // 函数体\n false, // generator 标志\n false, // async 标志\n );\n }\n}\n"],"mappings":"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"}
@@ -2,7 +2,8 @@ import { Generator } from './Generator';
2
2
  import type { MeJSON } from './utils';
3
3
  interface Item {
4
4
  namespace: string;
5
- meJSONPath: string;
5
+ sagaPath: string;
6
+ reducerPath: string;
6
7
  isExternal: boolean;
7
8
  meJSON: MeJSON;
8
9
  }
@@ -11,6 +12,7 @@ export declare class SagasGenerator extends Generator<Item> {
11
12
  private setCtxExpressionStatement;
12
13
  private callExpressionStatement;
13
14
  writeCodeToFile(absPath: string): void;
15
+ private generateDefaultSagaFn;
14
16
  }
15
17
  export {};
16
18
  //# sourceMappingURL=SagasGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SagasGenerator.d.ts","sourceRoot":"","sources":["../src/SagasGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,UAAU,IAAI;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,qBAAa,cAAe,SAAQ,SAAS,CAAC,IAAI,CAAC;;IAKjD,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,uBAAuB;IAU/B,eAAe,CAAC,OAAO,EAAE,MAAM;CA+ChC"}
1
+ {"version":3,"file":"SagasGenerator.d.ts","sourceRoot":"","sources":["../src/SagasGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,UAAU,IAAI;IACZ,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,qBAAa,cAAe,SAAQ,SAAS,CAAC,IAAI,CAAC;;IAKjD,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,uBAAuB;IAU/B,eAAe,CAAC,OAAO,EAAE,MAAM;IAsD/B,OAAO,CAAC,qBAAqB;CAY9B"}
@@ -27,9 +27,16 @@ class SagasGenerator extends _Generator.Generator {
27
27
  Program: {
28
28
  enter: path => {
29
29
  const ast = [this.importNamedDeclaration(['setCtx'], 'rrc-loader-helper/lib/retain'), this.importNamedDeclaration(['call'], 'rrc-loader-helper/lib/sagas/redux-saga/effects')];
30
- items.filter(x => x.meJSON.sync || x.isExternal).forEach(x =>
31
- // 如果是mobx reducer, 否则取 saga
32
- ast.push(this.importNamedDeclaration([[x.meJSON.mobx ? 'reducer' : 'saga', x.namespace]], x.meJSONPath)));
30
+ items.filter(x => x.meJSON.sync || x.isExternal).forEach(x => {
31
+ // 如果不是 mobx,并且 saga 文件不存在,手动补一个 saga 函数
32
+ if (!x.meJSON.mobx && !x.sagaPath) {
33
+ console.log('x.namespace', x.namespace);
34
+ ast.push(this.generateDefaultSagaFn(x.namespace));
35
+ } else {
36
+ // 如果是mobx, 取 reducer, 否则取 saga
37
+ ast.push(this.importDefaultDeclaration(x.namespace, x.meJSON.mobx ? x.reducerPath : x.sagaPath));
38
+ }
39
+ });
33
40
  const arrayItem = items.map(x => {
34
41
  if (!x.isExternal && !x.meJSON.sync) {
35
42
  return _core.types.stringLiteral('');
@@ -51,6 +58,21 @@ class SagasGenerator extends _Generator.Generator {
51
58
  encoding: 'utf8'
52
59
  });
53
60
  }
61
+ generateDefaultSagaFn(functionName) {
62
+ const functionBody = _core.types.blockStatement([_core.types.returnStatement(_core.types.objectExpression([])) // 返回一个空对象
63
+ ]);
64
+
65
+ return _core.types.functionDeclaration(_core.types.identifier(this.identifierString(functionName)),
66
+ // 函数名
67
+ [],
68
+ // 参数列表
69
+ functionBody,
70
+ // 函数体
71
+ true,
72
+ // generator 标志
73
+ false // async 标志
74
+ );
75
+ }
54
76
  }
55
77
  exports.SagasGenerator = SagasGenerator;
56
78
  //# sourceMappingURL=SagasGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SagasGenerator.js","names":["_Generator","require","_core","_fs","_interopRequireDefault","obj","__esModule","default","SagasGenerator","Generator","constructor","setCtxExpressionStatement","namespace","types","expressionStatement","yieldExpression","callExpression","identifier","objectExpression","objectProperty","booleanLiteral","stringLiteral","callExpressionStatement","memberExpression","identifierString","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","plugins","visitor","Program","enter","path","ast","importNamedDeclaration","filter","x","meJSON","sync","isExternal","forEach","push","mobx","meJSONPath","arrayItem","map","functionExpression","blockStatement","exportDefaultDeclaration","arrayExpression","pushContainer","fs","writeFileSync","encoding","exports"],"sources":["../SagasGenerator.ts"],"sourcesContent":["import { Generator } from './Generator';\nimport type { MeJSON } from './utils';\nimport { transformSync, types } from '@babel/core';\nimport fs from 'fs';\ninterface Item {\n namespace: string;\n meJSONPath: string;\n isExternal: boolean;\n meJSON: MeJSON;\n}\nexport class SagasGenerator extends Generator<Item> {\n constructor() {\n super();\n }\n\n private setCtxExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('setCtx'), [\n types.objectExpression([\n types.objectProperty(types.identifier('mobxStyle'), types.booleanLiteral(true)),\n types.objectProperty(types.identifier('page'), types.stringLiteral(namespace)),\n types.objectProperty(types.identifier('url'), types.stringLiteral('')),\n ]),\n ]),\n ),\n );\n }\n\n private callExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('call'), [\n types.memberExpression(types.identifier(this.identifierString(namespace)), types.identifier('saga')),\n ]),\n ),\n );\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n plugins: [\n () => {\n return {\n visitor: {\n Program: {\n enter: (path) => {\n const ast: (types.ImportDeclaration | types.ExportDefaultDeclaration)[] = [\n this.importNamedDeclaration(['setCtx'], 'rrc-loader-helper/lib/retain'),\n this.importNamedDeclaration(['call'], 'rrc-loader-helper/lib/sagas/redux-saga/effects'),\n ];\n\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n .forEach((x) =>\n // 如果是mobx, 取 reducer, 否则取 saga\n ast.push(this.importNamedDeclaration([[x.meJSON.mobx ? 'reducer' : 'saga', x.namespace]], x.meJSONPath)),\n );\n\n const arrayItem = items.map((x) => {\n if (!x.isExternal && !x.meJSON.sync) {\n return types.stringLiteral('');\n }\n if (x.meJSON.mobx) {\n return types.functionExpression(\n null,\n [],\n types.blockStatement([this.setCtxExpressionStatement(x.namespace), this.callExpressionStatement(x.namespace)]),\n true,\n false,\n );\n }\n return types.identifier(this.identifierString(x.namespace));\n });\n ast.push(types.exportDefaultDeclaration(types.arrayExpression(arrayItem)));\n path.pushContainer('body', ast);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SagasGenerator.js","names":["_Generator","require","_core","_fs","_interopRequireDefault","obj","__esModule","default","SagasGenerator","Generator","constructor","setCtxExpressionStatement","namespace","types","expressionStatement","yieldExpression","callExpression","identifier","objectExpression","objectProperty","booleanLiteral","stringLiteral","callExpressionStatement","memberExpression","identifierString","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","plugins","visitor","Program","enter","path","ast","importNamedDeclaration","filter","x","meJSON","sync","isExternal","forEach","mobx","sagaPath","console","log","push","generateDefaultSagaFn","importDefaultDeclaration","reducerPath","arrayItem","map","functionExpression","blockStatement","exportDefaultDeclaration","arrayExpression","pushContainer","fs","writeFileSync","encoding","functionName","functionBody","returnStatement","functionDeclaration","exports"],"sources":["../SagasGenerator.ts"],"sourcesContent":["import { Generator } from './Generator';\nimport type { MeJSON } from './utils';\nimport { transformSync, types } from '@babel/core';\nimport fs from 'fs';\ninterface Item {\n namespace: string;\n // meJSONPath: string;\n sagaPath: string;\n reducerPath: string;\n isExternal: boolean;\n meJSON: MeJSON;\n}\nexport class SagasGenerator extends Generator<Item> {\n constructor() {\n super();\n }\n\n private setCtxExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('setCtx'), [\n types.objectExpression([\n types.objectProperty(types.identifier('mobxStyle'), types.booleanLiteral(true)),\n types.objectProperty(types.identifier('page'), types.stringLiteral(namespace)),\n types.objectProperty(types.identifier('url'), types.stringLiteral('')),\n ]),\n ]),\n ),\n );\n }\n\n private callExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('call'), [\n types.memberExpression(types.identifier(this.identifierString(namespace)), types.identifier('saga')),\n ]),\n ),\n );\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n plugins: [\n () => {\n return {\n visitor: {\n Program: {\n enter: (path) => {\n const ast: (types.ImportDeclaration | types.ExportDefaultDeclaration)[] = [\n this.importNamedDeclaration(['setCtx'], 'rrc-loader-helper/lib/retain'),\n this.importNamedDeclaration(['call'], 'rrc-loader-helper/lib/sagas/redux-saga/effects'),\n ];\n\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n .forEach((x) => {\n // 如果不是 mobx,并且 saga 文件不存在,手动补一个 saga 函数\n if (!x.meJSON.mobx && !x.sagaPath) {\n console.log('x.namespace', x.namespace);\n ast.push(this.generateDefaultSagaFn(x.namespace));\n } else {\n // 如果是mobx, 取 reducer, 否则取 saga\n ast.push(this.importDefaultDeclaration(x.namespace, x.meJSON.mobx ? x.reducerPath : x.sagaPath));\n }\n });\n\n const arrayItem = items.map((x) => {\n if (!x.isExternal && !x.meJSON.sync) {\n return types.stringLiteral('');\n }\n if (x.meJSON.mobx) {\n return types.functionExpression(\n null,\n [],\n types.blockStatement([this.setCtxExpressionStatement(x.namespace), this.callExpressionStatement(x.namespace)]),\n true,\n false,\n );\n }\n return types.identifier(this.identifierString(x.namespace));\n });\n ast.push(types.exportDefaultDeclaration(types.arrayExpression(arrayItem)));\n path.pushContainer('body', ast);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n\n private generateDefaultSagaFn(functionName: string) {\n const functionBody = types.blockStatement([\n types.returnStatement(types.objectExpression([])), // 返回一个空对象\n ]);\n return types.functionDeclaration(\n types.identifier(this.identifierString(functionName)), // 函数名\n [], // 参数列表\n functionBody, // 函数体\n true, // generator 标志\n false, // async 标志\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAyB,KAAK,OAAO,EAAe,MAAM,SAAS,CAAC;AAO3E,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,qBAAqB;IAC1E,OAAO,EAAE,OAAO,CAAC;gBACL,OAAO,EAAE,OAAO;IAI5B,KAAK,CAAC,QAAQ,EAAE,QAAQ;IAyOxB,YAAY,CAAC,QAAQ,EAAE,QAAQ;CAYhC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAyB,KAAK,OAAO,EAAe,MAAM,SAAS,CAAC;AAO3E,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,qBAAqB;IAC1E,OAAO,EAAE,OAAO,CAAC;gBACL,OAAO,EAAE,OAAO;IAI5B,KAAK,CAAC,QAAQ,EAAE,QAAQ;IA8OxB,YAAY,CAAC,QAAQ,EAAE,QAAQ;CAYhC"}
package/lib/index.js CHANGED
@@ -46,8 +46,10 @@ class LcdRouterWebpackPlugin {
46
46
  const isExternal = options.externals?.some?.(x => x === _nodePath.default.dirname(filepath)) ?? false;
47
47
  const chunkCode = [];
48
48
  const meJSON = fileService.readJSONSync(absFilePath);
49
+ let reducerPath = '';
49
50
  try {
50
- const reducerPath = resolver.getReducerFile(absCurrentDir);
51
+ reducerPath = resolver.getReducerFile(absCurrentDir);
52
+ reducerPath = `@/${options.pageDir}/${currentDir}/${options.reducerName}`;
51
53
  chunkCode.push(`export { default as reducer } from '${reducerPath}';`);
52
54
  } catch (e) {
53
55
  // feat: reducers 可以不存在, 方便结合reactive 和 ak,默认创建一个reducers
@@ -69,15 +71,18 @@ class LcdRouterWebpackPlugin {
69
71
  chunkCode.push(`export function reducer(){ return {} }`);
70
72
  }
71
73
  if (!isExternal) {
72
- const viewPath = resolver.getViewFile(absCurrentDir);
74
+ let viewPath = resolver.getViewFile(absCurrentDir);
75
+ viewPath = `@/${options.pageDir}/${currentDir}/view`;
73
76
  chunkCode.push(`export { default as view } from '${viewPath}';`);
74
77
  }
75
78
  if (meJSON.theme && !options.theme?.hash) {
76
79
  throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);
77
80
  }
81
+ let sagaPath = '';
78
82
  if (!meJSON.mobx) {
79
83
  try {
80
- const sagaPath = resolver.getSagaFile(absCurrentDir);
84
+ sagaPath = resolver.getSagaFile(absCurrentDir);
85
+ sagaPath = `@/${options.pageDir}/${currentDir}/saga`;
81
86
  chunkCode.push(`export { default as saga } from '${sagaPath}';`);
82
87
  } catch (e) {
83
88
  // feat: saga 也可以不存在, 方便结合reactive 和 ak,默认创建一个reducers
@@ -85,7 +90,8 @@ class LcdRouterWebpackPlugin {
85
90
  }
86
91
  }
87
92
  if (meJSON.errorComponent) {
88
- const errorCompPath = resolver.getErrorComFile(absCurrentDir, meJSON.errorComponent);
93
+ let errorCompPath = resolver.getErrorComFile(absCurrentDir, meJSON.errorComponent);
94
+ errorCompPath = `@/${options.pageDir}/${currentDir}/${meJSON.errorComponent}`;
89
95
  chunkCode.push(`export { default as ErrorComponent } from '${errorCompPath}';`);
90
96
  }
91
97
  if (options.theme?.hash) {
@@ -98,6 +104,7 @@ class LcdRouterWebpackPlugin {
98
104
  chunkCode.push(`export * from '${themePath}';`);
99
105
  }
100
106
  const meJSONPath = pathService.getMeJSONCacheFileAbs(filepath);
107
+ const relativeMeJSONPATH = `./me-json/${pathService.getMeJsonCacheFileName(filepath)}`;
101
108
  fileService.writeMeJSONFile(meJSONPath, chunkCode);
102
109
 
103
110
  // 处理是否存在多store的场景
@@ -113,7 +120,7 @@ class LcdRouterWebpackPlugin {
113
120
  meJSON,
114
121
  isExternal,
115
122
  namespace: currentDir,
116
- meJSONPath: meJSONPath
123
+ reducerPath
117
124
  });
118
125
 
119
126
  /** saga.js */
@@ -121,7 +128,9 @@ class LcdRouterWebpackPlugin {
121
128
  meJSON,
122
129
  isExternal,
123
130
  namespace: currentDir,
124
- meJSONPath: meJSONPath
131
+ // meJSONPath: meJSONPath,
132
+ reducerPath,
133
+ sagaPath
125
134
  });
126
135
 
127
136
  /** router */
@@ -131,7 +140,7 @@ class LcdRouterWebpackPlugin {
131
140
  page: currentDir,
132
141
  path: currentDir,
133
142
  exact: false,
134
- meJSONPath: meJSONPath
143
+ meJSONPath: relativeMeJSONPATH
135
144
  });
136
145
 
137
146
  /** 处理 /list 的路由 */
@@ -143,7 +152,7 @@ class LcdRouterWebpackPlugin {
143
152
  page: currentDir,
144
153
  path: _key,
145
154
  exact: true,
146
- meJSONPath: meJSONPath
155
+ meJSONPath: relativeMeJSONPATH
147
156
  });
148
157
  }
149
158
  }
package/lib/index.js.map CHANGED
@@ -1 +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","isExternal","externals","some","x","chunkCode","meJSON","readJSONSync","reducerPath","getReducerFile","push","e","mobx","Error","viewPath","getViewFile","theme","hash","sagaPath","getSagaFile","errorComponent","errorCompPath","getErrorComFile","themePath","getThemeJSCacheFileAbs","writeThemeFile","meJSONPath","getMeJSONCacheFileAbs","writeMeJSONFile","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","environment","disableBabelLoaderRule","module","rules","exclude","use","loader","resolve","presets","babelrc","parserOpts","plugins","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, type Options, FileService } from './utils';\nimport { ReducersGenerator } from './ReducersGenerator';\nimport { SagasGenerator } from './SagasGenerator';\nimport { RoutersGenerator } from './RoutersGenerator';\n\nimport path from 'node:path';\n\nexport { Options };\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 // 处理 lcd 中的路由体系\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') 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 const isExternal = options.externals?.some?.((x) => x === path.dirname(filepath)) ?? false;\n const chunkCode = [] as string[];\n const meJSON = fileService.readJSONSync(absFilePath);\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 if (meJSON.mobx) {\n /**\n * mobx 模式下, 需要垫一个被 mobx-adapter 包裹的 reducer 函数\n * 如果存在reducer文件,是默认会被 babel-plugin-enhance-reducer 处理的\n *\n * import storeHoc from 'rrc-loader-helper/lib/mobx-adapter';\n * export const reducer = storeHoc({\n * state: {},\n * }, 'report/other-table')\n *\n * 不太方便去垫一个 reducer 函数,reducer 的路径计算比较复杂, 所以直接报错\n * 同时,从逻辑上讲,如果开启了 mobx,那么必须要有 reducer 文件\n */\n throw Error(`开启 mobx 后,reducer 文件必须存在 ${absFilePath}`);\n }\n chunkCode.push(`export function reducer(){ return {} }`);\n }\n\n if(!isExternal){\n const viewPath = resolver.getViewFile(absCurrentDir);\n chunkCode.push(`export { default as view } from '${viewPath}';`);\n }\n\n \n\n if (meJSON.theme && !options.theme?.hash) {\n throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);\n }\n\n if (!meJSON.mobx) {\n try {\n const sagaPath = resolver.getSagaFile(absCurrentDir);\n chunkCode.push(`export { default as saga } from '${sagaPath}';`);\n } catch (e) {\n // feat: saga 也可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n chunkCode.push(`export function* saga(){ return {} }`);\n }\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 \n\n // 处理是否存在多store的场景\n const hasChildStore = globby.sync(`**/*.${options.reducerName}.{t,j}s`, { cwd: absCurrentDir }).length > 0;\n if (hasChildStore && (meJSON.sync || isExternal)) {\n throw Error(`如果开启了Sync模式或当前页面存在于LCD的external中,那么则不支持多Store功能,${absCurrentDir}`);\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(currentDir)) {\n const _key = currentDir.replace(new RegExp(`\\/${options.index}$`), '');\n routersGenerator.set(_key, {\n meJSON,\n isExternal,\n page: currentDir,\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 // lcd 中包含一些语法转换处理\n compiler.hooks.environment.tap('lcd-preset', () => {\n if(this.options.disableBabelLoaderRule) return\n compiler.options.module.rules.push({\n test: /\\.(js|ts)x?$/,\n exclude: /node_modules/,\n use: [\n {\n loader: require.resolve('babel-loader'),\n options: {\n presets: [[require.resolve('./babel/index'), this.options]],\n babelrc: false,\n // 需要支持语法解析, 但不需要做转换\n parserOpts: {\n plugins: [\n 'jsx',\n 'typescript',\n 'asyncDoExpressions',\n 'decimal',\n 'decorators-legacy',\n 'decoratorAutoAccessors',\n 'destructuringPrivate',\n 'doExpressions',\n 'exportDefaultFrom',\n 'functionBind',\n 'functionSent',\n 'importAssertions',\n 'moduleBlocks',\n 'partialApplication',\n 'throwExpressions',\n ],\n },\n },\n },\n ],\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: 'reducer',\n disableBuiltInRoute: false,\n };\n this.options = deepmerge(defaultOptions, this.options);\n }\n}\n"],"mappings":"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"}
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","isExternal","externals","some","x","chunkCode","meJSON","readJSONSync","reducerPath","getReducerFile","pageDir","reducerName","push","e","mobx","Error","viewPath","getViewFile","theme","hash","sagaPath","getSagaFile","errorComponent","errorCompPath","getErrorComFile","themePath","getThemeJSCacheFileAbs","writeThemeFile","meJSONPath","getMeJSONCacheFileAbs","relativeMeJSONPATH","getMeJsonCacheFileName","writeMeJSONFile","hasChildStore","globby","sync","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","environment","disableBabelLoaderRule","module","rules","exclude","use","loader","resolve","presets","babelrc","parserOpts","plugins","defaultOptions","context","enablePreFetch","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, type Options, FileService } from './utils';\nimport { ReducersGenerator } from './ReducersGenerator';\nimport { SagasGenerator } from './SagasGenerator';\nimport { RoutersGenerator } from './RoutersGenerator';\n\nimport path from 'node:path';\n\nexport { Options };\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 // 处理 lcd 中的路由体系\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') 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 const isExternal = options.externals?.some?.((x) => x === path.dirname(filepath)) ?? false;\n const chunkCode = [] as string[];\n const meJSON = fileService.readJSONSync(absFilePath);\n let reducerPath = '';\n try {\n reducerPath = resolver.getReducerFile(absCurrentDir);\n reducerPath = `@/${options.pageDir}/${currentDir}/${options.reducerName}`;\n chunkCode.push(`export { default as reducer } from '${reducerPath}';`);\n } catch (e) {\n // feat: reducers 可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n if (meJSON.mobx) {\n /**\n * mobx 模式下, 需要垫一个被 mobx-adapter 包裹的 reducer 函数\n * 如果存在reducer文件,是默认会被 babel-plugin-enhance-reducer 处理的\n *\n * import storeHoc from 'rrc-loader-helper/lib/mobx-adapter';\n * export const reducer = storeHoc({\n * state: {},\n * }, 'report/other-table')\n *\n * 不太方便去垫一个 reducer 函数,reducer 的路径计算比较复杂, 所以直接报错\n * 同时,从逻辑上讲,如果开启了 mobx,那么必须要有 reducer 文件\n */\n throw Error(`开启 mobx 后,reducer 文件必须存在 ${absFilePath}`);\n }\n chunkCode.push(`export function reducer(){ return {} }`);\n }\n\n if (!isExternal) {\n let viewPath = resolver.getViewFile(absCurrentDir);\n viewPath = `@/${options.pageDir}/${currentDir}/view`;\n chunkCode.push(`export { default as view } from '${viewPath}';`);\n }\n\n if (meJSON.theme && !options.theme?.hash) {\n throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);\n }\n\n let sagaPath = '';\n if (!meJSON.mobx) {\n try {\n sagaPath = resolver.getSagaFile(absCurrentDir);\n sagaPath = `@/${options.pageDir}/${currentDir}/saga`;\n chunkCode.push(`export { default as saga } from '${sagaPath}';`);\n } catch (e) {\n // feat: saga 也可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n chunkCode.push(`export function* saga(){ return {} }`);\n }\n }\n\n if (meJSON.errorComponent) {\n let errorCompPath = resolver.getErrorComFile(absCurrentDir, meJSON.errorComponent);\n errorCompPath = `@/${options.pageDir}/${currentDir}/${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 const relativeMeJSONPATH = `./me-json/${pathService.getMeJsonCacheFileName(filepath)}`;\n\n fileService.writeMeJSONFile(meJSONPath, chunkCode);\n\n // 处理是否存在多store的场景\n const hasChildStore = globby.sync(`**/*.${options.reducerName}.{t,j}s`, { cwd: absCurrentDir }).length > 0;\n if (hasChildStore && (meJSON.sync || isExternal)) {\n throw Error(`如果开启了Sync模式或当前页面存在于LCD的external中,那么则不支持多Store功能,${absCurrentDir}`);\n }\n\n /** reducers.js */\n reducersGenerator.set(filepath, {\n meJSON,\n isExternal,\n namespace: currentDir,\n reducerPath,\n });\n\n /** saga.js */\n sagasGenerator.set(currentDir, {\n meJSON,\n isExternal,\n namespace: currentDir,\n // meJSONPath: meJSONPath,\n reducerPath,\n sagaPath,\n });\n\n /** router */\n routersGenerator.set(currentDir, {\n meJSON,\n isExternal,\n page: currentDir,\n path: currentDir,\n exact: false,\n meJSONPath: relativeMeJSONPATH,\n });\n\n /** 处理 /list 的路由 */\n if (new RegExp(`\\/${options.index}$`).test(currentDir)) {\n const _key = currentDir.replace(new RegExp(`\\/${options.index}$`), '');\n routersGenerator.set(_key, {\n meJSON,\n isExternal,\n page: currentDir,\n path: _key,\n exact: true,\n meJSONPath: relativeMeJSONPATH,\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 // lcd 中包含一些语法转换处理\n compiler.hooks.environment.tap('lcd-preset', () => {\n if (this.options.disableBabelLoaderRule) return;\n compiler.options.module.rules.push({\n test: /\\.(js|ts)x?$/,\n exclude: /node_modules/,\n use: [\n {\n loader: require.resolve('babel-loader'),\n options: {\n presets: [[require.resolve('./babel/index'), this.options]],\n babelrc: false,\n // 需要支持语法解析, 但不需要做转换\n parserOpts: {\n plugins: [\n 'jsx',\n 'typescript',\n 'asyncDoExpressions',\n 'decimal',\n 'decorators-legacy',\n 'decoratorAutoAccessors',\n 'destructuringPrivate',\n 'doExpressions',\n 'exportDefaultFrom',\n 'functionBind',\n 'functionSent',\n 'importAssertions',\n 'moduleBlocks',\n 'partialApplication',\n 'throwExpressions',\n ],\n },\n },\n },\n ],\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: 'reducer',\n disableBuiltInRoute: false,\n };\n this.options = deepmerge(defaultOptions, this.options);\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AAEA,IAAAO,SAAA,GAAAR,sBAAA,CAAAC,OAAA;AAA6B,SAAAD,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAId,MAAMG,sBAAsB,CAAkC;EAC3EC,OAAO;EACPC,WAAWA,CAACD,OAAgB,EAAE;IAC5B,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;EAEAE,KAAKA,CAACC,QAAkB,EAAE;IACxB,IAAI,CAACC,YAAY,CAACD,QAAQ,CAAC;;IAE3B;IACAA,QAAQ,CAACE,KAAK,CAACC,YAAY,CAACC,GAAG,CAAC,wBAAwB,EAAGJ,QAAQ,IAAK;MACtE,MAAMH,OAAO,GAAG,IAAI,CAACA,OAAO;MAE5B,MAAMQ,WAAW,GAAG,IAAIC,kBAAW,CAACT,OAAO,CAAC;MAC5C,MAAMU,QAAQ,GAAG,IAAIC,eAAQ,CAACR,QAAQ,EAAEH,OAAO,CAAC;MAChD,MAAMY,WAAW,GAAG,IAAIC,kBAAW,CAACL,WAAW,CAAC;MAEhD,MAAMM,iBAAiB,GAAG,IAAIC,oCAAiB,EAAE;MACjD,MAAMC,cAAc,GAAG,IAAIC,8BAAc,EAAE;MAC3C,MAAMC,gBAAgB,GAAG,IAAIC,kCAAgB,CAACnB,OAAO,EAAEQ,WAAW,CAAC;MAEnE,SAASY,KAAKA,CAACjB,QAAQ,EAAE;QACvB,IAAIA,QAAQ,CAACH,OAAO,CAACqB,IAAI,KAAK,YAAY,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE,OAAO,KAAK;QACjG,OAAO,IAAI;MACb;MAEA,SAASC,SAASA,CAAA,EAAG;QACnBX,iBAAiB,CAACY,eAAe,CAAClB,WAAW,CAACmB,uBAAuB,EAAE,CAAC;QACxEX,cAAc,CAACU,eAAe,CAAClB,WAAW,CAACoB,oBAAoB,EAAE,CAAC;QAClEV,gBAAgB,CAACQ,eAAe,CAAClB,WAAW,CAACqB,sBAAsB,EAAE,CAAC;MACxE;MAEA,SAASC,WAAWA,CAACC,QAAgB,EAAE;QACrC,MAAMC,WAAW,GAAGxB,WAAW,CAACyB,iBAAiB,CAACF,QAAQ,CAAC;QAC3D,MAAMG,UAAU,GAAGC,iBAAI,CAACC,OAAO,CAACL,QAAQ,CAAC;QACzC,MAAMM,aAAa,GAAGF,iBAAI,CAACC,OAAO,CAACJ,WAAW,CAAC;QAC/C,MAAMM,UAAU,GAAGtC,OAAO,CAACuC,SAAS,EAAEC,IAAI,GAAIC,CAAC,IAAKA,CAAC,KAAKN,iBAAI,CAACC,OAAO,CAACL,QAAQ,CAAC,CAAC,IAAI,KAAK;QAC1F,MAAMW,SAAS,GAAG,EAAc;QAChC,MAAMC,MAAM,GAAG/B,WAAW,CAACgC,YAAY,CAACZ,WAAW,CAAC;QACpD,IAAIa,WAAW,GAAG,EAAE;QACpB,IAAI;UACFA,WAAW,GAAGnC,QAAQ,CAACoC,cAAc,CAACT,aAAa,CAAC;UACpDQ,WAAW,GAAI,KAAI7C,OAAO,CAAC+C,OAAQ,IAAGb,UAAW,IAAGlC,OAAO,CAACgD,WAAY,EAAC;UACzEN,SAAS,CAACO,IAAI,CAAE,wCAAuCJ,WAAY,IAAG,CAAC;QACzE,CAAC,CAAC,OAAOK,CAAC,EAAE;UACV;UACA,IAAIP,MAAM,CAACQ,IAAI,EAAE;YACf;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;YACY,MAAMC,KAAK,CAAE,4BAA2BpB,WAAY,EAAC,CAAC;UACxD;UACAU,SAAS,CAACO,IAAI,CAAE,wCAAuC,CAAC;QAC1D;QAEA,IAAI,CAACX,UAAU,EAAE;UACf,IAAIe,QAAQ,GAAG3C,QAAQ,CAAC4C,WAAW,CAACjB,aAAa,CAAC;UAClDgB,QAAQ,GAAI,KAAIrD,OAAO,CAAC+C,OAAQ,IAAGb,UAAW,OAAM;UACpDQ,SAAS,CAACO,IAAI,CAAE,qCAAoCI,QAAS,IAAG,CAAC;QACnE;QAEA,IAAIV,MAAM,CAACY,KAAK,IAAI,CAACvD,OAAO,CAACuD,KAAK,EAAEC,IAAI,EAAE;UACxC,MAAMJ,KAAK,CAAE,uBAAsBpB,WAAY,EAAC,CAAC;QACnD;QAEA,IAAIyB,QAAQ,GAAG,EAAE;QACjB,IAAI,CAACd,MAAM,CAACQ,IAAI,EAAE;UAChB,IAAI;YACFM,QAAQ,GAAG/C,QAAQ,CAACgD,WAAW,CAACrB,aAAa,CAAC;YAC9CoB,QAAQ,GAAI,KAAIzD,OAAO,CAAC+C,OAAQ,IAAGb,UAAW,OAAM;YACpDQ,SAAS,CAACO,IAAI,CAAE,qCAAoCQ,QAAS,IAAG,CAAC;UACnE,CAAC,CAAC,OAAOP,CAAC,EAAE;YACV;YACAR,SAAS,CAACO,IAAI,CAAE,sCAAqC,CAAC;UACxD;QACF;QAEA,IAAIN,MAAM,CAACgB,cAAc,EAAE;UACzB,IAAIC,aAAa,GAAGlD,QAAQ,CAACmD,eAAe,CAACxB,aAAa,EAAEM,MAAM,CAACgB,cAAc,CAAC;UAClFC,aAAa,GAAI,KAAI5D,OAAO,CAAC+C,OAAQ,IAAGb,UAAW,IAAGS,MAAM,CAACgB,cAAe,EAAC;UAC7EjB,SAAS,CAACO,IAAI,CAAE,+CAA8CW,aAAc,IAAG,CAAC;QAClF;QAEA,IAAI5D,OAAO,CAACuD,KAAK,EAAEC,IAAI,EAAE;UACvB,MAAMM,SAAS,GAAGtD,WAAW,CAACuD,sBAAsB,CAAC/D,OAAO,CAACuD,KAAK,EAAEC,IAAI,CAAC;UACzEd,SAAS,CAACO,IAAI,CAAE,kBAAiBa,SAAU,IAAG,CAAC;QACjD;QAEA,IAAInB,MAAM,CAACY,KAAK,EAAE;UAChB3C,WAAW,CAACoD,cAAc,CAACrB,MAAM,CAACY,KAAK,EAAE,eAAe,CAAC;UACzD,MAAMO,SAAS,GAAGtD,WAAW,CAACuD,sBAAsB,CAACpB,MAAM,CAACY,KAAK,CAAC;UAClEb,SAAS,CAACO,IAAI,CAAE,kBAAiBa,SAAU,IAAG,CAAC;QACjD;QAEA,MAAMG,UAAU,GAAGzD,WAAW,CAAC0D,qBAAqB,CAACnC,QAAQ,CAAC;QAC9D,MAAMoC,kBAAkB,GAAI,aAAY3D,WAAW,CAAC4D,sBAAsB,CAACrC,QAAQ,CAAE,EAAC;QAEtFnB,WAAW,CAACyD,eAAe,CAACJ,UAAU,EAAEvB,SAAS,CAAC;;QAElD;QACA,MAAM4B,aAAa,GAAGC,eAAM,CAACC,IAAI,CAAE,QAAOxE,OAAO,CAACgD,WAAY,SAAQ,EAAE;UAAEyB,GAAG,EAAEpC;QAAc,CAAC,CAAC,CAACqC,MAAM,GAAG,CAAC;QAC1G,IAAIJ,aAAa,KAAK3B,MAAM,CAAC6B,IAAI,IAAIlC,UAAU,CAAC,EAAE;UAChD,MAAMc,KAAK,CAAE,mDAAkDf,aAAc,EAAC,CAAC;QACjF;;QAEA;QACAvB,iBAAiB,CAAC6D,GAAG,CAAC5C,QAAQ,EAAE;UAC9BY,MAAM;UACNL,UAAU;UACVsC,SAAS,EAAE1C,UAAU;UACrBW;QACF,CAAC,CAAC;;QAEF;QACA7B,cAAc,CAAC2D,GAAG,CAACzC,UAAU,EAAE;UAC7BS,MAAM;UACNL,UAAU;UACVsC,SAAS,EAAE1C,UAAU;UACrB;UACAW,WAAW;UACXY;QACF,CAAC,CAAC;;QAEF;QACAvC,gBAAgB,CAACyD,GAAG,CAACzC,UAAU,EAAE;UAC/BS,MAAM;UACNL,UAAU;UACVuC,IAAI,EAAE3C,UAAU;UAChBC,IAAI,EAAED,UAAU;UAChB4C,KAAK,EAAE,KAAK;UACZb,UAAU,EAAEE;QACd,CAAC,CAAC;;QAEF;QACA,IAAI,IAAIY,MAAM,CAAE,KAAI/E,OAAO,CAACgF,KAAM,GAAE,CAAC,CAACC,IAAI,CAAC/C,UAAU,CAAC,EAAE;UACtD,MAAMgD,IAAI,GAAGhD,UAAU,CAACiD,OAAO,CAAC,IAAIJ,MAAM,CAAE,KAAI/E,OAAO,CAACgF,KAAM,GAAE,CAAC,EAAE,EAAE,CAAC;UACtE9D,gBAAgB,CAACyD,GAAG,CAACO,IAAI,EAAE;YACzBvC,MAAM;YACNL,UAAU;YACVuC,IAAI,EAAE3C,UAAU;YAChBC,IAAI,EAAE+C,IAAI;YACVJ,KAAK,EAAE,IAAI;YACXb,UAAU,EAAEE;UACd,CAAC,CAAC;QACJ;MACF;MAEA,IAAInE,OAAO,CAACuD,KAAK,EAAEC,IAAI,EAAE;QACvB5C,WAAW,CAACoD,cAAc,CAAChE,OAAO,CAACuD,KAAK,CAACC,IAAI,EAAE,eAAe,CAAC;MACjE;MAEA,MAAM4B,IAAI,GAAGb,eAAM,CAACC,IAAI,CAAC,YAAY,EAAE;QACrCC,GAAG,EAAEjE,WAAW,CAAC6E,cAAc;MACjC,CAAC,CAAC;MAEF,IAAID,IAAI,CAACV,MAAM,KAAK,CAAC,EAAE;QACrBY,OAAO,CAACC,IAAI,CAAC,eAAe,CAAC;MAC/B;;MAEA;AACN;AACA;AACA;AACA;MACM,MAAMC,UAAU,GAAGJ,IAAI,CACpBK,GAAG,CAAE1D,QAAQ,IAAKA,QAAQ,EAAEoD,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CACpDO,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;QACd,IAAID,CAAC,EAAEE,UAAU,CAACD,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAOD,CAAC,CAACG,aAAa,CAACF,CAAC,EAAE,IAAI,CAAC;MACjC,CAAC,CAAC,CACDH,GAAG,CAAEM,GAAG,IAAM,GAAEA,GAAI,SAAQ,CAAC;MAEhCP,UAAU,CAACQ,OAAO,CAAEjE,QAAQ,IAAK;QAC/BD,WAAW,CAACC,QAAQ,CAAC;MACvB,CAAC,CAAC;MAEFN,SAAS,EAAE;MAEX,IAAIL,KAAK,CAACjB,QAAQ,CAAC,EAAE;QACnB,MAAM8F,OAAO,GAAGC,iBAAQ,CAACC,KAAK,CAAC,YAAY,EAAE;UAC3C1B,GAAG,EAAEjE,WAAW,CAAC6E,cAAc,EAAE;UACjCe,aAAa,EAAE;QACjB,CAAC,CAAC;QACF,MAAMC,EAAE,GAAG,MAAOtE,QAAQ,IAAK;UAC7B,MAAMD,WAAW,CAACC,QAAQ,CAAC;UAC3BN,SAAS,EAAE;QACb,CAAC;QACDwE,OAAO,CAACK,EAAE,CAAC,KAAK,EAAED,EAAE,CAAC;QACrBJ,OAAO,CAACK,EAAE,CAAC,QAAQ,EAAED,EAAE,CAAC;QACxBJ,OAAO,CAACK,EAAE,CAAC,QAAQ,EAAED,EAAE,CAAC;QACxBJ,OAAO,CAACK,EAAE,CAAC,QAAQ,EAAED,EAAE,CAAC;QACxBJ,OAAO,CAACK,EAAE,CAAC,WAAW,EAAED,EAAE,CAAC;QAC3BJ,OAAO,CAACK,EAAE,CAAC,OAAO,EAAED,EAAE,CAAC;MACzB;IACF,CAAC,CAAC;;IAEF;IACAlG,QAAQ,CAACE,KAAK,CAACkG,WAAW,CAAChG,GAAG,CAAC,YAAY,EAAE,MAAM;MACjD,IAAI,IAAI,CAACP,OAAO,CAACwG,sBAAsB,EAAE;MACzCrG,QAAQ,CAACH,OAAO,CAACyG,MAAM,CAACC,KAAK,CAACzD,IAAI,CAAC;QACjCgC,IAAI,EAAE,cAAc;QACpB0B,OAAO,EAAE,cAAc;QACvBC,GAAG,EAAE,CACH;UACEC,MAAM,EAAEzH,OAAO,CAAC0H,OAAO,CAAC,cAAc,CAAC;UACvC9G,OAAO,EAAE;YACP+G,OAAO,EAAE,CAAC,CAAC3H,OAAO,CAAC0H,OAAO,iBAAiB,EAAE,IAAI,CAAC9G,OAAO,CAAC,CAAC;YAC3DgH,OAAO,EAAE,KAAK;YACd;YACAC,UAAU,EAAE;cACVC,OAAO,EAAE,CACP,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,kBAAkB;YAEtB;UACF;QACF,CAAC;MAEL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA9G,YAAYA,CAACD,QAAkB,EAAE;IAC/B,MAAMgH,cAAc,GAAG;MACrBC,OAAO,EAAEjH,QAAQ,CAACiH,OAAO;MACzBC,cAAc,EAAE,KAAK;MACrBrC,KAAK,EAAE,MAAM;MACbzC,SAAS,EAAE,EAAE;MACbQ,OAAO,EAAE,WAAW;MACpBC,WAAW,EAAE,SAAS;MACtBsE,mBAAmB,EAAE;IACvB,CAAC;IACD,IAAI,CAACtH,OAAO,GAAG,IAAAuH,kBAAS,EAACJ,cAAc,EAAE,IAAI,CAACnH,OAAO,CAAC;EACxD;AACF;AAACwH,OAAA,CAAA1H,OAAA,GAAAC,sBAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lcd-router-webpack-plugin",
3
- "version": "9.2.0",
3
+ "version": "9.2.1-alpha.2",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "files": [