@taro-minify-pack/plugin-async-pack 0.0.5-alpha.0 → 0.0.5-alpha.1

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/README.md CHANGED
@@ -5,16 +5,16 @@
5
5
 
6
6
  #### npm 安装
7
7
  ```bash
8
- npm install @taro-minify-pack/plugin-async-pack
8
+ npm install @taro-minify-pack/plugin-async-pack @taro-minify-pack/react-lazy-enhanced
9
9
  ```
10
10
  #### yarn 安装
11
11
  ```bash
12
- yarn add @taro-minify-pack/plugin-async-pack
12
+ yarn add @taro-minify-pack/plugin-async-pack @taro-minify-pack/react-lazy-enhanced
13
13
  ```
14
14
 
15
15
  #### pnpm 安装
16
16
  ```bash
17
- pnpm add @taro-minify-pack/plugin-async-pack
17
+ pnpm add @taro-minify-pack/plugin-async-pack @taro-minify-pack/react-lazy-enhanced
18
18
  ```
19
19
  ### 配置
20
20
 
package/dist/index.js CHANGED
@@ -47,6 +47,13 @@ exports.default = (ctx, pluginOpts) => {
47
47
  const chunkFilename = (pathData) => generateChunkFilename(pathData, '.wxss');
48
48
  return [Object.assign(Object.assign({}, options), { chunkFilename })];
49
49
  });
50
+ chain.module
51
+ .rule('script')
52
+ .use('babelLoader')
53
+ .tap((opts) => {
54
+ const pluginConfig = path_1.default.resolve(__dirname, './transform-react-lazy');
55
+ return Object.assign(Object.assign({}, opts), { plugins: [pluginConfig, ...(opts.plugins || [])] });
56
+ });
50
57
  chain.plugin(transform_before_compression_plugin_1.PLUGIN_NAME).use(transform_before_compression_plugin_1.TransformBeforeCompressionPlugin, [{
51
58
  test: /^(runtime\.js)$/,
52
59
  transform: (opt) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,12 @@ exports.PLUGIN_NAME = 'InjectStyleComponent';
12
12
  exports.InjectStyleComponentName = 'inject-style';
13
13
  const injectStyleComponentCode = `
14
14
  const { SingletonPromise } = require('~/singleton-promise.js')
15
- Component({ lifetimes: { attached: () => SingletonPromise.resolve("DYNAMIC_PACKAGE_NAME") } })
15
+ Component({
16
+ lifetimes: {
17
+ attached: () => SingletonPromise.loaded("DYNAMIC_PACKAGE_NAME"),
18
+ detached: () => SingletonPromise.unloaded("DYNAMIC_PACKAGE_NAME")
19
+ }
20
+ })
16
21
  `;
17
22
  class InjectStyleComponentPlugin {
18
23
  constructor(opt) {
@@ -1 +1 @@
1
- {"version":3,"file":"inject-style-component.js","sourceRoot":"","sources":["../src/inject-style-component.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAEvB,+DAAsC;AACtC,iEAAwC;AACxC,mCAAwF;AAE3E,QAAA,WAAW,GAAG,sBAAsB,CAAA;AAEpC,QAAA,wBAAwB,GAAG,cAAc,CAAA;AAEtD,MAAM,wBAAwB,GAAG;;;CAGhC,CAAA;AAID,MAAa,0BAA0B;IASrC,YAAa,GAAQ;QANJ,gBAAW,GAAW,UAAU,CAAA;QAEhC,gBAAW,GAAU,gDAAgD,CAAA;QAErE,cAAS,GAAW,wBAAwB,CAAA;QAG3D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAE,QAAkB;QACvB,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAW,EAAE,CAAC,WAAwB,EAAE,EAAE;YACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAA,CAAC,YAAY;YAEvF,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,mBAAW,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClE,MAAM,kBAAkB,GAAG,IAAA,kCAA0B,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,IAAG,CAAA;oBAE7E,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,mBAAS,EAAC,kBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;oBACzH,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;wBACxE,IAAI,CAAC,IAAA,0CAAkC,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,KAAI,SAAS,CAAC;4BAAE,OAAO,MAAM,CAAA;wBACzF,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;wBACjE,MAAM,IAAI,GAAG,cAAc,YAAY,IAAI,CAAA;wBAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;oBAC7B,CAAC,EAAE,EAAE,CAAC,CAAA;oBAEN,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC9C,MAAM,aAAa,GAAG,GAAG,kBAAkB,IAAI,gCAAwB,EAAE,CAAA;oBACzE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAA;oBACxE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC/E,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAvCD,gEAuCC"}
1
+ {"version":3,"file":"inject-style-component.js","sourceRoot":"","sources":["../src/inject-style-component.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAEvB,+DAAsC;AACtC,iEAAwC;AACxC,mCAAwF;AAE3E,QAAA,WAAW,GAAG,sBAAsB,CAAA;AAEpC,QAAA,wBAAwB,GAAG,cAAc,CAAA;AAEtD,MAAM,wBAAwB,GAAG;;;;;;;;CAQhC,CAAA;AAID,MAAa,0BAA0B;IASrC,YAAa,GAAQ;QANJ,gBAAW,GAAW,UAAU,CAAA;QAEhC,gBAAW,GAAU,gDAAgD,CAAA;QAErE,cAAS,GAAW,wBAAwB,CAAA;QAG3D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAE,QAAkB;QACvB,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAW,EAAE,CAAC,WAAwB,EAAE,EAAE;YACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAA,CAAC,YAAY;YAEvF,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,mBAAW,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClE,MAAM,kBAAkB,GAAG,IAAA,kCAA0B,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,IAAG,CAAA;oBAE7E,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,mBAAS,EAAC,kBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;oBACzH,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;wBACxE,IAAI,CAAC,IAAA,0CAAkC,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,KAAI,SAAS,CAAC;4BAAE,OAAO,MAAM,CAAA;wBACzF,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;wBACjE,MAAM,IAAI,GAAG,cAAc,YAAY,IAAI,CAAA;wBAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;oBAC7B,CAAC,EAAE,EAAE,CAAC,CAAA;oBAEN,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC9C,MAAM,aAAa,GAAG,GAAG,kBAAkB,IAAI,gCAAwB,EAAE,CAAA;oBACzE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAA;oBACxE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC/E,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAvCD,gEAuCC"}
@@ -1,9 +1,12 @@
1
1
  export declare class SingletonPromise {
2
2
  private static instance?;
3
+ private loadTimes;
3
4
  private promise?;
4
5
  private resolve?;
5
6
  constructor();
6
7
  static getInstance(key: string): SingletonPromise;
8
+ private resetPromise;
7
9
  static wait(key: string): Promise<void> | undefined;
8
- static resolve(key: string): void;
10
+ static loaded(key: string): void;
11
+ static unloaded(key: string): void;
9
12
  }
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SingletonPromise = void 0;
4
4
  class SingletonPromise {
5
5
  constructor() {
6
- this.promise = new Promise(resolve => {
7
- this.resolve = resolve;
8
- });
6
+ this.loadTimes = 0;
7
+ this.resetPromise();
9
8
  }
10
9
  static getInstance(key) {
11
10
  if (!SingletonPromise.instance)
@@ -14,12 +13,24 @@ class SingletonPromise {
14
13
  SingletonPromise.instance[key] = new SingletonPromise();
15
14
  return SingletonPromise.instance[key];
16
15
  }
16
+ resetPromise() {
17
+ this.promise = new Promise((resolve) => {
18
+ this.resolve = resolve;
19
+ });
20
+ }
17
21
  static wait(key) {
18
22
  return this.getInstance(key).promise;
19
23
  }
20
- static resolve(key) {
24
+ static loaded(key) {
21
25
  var _a, _b;
22
26
  (_b = (_a = this.getInstance(key)).resolve) === null || _b === void 0 ? void 0 : _b.call(_a);
27
+ this.getInstance(key).loadTimes += 1;
28
+ }
29
+ static unloaded(key) {
30
+ this.getInstance(key).loadTimes -= 1;
31
+ if (this.getInstance(key).loadTimes > 0)
32
+ return;
33
+ this.getInstance(key).resetPromise();
23
34
  }
24
35
  }
25
36
  exports.SingletonPromise = SingletonPromise;
@@ -1 +1 @@
1
- {"version":3,"file":"singleton-promise.js","sourceRoot":"","sources":["../src/singleton-promise.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAQ3B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAE,GAAU;QAC5B,IAAI,CAAC,gBAAgB,CAAC,QAAQ;YAAE,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC9D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAC5F,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAE,GAAU;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,OAAO,CAAE,GAAU;;QACxB,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAC,OAAO,kDAAI,CAAA;IACnC,CAAC;CACF;AA3BD,4CA2BC"}
1
+ {"version":3,"file":"singleton-promise.js","sourceRoot":"","sources":["../src/singleton-promise.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAU3B;QANQ,cAAS,GAAG,CAAC,CAAA;QAOnB,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,WAAW,CAAE,GAAU;QAC5B,IAAI,CAAC,gBAAgB,CAAC,QAAQ;YAAE,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC9D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAC5F,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAE,GAAU;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,MAAM,CAAE,GAAU;;QACvB,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAC,OAAO,kDAAI,CAAA;QACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAE,GAAU;QACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAA;QACpC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC;YAAE,OAAM;QAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAA;IACtC,CAAC;CACF;AAxCD,4CAwCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform-app-config.js","sourceRoot":"","sources":["../src/transform-app-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,qDAA2C;AAC3C,mCAAoD;AAOpD,MAAM,iBAAiB,GAAG,UAAU,CAAA;AAE7B,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,EAAE;IAC/C,MAAM,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAE7D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAY,CAAC,CAAA;IAE7E,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,EAAE,eAAe,GAAG,EAAE,EAAE,oBAAoB,GAAG,EAAE,KAAsB,YAAY,EAA7B,YAAY,UAAK,YAAY,EAAhI,yFAAiH,CAAe,CAAA;IAEtI,MAAM,gBAAgB,GAAG,WAAW,IAAI,WAAW,IAAI,EAAE,CAAA;IAEzD,MAAM,sBAAsB,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACxF,OAAO,EAAE,IAAI,EAAE,IAAA,kCAA0B,kCAAM,IAAI,KAAE,KAAK,IAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACrF,uCAAY,MAAM,KAAE,CAAC,IAAI,CAAC,EAAE,OAAO,IAAE;IACvC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,cAAc,mCACf,YAAY,KACf,eAAe,kCAAO,eAAe,GAAK,eAAe,GACzD,oBAAoB,kCAAO,oBAAoB,GAAK,yBAAyB,GAC7E,WAAW,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,sBAAsB,CAAC,EAC7D,YAAY,kCACP,YAAY,KACf,KAAK,EAAE,IAAI,MAEd,CAAA;IAED,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI,2BAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AA7BY,QAAA,kBAAkB,sBA6B9B"}
1
+ {"version":3,"file":"transform-app-config.js","sourceRoot":"","sources":["../src/transform-app-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,qDAA2C;AAC3C,mCAAoD;AAOpD,MAAM,iBAAiB,GAAG,UAAU,CAAA;AAE7B,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,EAAE;IAC/C,MAAM,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAE7D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAY,CAAC,CAAA;IAE7E,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,EAAE,eAAe,GAAG,EAAE,EAAE,oBAAoB,GAAG,EAAE,KAAsB,YAAY,EAA7B,YAAY,UAAK,YAAY,EAAhI,yFAAiH,CAAe,CAAA;IAEtI,MAAM,gBAAgB,GAAG,WAAW,IAAI,WAAW,IAAI,EAAE,CAAA;IAEzD,MAAM,sBAAsB,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACxF,OAAO,EAAE,IAAI,EAAE,IAAA,kCAA0B,kCAAM,IAAI,KAAE,KAAK,IAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACrF,uCAAY,MAAM,KAAE,CAAC,IAAI,CAAC,EAAE,OAAO,IAAE;IACvC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,cAAc,mCACf,YAAY,KACf,eAAe,kCAAO,eAAe,GAAK,eAAe,GACzD,oBAAoB,kCAAO,oBAAoB,GAAK,yBAAyB,GAC7E,WAAW,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,sBAAsB,CAAC,EAC7D,YAAY,kCAAO,YAAY,KAAE,KAAK,EAAE,IAAI,MAC7C,CAAA;IAED,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI,2BAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AA1BY,QAAA,kBAAkB,sBA0B9B"}
@@ -0,0 +1,7 @@
1
+ import { PluginObj, PluginPass } from '@babel/core';
2
+ interface State extends PluginPass {
3
+ reactNamespaces: Set<string>;
4
+ reactLazyBindings: Set<string>;
5
+ }
6
+ declare const _default: () => PluginObj<State>;
7
+ export default _default;
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const types = __importStar(require("@babel/types"));
37
+ const customLazySource = '@taro-minify-pack/react-lazy-enhanced';
38
+ exports.default = () => {
39
+ return {
40
+ visitor: {
41
+ Program: {
42
+ enter(programPath, state) {
43
+ const { filename = '' } = state;
44
+ if (new RegExp(customLazySource).test(filename))
45
+ return;
46
+ state.reactNamespaces = new Set();
47
+ state.reactLazyBindings = new Set();
48
+ programPath.traverse({
49
+ ImportDeclaration(path) {
50
+ if (!types.isStringLiteral(path.node.source, { value: 'react' }))
51
+ return;
52
+ const { specifiers } = path.node;
53
+ specifiers.forEach((spec) => {
54
+ const { name } = spec.local;
55
+ // import React from 'react'
56
+ if (types.isImportDefaultSpecifier(spec))
57
+ return state.reactNamespaces.add(name);
58
+ // import * as React from 'react'
59
+ if (types.isImportNamespaceSpecifier(spec))
60
+ return state.reactNamespaces.add(name);
61
+ // import { lazy } from 'react'
62
+ if (types.isImportSpecifier(spec) && types.isIdentifier(spec.imported, { name: 'lazy' })) {
63
+ state.reactLazyBindings.add(name);
64
+ }
65
+ });
66
+ }
67
+ });
68
+ programPath.traverse({
69
+ VariableDeclarator(path) {
70
+ const { id, init } = path.node;
71
+ // const a = React.lazy
72
+ if (types.isIdentifier(id)) {
73
+ if (!types.isMemberExpression(init))
74
+ return;
75
+ if (!types.isIdentifier(init.object))
76
+ return;
77
+ if (!types.isIdentifier(init.property, { name: 'lazy' }))
78
+ return;
79
+ if (!state.reactNamespaces.has(init.object.name))
80
+ return;
81
+ state.reactLazyBindings.add(id.name);
82
+ }
83
+ // const { lazy: a } = React;
84
+ if (types.isObjectPattern(id) && types.isIdentifier(init)) {
85
+ const { properties } = id;
86
+ if (!state.reactNamespaces.has(init.name))
87
+ return;
88
+ properties.forEach((prop) => {
89
+ if (!types.isObjectProperty(prop))
90
+ return;
91
+ if (!types.isIdentifier(prop.key, { name: 'lazy' }))
92
+ return;
93
+ if (!types.isIdentifier(prop.value))
94
+ return;
95
+ state.reactLazyBindings.add(prop.value.name);
96
+ });
97
+ }
98
+ }
99
+ });
100
+ },
101
+ exit(programPath, state) {
102
+ const { filename = '' } = state;
103
+ if (new RegExp(customLazySource).test(filename))
104
+ return;
105
+ let needInject = false;
106
+ const customLazyId = programPath.scope.generateUidIdentifier('customLazy');
107
+ programPath.traverse({
108
+ CallExpression(path) {
109
+ const { callee } = path.node;
110
+ if (types.isMemberExpression(callee)) {
111
+ if (!types.isIdentifier(callee.object))
112
+ return;
113
+ if (!state.reactNamespaces.has(callee.object.name))
114
+ return;
115
+ if (!types.isIdentifier(callee.property, { name: 'lazy' }))
116
+ return;
117
+ path.node.callee = customLazyId;
118
+ needInject = true;
119
+ }
120
+ if (types.isIdentifier(callee) && state.reactLazyBindings.has(callee.name)) {
121
+ path.node.callee = customLazyId;
122
+ needInject = true;
123
+ }
124
+ }
125
+ });
126
+ const hasImport = programPath.node.body.some((node) => {
127
+ return types.isImportDeclaration(node) && node.source.value === customLazySource;
128
+ });
129
+ if (hasImport || !needInject)
130
+ return;
131
+ const specifier = types.importSpecifier(customLazyId, types.identifier('lazy'));
132
+ const nodes = types.importDeclaration([specifier], types.stringLiteral(customLazySource));
133
+ programPath.unshiftContainer('body', nodes);
134
+ }
135
+ }
136
+ }
137
+ };
138
+ };
139
+ //# sourceMappingURL=transform-react-lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-react-lazy.js","sourceRoot":"","sources":["../src/transform-react-lazy.ts"],"names":[],"mappings":"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"}
@@ -68,28 +68,17 @@ const webpackLoadDynamicModuleTemplate = `
68
68
  return;
69
69
  }
70
70
 
71
- const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
72
-
73
- const [,dynamicPackageName] = dynamicModulePath.match(dynamicPackageNameRegex) || [];
74
-
75
71
  const target = { src: dynamicModulePath };
76
72
 
77
73
  if (loadedDynamicModules[dynamicModulePath]) return done({ type: 'loaded', target });
78
-
79
- const { SingletonPromise } = require('~/singleton-promise.js');
80
-
81
- const waitStyle = hasStyleDynamicModuleList.includes(dynamicModulePath)?SingletonPromise.wait(dynamicPackageName):Promise.resolve();
82
-
83
- waitStyle.then(()=>{
84
- promiseRetry(function () {
85
- return loadDynamicModule(dynamicModulePath)
86
- })
87
- .then(function () {
88
- return done({ type: 'loaded', target })
89
- }).catch(function () {
90
- return done({ type:'error', target })
91
- });
92
- })
74
+
75
+ promiseRetry(function () {
76
+ return loadDynamicModule(dynamicModulePath)
77
+ }).then(function () {
78
+ return done({ type: 'loaded', target })
79
+ }).catch(function () {
80
+ return done({ type:'error', target })
81
+ });
93
82
  };
94
83
  `;
95
84
  const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath, opts) => {
@@ -116,7 +105,7 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath, opts) => {
116
105
  });
117
106
  const loadDynamicModuleFnMapCode = (() => {
118
107
  const dynamicAssetsRequireTempCode = dynamicJsAssets.map((dynamicJsAsset) => {
119
- return `'/${dynamicJsAsset}':function (){ return require.async('/${dynamicJsAsset}'); }`;
108
+ return `'/${dynamicJsAsset}':function (){ return require.async('~/${dynamicJsAsset}'); }`;
120
109
  });
121
110
  return `var loadDynamicModuleFnMap = {${dynamicAssetsRequireTempCode.join(',')}}`;
122
111
  })();
@@ -127,8 +116,7 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath, opts) => {
127
116
  });
128
117
  return `var hasStyleDynamicModuleList = [${hasStyleDynamicAssetsList.map(item => `'/${item}'`).join(',')}]`;
129
118
  })();
130
- const DYNAMIC_PACKAGE_NAME_REGEX = types.regExpLiteral(`(${dynamicPackageNamePrefix}(?:-[a-z]{2})?)\\/`);
131
- const templateCodeAst = core_1.template.statement(webpackLoadDynamicModuleTemplate)({ DYNAMIC_PACKAGE_NAME_REGEX });
119
+ const templateCodeAst = core_1.template.ast(webpackLoadDynamicModuleTemplate);
132
120
  const loadDynamicModuleFnMapAst = core_1.template.ast(loadDynamicModuleFnMapCode);
133
121
  const hasStyleDynamicAssetsListAst = core_1.template.ast(hasStyleDynamicAssetsListCode);
134
122
  const templateCodeDepAst = core_1.template.ast(webpackLoadDynamicModuleTemplateDep);
@@ -138,11 +126,43 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath, opts) => {
138
126
  assignmentExpressionNodePath.insertBefore(templateCodeDepAst);
139
127
  };
140
128
  const webpackLoadDynamicModuleStylesheetTemplate = `
141
- loadStylesheet = function () {
142
- return Promise.resolve()
129
+ __webpack_require__.f.miniCss = function (dynamicStylesheetChunkId, promises) {
130
+ promises.push(loadStylesheet(dynamicStylesheetChunkId))
131
+ }
132
+ `;
133
+ const replaceWebpackLoadDynamicModuleStylesheetFn = (assignmentExpressionNodePath) => {
134
+ const { left, right } = assignmentExpressionNodePath.node || {};
135
+ if (!types.isMemberExpression(left))
136
+ return;
137
+ if (!types.isFunctionExpression(right))
138
+ return;
139
+ if (!types.isMemberExpression(left.object))
140
+ return;
141
+ if (!types.isIdentifier(left.object.object, { name: '__webpack_require__' }))
142
+ return;
143
+ if (!types.isIdentifier(left.object.property, { name: 'f' }))
144
+ return;
145
+ if (!types.isIdentifier(left.property, { name: 'miniCss' }))
146
+ return;
147
+ const isProcessed = right.params.some((item) => {
148
+ return types.isIdentifier(item, { name: 'dynamicStylesheetChunkId' });
149
+ });
150
+ if (isProcessed)
151
+ return;
152
+ const templateCodeAst = core_1.template.expression(webpackLoadDynamicModuleStylesheetTemplate)();
153
+ assignmentExpressionNodePath.replaceWith(templateCodeAst);
154
+ };
155
+ const webpackLoadStylesheetTemplate = `
156
+ loadStylesheet = function (chunkId) {
157
+ const href = __webpack_require__.miniCssF(chunkId);
158
+ const fullHref = __webpack_require__.p + href;
159
+ const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
160
+ const [,dynamicPackageName] = fullHref.match(dynamicPackageNameRegex) || [];
161
+ const { SingletonPromise } = require('~/singleton-promise.js');
162
+ return SingletonPromise.wait(dynamicPackageName)
143
163
  }
144
164
  `;
145
- const replaceLoadStylesheetFn = (nodePath) => {
165
+ const replaceLoadStylesheetFn = (nodePath, opts) => {
146
166
  const { id, init } = nodePath.node || {};
147
167
  if (!types.isIdentifier(id, { name: 'loadStylesheet' }))
148
168
  return;
@@ -151,7 +171,9 @@ const replaceLoadStylesheetFn = (nodePath) => {
151
171
  const isProcessed = !init.params.length;
152
172
  if (isProcessed)
153
173
  return;
154
- const templateCodeAst = core_1.template.expression(webpackLoadDynamicModuleStylesheetTemplate)();
174
+ const { dynamicPackageNamePrefix } = opts;
175
+ const DYNAMIC_PACKAGE_NAME_REGEX = types.regExpLiteral(`(${dynamicPackageNamePrefix}(?:-[a-z]{2})?)\\/`);
176
+ const templateCodeAst = core_1.template.expression(webpackLoadStylesheetTemplate)({ DYNAMIC_PACKAGE_NAME_REGEX });
155
177
  nodePath.replaceWith(templateCodeAst);
156
178
  };
157
179
  const removeCreateStylesheetFn = (nodePath) => {
@@ -173,7 +195,7 @@ const transformWebpackRuntime = (code, opts) => {
173
195
  replaceWebpackLoadScriptFn(nodePath, opts);
174
196
  },
175
197
  VariableDeclarator(nodePath) {
176
- replaceLoadStylesheetFn(nodePath);
198
+ replaceLoadStylesheetFn(nodePath, opts);
177
199
  removeCreateStylesheetFn(nodePath);
178
200
  removeFindStylesheetFn(nodePath);
179
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transform-webpack-runtime.js","sourceRoot":"","sources":["../src/transform-webpack-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform-webpack-runtime.js","sourceRoot":"","sources":["../src/transform-webpack-runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taro-minify-pack/plugin-async-pack",
3
- "version": "0.0.5-alpha.0",
3
+ "version": "0.0.5-alpha.1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,7 +31,6 @@
31
31
  "@types/babel__generator": "^7.6.8",
32
32
  "@types/babel__template": "^7.4.4",
33
33
  "@types/babel__traverse": "^7.20.6",
34
- "@types/md5": "^2.3.5",
35
34
  "@types/node": "^18.19.130",
36
35
  "@types/webpack-sources": "^3.2.3",
37
36
  "@typescript-eslint/eslint-plugin": "^8.26.1",
package/src/index.ts CHANGED
@@ -65,6 +65,14 @@ export default (ctx: IPluginContext, pluginOpts: AsyncPackOpts) => {
65
65
  return [{ ...options, chunkFilename }]
66
66
  })
67
67
 
68
+ chain.module
69
+ .rule('script')
70
+ .use('babelLoader')
71
+ .tap((opts) => {
72
+ const pluginConfig = path.resolve(__dirname, './transform-react-lazy')
73
+ return { ...opts, plugins: [pluginConfig, ...(opts.plugins || [])] }
74
+ })
75
+
68
76
  chain.plugin(TransformBeforeCompressionPluginName).use(TransformBeforeCompressionPlugin, [{
69
77
  test: /^(runtime\.js)$/,
70
78
  transform: (opt: TransformOpt) => {
@@ -11,7 +11,12 @@ export const InjectStyleComponentName = 'inject-style'
11
11
 
12
12
  const injectStyleComponentCode = `
13
13
  const { SingletonPromise } = require('~/singleton-promise.js')
14
- Component({ lifetimes: { attached: () => SingletonPromise.resolve("DYNAMIC_PACKAGE_NAME") } })
14
+ Component({
15
+ lifetimes: {
16
+ attached: () => SingletonPromise.loaded("DYNAMIC_PACKAGE_NAME"),
17
+ detached: () => SingletonPromise.unloaded("DYNAMIC_PACKAGE_NAME")
18
+ }
19
+ })
15
20
  `
16
21
 
17
22
  type Opt = AsyncPackOpts
@@ -2,14 +2,14 @@ export class SingletonPromise {
2
2
  // 静态属性存放单例
3
3
  private static instance?: Record<string, SingletonPromise>
4
4
 
5
+ private loadTimes = 0
6
+
5
7
  private promise?: Promise<void>
6
8
 
7
9
  private resolve?: () => void
8
10
 
9
11
  constructor () {
10
- this.promise = new Promise<void>(resolve => {
11
- this.resolve = resolve
12
- })
12
+ this.resetPromise()
13
13
  }
14
14
 
15
15
  static getInstance (key:string) {
@@ -18,11 +18,24 @@ export class SingletonPromise {
18
18
  return SingletonPromise.instance[key]
19
19
  }
20
20
 
21
+ private resetPromise () {
22
+ this.promise = new Promise<void>((resolve) => {
23
+ this.resolve = resolve
24
+ })
25
+ }
26
+
21
27
  static wait (key:string) {
22
28
  return this.getInstance(key).promise
23
29
  }
24
30
 
25
- static resolve (key:string) {
31
+ static loaded (key:string) {
26
32
  this.getInstance(key).resolve?.()
33
+ this.getInstance(key).loadTimes += 1
34
+ }
35
+
36
+ static unloaded (key:string) {
37
+ this.getInstance(key).loadTimes -= 1
38
+ if (this.getInstance(key).loadTimes > 0) return
39
+ this.getInstance(key).resetPromise()
27
40
  }
28
41
  }
@@ -31,10 +31,7 @@ export const transformAppConfig = (opts: Opts) => {
31
31
  usingComponents: { ...usingComponents, ...asyncComponents },
32
32
  componentPlaceholder: { ...componentPlaceholder, ...asyncComponentPlaceholder },
33
33
  subPackages: [...finalSubPackages, ...dynamicPackagesConfigs],
34
- resolveAlias: {
35
- ...resolveAlias,
36
- '~/*': '/*'
37
- }
34
+ resolveAlias: { ...resolveAlias, '~/*': '/*' }
38
35
  }
39
36
 
40
37
  assets[appConfigAssetKey] = new RawSource(JSON.stringify(finalAppConfig))
@@ -0,0 +1,132 @@
1
+ import { PluginObj, NodePath, PluginPass } from '@babel/core'
2
+ import * as types from '@babel/types'
3
+ import { CallExpression, ImportDeclaration, Program, VariableDeclarator } from '@babel/types'
4
+
5
+ const customLazySource = '@taro-minify-pack/react-lazy-enhanced'
6
+
7
+ interface State extends PluginPass {
8
+ reactNamespaces: Set<string>;
9
+ reactLazyBindings: Set<string>;
10
+ }
11
+
12
+ export default (): PluginObj<State> => {
13
+ return {
14
+ visitor: {
15
+ Program: {
16
+ enter (programPath: NodePath<Program>, state: State) {
17
+ const { filename = '' } = state
18
+
19
+ if (new RegExp(customLazySource).test(filename)) return
20
+
21
+ state.reactNamespaces = new Set()
22
+
23
+ state.reactLazyBindings = new Set()
24
+
25
+ programPath.traverse({
26
+ ImportDeclaration (path: NodePath<ImportDeclaration>) {
27
+ if (!types.isStringLiteral(path.node.source, { value: 'react' })) return
28
+
29
+ const { specifiers } = path.node
30
+
31
+ specifiers.forEach((spec) => {
32
+ const { name } = spec.local
33
+
34
+ // import React from 'react'
35
+ if (types.isImportDefaultSpecifier(spec)) return state.reactNamespaces.add(name)
36
+
37
+ // import * as React from 'react'
38
+ if (types.isImportNamespaceSpecifier(spec)) return state.reactNamespaces.add(name)
39
+
40
+ // import { lazy } from 'react'
41
+ if (types.isImportSpecifier(spec) && types.isIdentifier(spec.imported, { name: 'lazy' })) {
42
+ state.reactLazyBindings.add(name)
43
+ }
44
+ })
45
+ }
46
+ })
47
+
48
+ programPath.traverse({
49
+ VariableDeclarator (path: NodePath<VariableDeclarator>) {
50
+ const { id, init } = path.node
51
+
52
+ // const a = React.lazy
53
+ if (types.isIdentifier(id)) {
54
+ if (!types.isMemberExpression(init)) return
55
+
56
+ if (!types.isIdentifier(init.object)) return
57
+
58
+ if (!types.isIdentifier(init.property, { name: 'lazy' })) return
59
+
60
+ if (!state.reactNamespaces.has(init.object.name)) return
61
+
62
+ state.reactLazyBindings.add(id.name)
63
+ }
64
+
65
+ // const { lazy: a } = React;
66
+ if (types.isObjectPattern(id) && types.isIdentifier(init)) {
67
+ const { properties } = id
68
+
69
+ if (!state.reactNamespaces.has(init.name)) return
70
+
71
+ properties.forEach((prop) => {
72
+ if (!types.isObjectProperty(prop)) return
73
+
74
+ if (!types.isIdentifier(prop.key, { name: 'lazy' })) return
75
+
76
+ if (!types.isIdentifier(prop.value)) return
77
+
78
+ state.reactLazyBindings.add(prop.value.name)
79
+ })
80
+ }
81
+ }
82
+ })
83
+ },
84
+
85
+ exit (programPath: NodePath<Program>, state: State) {
86
+ const { filename = '' } = state
87
+
88
+ if (new RegExp(customLazySource).test(filename)) return
89
+
90
+ let needInject = false
91
+
92
+ const customLazyId = programPath.scope.generateUidIdentifier('customLazy')
93
+
94
+ programPath.traverse({
95
+ CallExpression (path: NodePath<CallExpression>) {
96
+ const { callee } = path.node
97
+
98
+ if (types.isMemberExpression(callee)) {
99
+ if (!types.isIdentifier(callee.object)) return
100
+
101
+ if (!state.reactNamespaces.has(callee.object.name)) return
102
+
103
+ if (!types.isIdentifier(callee.property, { name: 'lazy' })) return
104
+
105
+ path.node.callee = customLazyId
106
+
107
+ needInject = true
108
+ }
109
+
110
+ if (types.isIdentifier(callee) && state.reactLazyBindings.has(callee.name)) {
111
+ path.node.callee = customLazyId
112
+ needInject = true
113
+ }
114
+ }
115
+ })
116
+
117
+ const hasImport = programPath.node.body.some((node) => {
118
+ return types.isImportDeclaration(node) && node.source.value === customLazySource
119
+ })
120
+
121
+ if (hasImport || !needInject) return
122
+
123
+ const specifier = types.importSpecifier(customLazyId, types.identifier('lazy'))
124
+
125
+ const nodes = types.importDeclaration([specifier], types.stringLiteral(customLazySource))
126
+
127
+ programPath.unshiftContainer('body', nodes)
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
@@ -1,9 +1,9 @@
1
1
  import { NodePath, template } from '@babel/core'
2
2
  import generator from '@babel/generator'
3
3
  import * as parser from '@babel/parser'
4
- import traverse, { Node } from '@babel/traverse'
4
+ import traverse from '@babel/traverse'
5
5
  import * as types from '@babel/types'
6
- import type { AssignmentExpression, VariableDeclarator } from '@babel/types'
6
+ import type { AssignmentExpression, Statement, VariableDeclarator } from '@babel/types'
7
7
  import type { CompilationAssets, AsyncPackOpts } from './types'
8
8
  import { isDynamicPackageJsAsset, isDynamicPackageWXssAsset } from './utils'
9
9
 
@@ -37,28 +37,17 @@ const webpackLoadDynamicModuleTemplate = `
37
37
  return;
38
38
  }
39
39
 
40
- const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
41
-
42
- const [,dynamicPackageName] = dynamicModulePath.match(dynamicPackageNameRegex) || [];
43
-
44
40
  const target = { src: dynamicModulePath };
45
41
 
46
42
  if (loadedDynamicModules[dynamicModulePath]) return done({ type: 'loaded', target });
47
-
48
- const { SingletonPromise } = require('~/singleton-promise.js');
49
-
50
- const waitStyle = hasStyleDynamicModuleList.includes(dynamicModulePath)?SingletonPromise.wait(dynamicPackageName):Promise.resolve();
51
-
52
- waitStyle.then(()=>{
53
- promiseRetry(function () {
54
- return loadDynamicModule(dynamicModulePath)
55
- })
56
- .then(function () {
57
- return done({ type: 'loaded', target })
58
- }).catch(function () {
59
- return done({ type:'error', target })
60
- });
61
- })
43
+
44
+ promiseRetry(function () {
45
+ return loadDynamicModule(dynamicModulePath)
46
+ }).then(function () {
47
+ return done({ type: 'loaded', target })
48
+ }).catch(function () {
49
+ return done({ type:'error', target })
50
+ });
62
51
  };
63
52
  `
64
53
 
@@ -91,7 +80,7 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath: NodePath<Assig
91
80
 
92
81
  const loadDynamicModuleFnMapCode = (() => {
93
82
  const dynamicAssetsRequireTempCode = dynamicJsAssets.map((dynamicJsAsset) => {
94
- return `'/${dynamicJsAsset}':function (){ return require.async('/${dynamicJsAsset}'); }`
83
+ return `'/${dynamicJsAsset}':function (){ return require.async('~/${dynamicJsAsset}'); }`
95
84
  })
96
85
 
97
86
  return `var loadDynamicModuleFnMap = {${dynamicAssetsRequireTempCode.join(',')}}`
@@ -105,9 +94,7 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath: NodePath<Assig
105
94
  return `var hasStyleDynamicModuleList = [${hasStyleDynamicAssetsList.map(item => `'/${item}'`).join(',')}]`
106
95
  })()
107
96
 
108
- const DYNAMIC_PACKAGE_NAME_REGEX = types.regExpLiteral(`(${dynamicPackageNamePrefix}(?:-[a-z]{2})?)\\/`)
109
-
110
- const templateCodeAst = template.statement(webpackLoadDynamicModuleTemplate)({ DYNAMIC_PACKAGE_NAME_REGEX })
97
+ const templateCodeAst = template.ast(webpackLoadDynamicModuleTemplate) as Statement
111
98
 
112
99
  const loadDynamicModuleFnMapAst = template.ast(loadDynamicModuleFnMapCode)
113
100
 
@@ -125,18 +112,59 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath: NodePath<Assig
125
112
  }
126
113
 
127
114
  const webpackLoadDynamicModuleStylesheetTemplate = `
128
- loadStylesheet = function () {
129
- return Promise.resolve()
115
+ __webpack_require__.f.miniCss = function (dynamicStylesheetChunkId, promises) {
116
+ promises.push(loadStylesheet(dynamicStylesheetChunkId))
117
+ }
118
+ `
119
+
120
+ const replaceWebpackLoadDynamicModuleStylesheetFn = (
121
+ assignmentExpressionNodePath: NodePath<AssignmentExpression>
122
+ ) => {
123
+ const { left, right } = assignmentExpressionNodePath.node || {}
124
+
125
+ if (!types.isMemberExpression(left)) return
126
+
127
+ if (!types.isFunctionExpression(right)) return
128
+
129
+ if (!types.isMemberExpression(left.object)) return
130
+
131
+ if (!types.isIdentifier(left.object.object, { name: '__webpack_require__' })) return
132
+
133
+ if (!types.isIdentifier(left.object.property, { name: 'f' })) return
134
+
135
+ if (!types.isIdentifier(left.property, { name: 'miniCss' })) return
136
+
137
+ const isProcessed = right.params.some((item) => {
138
+ return types.isIdentifier(item, { name: 'dynamicStylesheetChunkId' })
139
+ })
140
+
141
+ if (isProcessed) return
142
+
143
+ const templateCodeAst = template.expression(webpackLoadDynamicModuleStylesheetTemplate)()
144
+
145
+ assignmentExpressionNodePath.replaceWith(templateCodeAst)
146
+ }
147
+
148
+ const webpackLoadStylesheetTemplate = `
149
+ loadStylesheet = function (chunkId) {
150
+ const href = __webpack_require__.miniCssF(chunkId);
151
+ const fullHref = __webpack_require__.p + href;
152
+ const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
153
+ const [,dynamicPackageName] = fullHref.match(dynamicPackageNameRegex) || [];
154
+ const { SingletonPromise } = require('~/singleton-promise.js');
155
+ return SingletonPromise.wait(dynamicPackageName)
130
156
  }
131
157
  `
132
158
 
133
- const replaceLoadStylesheetFn = (nodePath: NodePath<VariableDeclarator>) => {
159
+ const replaceLoadStylesheetFn = (nodePath: NodePath<VariableDeclarator>, opts: Opts) => {
134
160
  const { id, init } = nodePath.node || {}
135
161
  if (!types.isIdentifier(id, { name: 'loadStylesheet' })) return
136
162
  if (!types.isFunctionExpression(init)) return
137
163
  const isProcessed = !init.params.length
138
164
  if (isProcessed) return
139
- const templateCodeAst = template.expression(webpackLoadDynamicModuleStylesheetTemplate)()
165
+ const { dynamicPackageNamePrefix } = opts
166
+ const DYNAMIC_PACKAGE_NAME_REGEX = types.regExpLiteral(`(${dynamicPackageNamePrefix}(?:-[a-z]{2})?)\\/`)
167
+ const templateCodeAst = template.expression(webpackLoadStylesheetTemplate)({ DYNAMIC_PACKAGE_NAME_REGEX })
140
168
  nodePath.replaceWith(templateCodeAst)
141
169
  }
142
170
 
@@ -159,7 +187,7 @@ export const transformWebpackRuntime = (code: string, opts: Opts) => {
159
187
  replaceWebpackLoadScriptFn(nodePath, opts)
160
188
  },
161
189
  VariableDeclarator (nodePath: NodePath<VariableDeclarator>) {
162
- replaceLoadStylesheetFn(nodePath)
190
+ replaceLoadStylesheetFn(nodePath, opts)
163
191
  removeCreateStylesheetFn(nodePath)
164
192
  removeFindStylesheetFn(nodePath)
165
193
  }