@taro-minify-pack/plugin-async-pack 0.0.5-alpha.0 → 0.0.5-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.
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);
@@ -137,12 +125,59 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath, opts) => {
137
125
  assignmentExpressionNodePath.insertBefore(hasStyleDynamicAssetsListAst);
138
126
  assignmentExpressionNodePath.insertBefore(templateCodeDepAst);
139
127
  };
140
- const webpackLoadDynamicModuleStylesheetTemplate = `
141
- loadStylesheet = function () {
142
- return Promise.resolve()
128
+ const webpackLoadDynamicStylesheetTemplate = `
129
+ __webpack_require__.f.miniCss = function (dynamicStylesheetChunkId, promises) {
130
+ var cssChunks = CSS_CHUNKS;
131
+ if(installedCssChunks[dynamicStylesheetChunkId] !== 0 && cssChunks[dynamicStylesheetChunkId]){
132
+ promises.push(loadStylesheet(dynamicStylesheetChunkId))
133
+ }
134
+ }
135
+ `;
136
+ const replaceWebpackLoadDynamicModuleStylesheetFn = (assignmentExpressionNodePath) => {
137
+ const { left, right } = assignmentExpressionNodePath.node || {};
138
+ if (!types.isMemberExpression(left))
139
+ return;
140
+ if (!types.isFunctionExpression(right))
141
+ return;
142
+ if (!types.isMemberExpression(left.object))
143
+ return;
144
+ if (!types.isIdentifier(left.object.object, { name: '__webpack_require__' }))
145
+ return;
146
+ if (!types.isIdentifier(left.object.property, { name: 'f' }))
147
+ return;
148
+ if (!types.isIdentifier(left.property, { name: 'miniCss' }))
149
+ return;
150
+ const isProcessed = right.params.some((item) => {
151
+ return types.isIdentifier(item, { name: 'dynamicStylesheetChunkId' });
152
+ });
153
+ if (isProcessed)
154
+ return;
155
+ const cssChunksValueAst = [];
156
+ assignmentExpressionNodePath.traverse({
157
+ VariableDeclarator: (nodePath) => {
158
+ const { id, init } = nodePath.node || {};
159
+ if (!types.isIdentifier(id, { name: 'cssChunks' }))
160
+ return;
161
+ if (!types.isObjectExpression(init))
162
+ return;
163
+ cssChunksValueAst.push(...init.properties);
164
+ }
165
+ });
166
+ const CSS_CHUNKS = types.objectExpression(cssChunksValueAst);
167
+ const templateCodeAst = core_1.template.statement(webpackLoadDynamicStylesheetTemplate)({ CSS_CHUNKS });
168
+ assignmentExpressionNodePath.replaceWith(templateCodeAst);
169
+ };
170
+ const webpackLoadStylesheetTemplate = `
171
+ loadStylesheet = function (chunkId) {
172
+ const href = __webpack_require__.miniCssF(chunkId);
173
+ const fullHref = __webpack_require__.p + href;
174
+ const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
175
+ const [,dynamicPackageName] = fullHref.match(dynamicPackageNameRegex) || [];
176
+ const { SingletonPromise } = require('~/singleton-promise.js');
177
+ return SingletonPromise.wait(dynamicPackageName)
143
178
  }
144
179
  `;
145
- const replaceLoadStylesheetFn = (nodePath) => {
180
+ const replaceLoadStylesheetFn = (nodePath, opts) => {
146
181
  const { id, init } = nodePath.node || {};
147
182
  if (!types.isIdentifier(id, { name: 'loadStylesheet' }))
148
183
  return;
@@ -151,7 +186,9 @@ const replaceLoadStylesheetFn = (nodePath) => {
151
186
  const isProcessed = !init.params.length;
152
187
  if (isProcessed)
153
188
  return;
154
- const templateCodeAst = core_1.template.expression(webpackLoadDynamicModuleStylesheetTemplate)();
189
+ const { dynamicPackageNamePrefix } = opts;
190
+ const DYNAMIC_PACKAGE_NAME_REGEX = types.regExpLiteral(`(${dynamicPackageNamePrefix}(?:-[a-z]{2})?)\\/`);
191
+ const templateCodeAst = core_1.template.expression(webpackLoadStylesheetTemplate)({ DYNAMIC_PACKAGE_NAME_REGEX });
155
192
  nodePath.replaceWith(templateCodeAst);
156
193
  };
157
194
  const removeCreateStylesheetFn = (nodePath) => {
@@ -171,9 +208,10 @@ const transformWebpackRuntime = (code, opts) => {
171
208
  (0, traverse_1.default)(ast, {
172
209
  AssignmentExpression: (nodePath) => {
173
210
  replaceWebpackLoadScriptFn(nodePath, opts);
211
+ replaceWebpackLoadDynamicModuleStylesheetFn(nodePath);
174
212
  },
175
213
  VariableDeclarator(nodePath) {
176
- replaceLoadStylesheetFn(nodePath);
214
+ replaceLoadStylesheetFn(nodePath, opts);
177
215
  removeCreateStylesheetFn(nodePath);
178
216
  removeFindStylesheetFn(nodePath);
179
217
  }
@@ -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.2",
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,16 @@
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 {
7
+ AssignmentExpression,
8
+ ObjectMethod,
9
+ ObjectProperty,
10
+ SpreadElement,
11
+ Statement,
12
+ VariableDeclarator
13
+ } from '@babel/types'
7
14
  import type { CompilationAssets, AsyncPackOpts } from './types'
8
15
  import { isDynamicPackageJsAsset, isDynamicPackageWXssAsset } from './utils'
9
16
 
@@ -37,28 +44,17 @@ const webpackLoadDynamicModuleTemplate = `
37
44
  return;
38
45
  }
39
46
 
40
- const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
41
-
42
- const [,dynamicPackageName] = dynamicModulePath.match(dynamicPackageNameRegex) || [];
43
-
44
47
  const target = { src: dynamicModulePath };
45
48
 
46
49
  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
- })
50
+
51
+ promiseRetry(function () {
52
+ return loadDynamicModule(dynamicModulePath)
53
+ }).then(function () {
54
+ return done({ type: 'loaded', target })
55
+ }).catch(function () {
56
+ return done({ type:'error', target })
57
+ });
62
58
  };
63
59
  `
64
60
 
@@ -91,7 +87,7 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath: NodePath<Assig
91
87
 
92
88
  const loadDynamicModuleFnMapCode = (() => {
93
89
  const dynamicAssetsRequireTempCode = dynamicJsAssets.map((dynamicJsAsset) => {
94
- return `'/${dynamicJsAsset}':function (){ return require.async('/${dynamicJsAsset}'); }`
90
+ return `'/${dynamicJsAsset}':function (){ return require.async('~/${dynamicJsAsset}'); }`
95
91
  })
96
92
 
97
93
  return `var loadDynamicModuleFnMap = {${dynamicAssetsRequireTempCode.join(',')}}`
@@ -105,9 +101,7 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath: NodePath<Assig
105
101
  return `var hasStyleDynamicModuleList = [${hasStyleDynamicAssetsList.map(item => `'/${item}'`).join(',')}]`
106
102
  })()
107
103
 
108
- const DYNAMIC_PACKAGE_NAME_REGEX = types.regExpLiteral(`(${dynamicPackageNamePrefix}(?:-[a-z]{2})?)\\/`)
109
-
110
- const templateCodeAst = template.statement(webpackLoadDynamicModuleTemplate)({ DYNAMIC_PACKAGE_NAME_REGEX })
104
+ const templateCodeAst = template.ast(webpackLoadDynamicModuleTemplate) as Statement
111
105
 
112
106
  const loadDynamicModuleFnMapAst = template.ast(loadDynamicModuleFnMapCode)
113
107
 
@@ -124,19 +118,76 @@ const replaceWebpackLoadScriptFn = (assignmentExpressionNodePath: NodePath<Assig
124
118
  assignmentExpressionNodePath.insertBefore(templateCodeDepAst)
125
119
  }
126
120
 
127
- const webpackLoadDynamicModuleStylesheetTemplate = `
128
- loadStylesheet = function () {
129
- return Promise.resolve()
121
+ const webpackLoadDynamicStylesheetTemplate = `
122
+ __webpack_require__.f.miniCss = function (dynamicStylesheetChunkId, promises) {
123
+ var cssChunks = CSS_CHUNKS;
124
+ if(installedCssChunks[dynamicStylesheetChunkId] !== 0 && cssChunks[dynamicStylesheetChunkId]){
125
+ promises.push(loadStylesheet(dynamicStylesheetChunkId))
126
+ }
127
+ }
128
+ `
129
+
130
+ const replaceWebpackLoadDynamicModuleStylesheetFn = (
131
+ assignmentExpressionNodePath: NodePath<AssignmentExpression>
132
+ ) => {
133
+ const { left, right } = assignmentExpressionNodePath.node || {}
134
+
135
+ if (!types.isMemberExpression(left)) return
136
+
137
+ if (!types.isFunctionExpression(right)) return
138
+
139
+ if (!types.isMemberExpression(left.object)) return
140
+
141
+ if (!types.isIdentifier(left.object.object, { name: '__webpack_require__' })) return
142
+
143
+ if (!types.isIdentifier(left.object.property, { name: 'f' })) return
144
+
145
+ if (!types.isIdentifier(left.property, { name: 'miniCss' })) return
146
+
147
+ const isProcessed = right.params.some((item) => {
148
+ return types.isIdentifier(item, { name: 'dynamicStylesheetChunkId' })
149
+ })
150
+
151
+ if (isProcessed) return
152
+
153
+ const cssChunksValueAst: Array<ObjectMethod | ObjectProperty | SpreadElement> = []
154
+
155
+ assignmentExpressionNodePath.traverse({
156
+ VariableDeclarator: (nodePath: NodePath<VariableDeclarator>) => {
157
+ const { id, init } = nodePath.node || {}
158
+ if (!types.isIdentifier(id, { name: 'cssChunks' })) return
159
+ if (!types.isObjectExpression(init)) return
160
+ cssChunksValueAst.push(...init.properties)
161
+ }
162
+ })
163
+
164
+ const CSS_CHUNKS = types.objectExpression(cssChunksValueAst)
165
+
166
+ const templateCodeAst = template.statement(webpackLoadDynamicStylesheetTemplate)({ CSS_CHUNKS })
167
+
168
+ assignmentExpressionNodePath.replaceWith(templateCodeAst)
169
+ }
170
+
171
+ const webpackLoadStylesheetTemplate = `
172
+ loadStylesheet = function (chunkId) {
173
+ const href = __webpack_require__.miniCssF(chunkId);
174
+ const fullHref = __webpack_require__.p + href;
175
+ const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
176
+ const [,dynamicPackageName] = fullHref.match(dynamicPackageNameRegex) || [];
177
+ const { SingletonPromise } = require('~/singleton-promise.js');
178
+ return SingletonPromise.wait(dynamicPackageName)
130
179
  }
131
180
  `
132
181
 
133
- const replaceLoadStylesheetFn = (nodePath: NodePath<VariableDeclarator>) => {
182
+ const replaceLoadStylesheetFn = (nodePath: NodePath<VariableDeclarator>, opts: Opts) => {
134
183
  const { id, init } = nodePath.node || {}
135
184
  if (!types.isIdentifier(id, { name: 'loadStylesheet' })) return
136
185
  if (!types.isFunctionExpression(init)) return
137
186
  const isProcessed = !init.params.length
138
187
  if (isProcessed) return
139
- const templateCodeAst = template.expression(webpackLoadDynamicModuleStylesheetTemplate)()
188
+ const { dynamicPackageNamePrefix } = opts
189
+ const DYNAMIC_PACKAGE_NAME_REGEX = types.regExpLiteral(`(${dynamicPackageNamePrefix}(?:-[a-z]{2})?)\\/`)
190
+ const templateCodeAst = template.expression(webpackLoadStylesheetTemplate)({ DYNAMIC_PACKAGE_NAME_REGEX })
140
191
  nodePath.replaceWith(templateCodeAst)
141
192
  }
142
193
 
@@ -157,9 +208,10 @@ export const transformWebpackRuntime = (code: string, opts: Opts) => {
157
208
  traverse(ast, {
158
209
  AssignmentExpression: (nodePath: NodePath<AssignmentExpression>) => {
159
210
  replaceWebpackLoadScriptFn(nodePath, opts)
211
+ replaceWebpackLoadDynamicModuleStylesheetFn(nodePath)
160
212
  },
161
213
  VariableDeclarator (nodePath: NodePath<VariableDeclarator>) {
162
- replaceLoadStylesheetFn(nodePath)
214
+ replaceLoadStylesheetFn(nodePath, opts)
163
215
  removeCreateStylesheetFn(nodePath)
164
216
  removeFindStylesheetFn(nodePath)
165
217
  }