@tarojs/webpack5-runner 3.5.0-beta.0 → 3.5.0-beta.3
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/dist/index.h5.js +94 -92
- package/dist/index.h5.js.map +1 -1
- package/dist/index.mini.js +11 -2
- package/dist/index.mini.js.map +1 -1
- package/dist/plugins/BuildNativePlugin.js +4 -5
- package/dist/plugins/BuildNativePlugin.js.map +1 -1
- package/dist/plugins/H5Plugin.js +23 -12
- package/dist/plugins/H5Plugin.js.map +1 -1
- package/dist/plugins/MiniPlugin.js +34 -11
- package/dist/plugins/MiniPlugin.js.map +1 -1
- package/dist/plugins/MiniSplitChunksPlugin.js.map +1 -1
- package/dist/plugins/TaroLoadChunksPlugin.js +13 -34
- package/dist/plugins/TaroLoadChunksPlugin.js.map +1 -1
- package/dist/plugins/TaroNormalModulesPlugin.js.map +1 -1
- package/dist/postcss/postcss.h5.js +44 -24
- package/dist/postcss/postcss.h5.js.map +1 -1
- package/dist/prerender/prerender.js.map +1 -1
- package/dist/utils/H5AppInstance.js.map +1 -1
- package/dist/utils/webpack.js +28 -1
- package/dist/utils/webpack.js.map +1 -1
- package/dist/webpack/BaseConfig.js.map +1 -1
- package/dist/webpack/BuildNativePlugin.js.map +1 -1
- package/dist/webpack/Combination.js +16 -6
- package/dist/webpack/Combination.js.map +1 -1
- package/dist/webpack/H5Combination.js +15 -5
- package/dist/webpack/H5Combination.js.map +1 -1
- package/dist/webpack/H5WebpackModule.js +6 -5
- package/dist/webpack/H5WebpackModule.js.map +1 -1
- package/dist/webpack/H5WebpackPlugin.js +26 -6
- package/dist/webpack/H5WebpackPlugin.js.map +1 -1
- package/dist/webpack/MiniCombination.js.map +1 -1
- package/dist/webpack/MiniWebpackPlugin.js +1 -1
- package/dist/webpack/MiniWebpackPlugin.js.map +1 -1
- package/package.json +17 -19
- package/dist/prebundle/bundle.js +0 -170
- package/dist/prebundle/bundle.js.map +0 -1
- package/dist/prebundle/constant.js +0 -60
- package/dist/prebundle/constant.js.map +0 -1
- package/dist/prebundle/index.h5.js +0 -235
- package/dist/prebundle/index.h5.js.map +0 -1
- package/dist/prebundle/index.mini.js +0 -251
- package/dist/prebundle/index.mini.js.map +0 -1
- package/dist/prebundle/scanImports.js +0 -186
- package/dist/prebundle/scanImports.js.map +0 -1
- package/dist/prebundle/utils.js +0 -173
- package/dist/prebundle/utils.js.map +0 -1
- package/dist/prebundle/webpack/TaroContainerEntryModule.js +0 -79
- package/dist/prebundle/webpack/TaroContainerEntryModule.js.map +0 -1
- package/dist/prebundle/webpack/TaroContainerPlugin.js +0 -73
- package/dist/prebundle/webpack/TaroContainerPlugin.js.map +0 -1
- package/dist/prebundle/webpack/TaroContainerReferencePlugin.js +0 -127
- package/dist/prebundle/webpack/TaroContainerReferencePlugin.js.map +0 -1
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
/**
|
|
7
|
-
* Modify from https://github.com/webpack/webpack/blob/main/lib/container/ContainerEntryModule.js
|
|
8
|
-
* MIT License http://www.opensource.org/licenses/mit-license.php
|
|
9
|
-
* Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr
|
|
10
|
-
*/
|
|
11
|
-
const webpack_1 = __importDefault(require("webpack"));
|
|
12
|
-
const ContainerEntryModule = require('webpack/lib/container/ContainerEntryModule');
|
|
13
|
-
const RuntimeGlobals = require('webpack/lib/RuntimeGlobals');
|
|
14
|
-
const Template = require('webpack/lib/Template');
|
|
15
|
-
const { ConcatSource } = require('webpack-sources');
|
|
16
|
-
class TaroContainerEntryModule extends ContainerEntryModule {
|
|
17
|
-
// eslint-disable-next-line no-useless-constructor
|
|
18
|
-
constructor(name, exposes, shareScope) {
|
|
19
|
-
super(name, exposes, shareScope);
|
|
20
|
-
}
|
|
21
|
-
codeGeneration({ moduleGraph, chunkGraph, runtimeTemplate }) {
|
|
22
|
-
const result = super.codeGeneration({ moduleGraph, chunkGraph, runtimeTemplate });
|
|
23
|
-
const originSource = result.sources.get('javascript');
|
|
24
|
-
const newSources = new ConcatSource(originSource);
|
|
25
|
-
const runtimeRequirements = new Set([
|
|
26
|
-
RuntimeGlobals.definePropertyGetters,
|
|
27
|
-
RuntimeGlobals.hasOwnProperty,
|
|
28
|
-
RuntimeGlobals.exports
|
|
29
|
-
]);
|
|
30
|
-
const getters = [];
|
|
31
|
-
for (const block of this.blocks) {
|
|
32
|
-
const { dependencies } = block;
|
|
33
|
-
const modules = dependencies.map(dependency => {
|
|
34
|
-
const dep = dependency;
|
|
35
|
-
return {
|
|
36
|
-
name: dep.exposedName,
|
|
37
|
-
module: moduleGraph.getModule(dep),
|
|
38
|
-
request: dep.userRequest
|
|
39
|
-
};
|
|
40
|
-
});
|
|
41
|
-
const str = `return ${runtimeTemplate.returningFunction(`(${modules
|
|
42
|
-
.map(({ module, request }) => runtimeTemplate.moduleRaw({
|
|
43
|
-
module,
|
|
44
|
-
chunkGraph,
|
|
45
|
-
request,
|
|
46
|
-
weak: false,
|
|
47
|
-
runtimeRequirements
|
|
48
|
-
}))
|
|
49
|
-
.join(', ')})`)};`;
|
|
50
|
-
getters.push(`${JSON.stringify(modules[0].name)}: ${runtimeTemplate.basicFunction('', str)}`);
|
|
51
|
-
}
|
|
52
|
-
const res = Template.asString([
|
|
53
|
-
'\n',
|
|
54
|
-
'var taroModuleMap = {',
|
|
55
|
-
Template.indent(getters.join(',\n')),
|
|
56
|
-
'};',
|
|
57
|
-
`var taroGet = ${runtimeTemplate.basicFunction('module', [
|
|
58
|
-
'return taroModuleMap[module]();'
|
|
59
|
-
])};`,
|
|
60
|
-
'__webpack_require__.taro(taroGet);'
|
|
61
|
-
]);
|
|
62
|
-
newSources.add(res);
|
|
63
|
-
result.sources.set('javascript', newSources);
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.default = TaroContainerEntryModule;
|
|
68
|
-
webpack_1.default.util.serialization.register(TaroContainerEntryModule, '@tarojs/webpack5-runner/dist/prebundle/TaroContainerEntryModule', 'TaroContainerEntryModule', {
|
|
69
|
-
serialize(obj, context) {
|
|
70
|
-
obj.serialize(context);
|
|
71
|
-
},
|
|
72
|
-
deserialize(context) {
|
|
73
|
-
const { read } = context;
|
|
74
|
-
const obj = new TaroContainerEntryModule(read(), read(), read());
|
|
75
|
-
obj.deserialize(context);
|
|
76
|
-
return obj;
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
//# sourceMappingURL=TaroContainerEntryModule.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TaroContainerEntryModule.js","sourceRoot":"","sources":["../../../src/prebundle/webpack/TaroContainerEntryModule.ts"],"names":[],"mappings":";;;;;AAAA;;;;GAIG;AACH,sDAA6B;AAE7B,MAAM,oBAAoB,GAAG,OAAO,CAAC,4CAA4C,CAAC,CAAA;AAClF,MAAM,cAAc,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAA;AAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;AAChD,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEnD,MAAqB,wBAAyB,SAAQ,oBAAoB;IACxE,kDAAkD;IAClD,YAAa,IAAI,EAAE,OAAO,EAAE,UAAU;QACpC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;IAClC,CAAC;IAED,cAAc,CAAE,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAA;QACjF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAA;QAEjD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;YAClC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,cAAc;YAC7B,cAAc,CAAC,OAAO;SACvB,CAAC,CAAA;QACF,MAAM,OAAO,GAAa,EAAE,CAAA;QAE5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;YAE9B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBAC5C,MAAM,GAAG,GAAG,UAAU,CAAA;gBACtB,OAAO;oBACL,IAAI,EAAE,GAAG,CAAC,WAAW;oBACrB,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;oBAClC,OAAO,EAAE,GAAG,CAAC,WAAW;iBACzB,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,GAAG,GAAG,UAAU,eAAe,CAAC,iBAAiB,CACrD,IAAI,OAAO;iBACR,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAC3B,eAAe,CAAC,SAAS,CAAC;gBACxB,MAAM;gBACN,UAAU;gBACV,OAAO;gBACP,IAAI,EAAE,KAAK;gBACX,mBAAmB;aACpB,CAAC,CACH;iBACA,IAAI,CAAC,IAAI,CAAC,GAAG,CAElB,GAAG,CAAA;YAEH,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,aAAa,CAClE,EAAE,EACF,GAAG,CACJ,EAAE,CACJ,CAAA;SACF;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC5B,IAAI;YACJ,uBAAuB;YACvB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI;YACJ,iBAAiB,eAAe,CAAC,aAAa,CAAC,QAAQ,EAAE;gBACvD,iCAAiC;aAClC,CAAC,GAAG;YACL,oCAAoC;SACrC,CAAC,CAAA;QAEF,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEnB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AArED,2CAqEC;AAED,iBAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,wBAAwB,EAAE,iEAAiE,EAAE,0BAA0B,EAAE;IAC3J,SAAS,CAAE,GAAG,EAAE,OAAO;QACrB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IACD,WAAW,CAAE,OAAO;QAClB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QACxB,MAAM,GAAG,GAAG,IAAI,wBAAwB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAChE,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACxB,OAAO,GAAG,CAAA;IACZ,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const TaroContainerEntryModule_1 = __importDefault(require("./TaroContainerEntryModule"));
|
|
16
|
-
const ContainerEntryDependency = require('webpack/lib/container/ContainerEntryDependency');
|
|
17
|
-
const ContainerEntryModuleFactory = require('webpack/lib/container/ContainerEntryModuleFactory');
|
|
18
|
-
const PLUGIN_NAME = 'TaroContainerPlugin';
|
|
19
|
-
class TaroContainerEntryModuleFactory extends ContainerEntryModuleFactory {
|
|
20
|
-
create(data, callback) {
|
|
21
|
-
const dep = data === null || data === void 0 ? void 0 : data.dependencies[0];
|
|
22
|
-
callback(null, {
|
|
23
|
-
module: new TaroContainerEntryModule_1.default(dep.name, dep.exposes, dep.shareScope)
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 劫持 ContainerEntryDependency,把生成的 Module 替换为 TaroContainerEntryModule
|
|
29
|
-
* 目的是修改 remoteEntry.js 的 container module 输出:
|
|
30
|
-
* 1. 插入 taroModuleMap 把异步逻辑改为同步
|
|
31
|
-
* 2. 插入自动注册模块的逻辑
|
|
32
|
-
*/
|
|
33
|
-
class TaroContainerPlugin {
|
|
34
|
-
constructor(runtimeRequirements) {
|
|
35
|
-
this.runtimeRequirements = runtimeRequirements;
|
|
36
|
-
}
|
|
37
|
-
apply(compiler) {
|
|
38
|
-
compiler.hooks.thisCompilation.tap({
|
|
39
|
-
name: PLUGIN_NAME,
|
|
40
|
-
stage: 100
|
|
41
|
-
}, compilation => {
|
|
42
|
-
compilation.dependencyFactories.set(ContainerEntryDependency, new TaroContainerEntryModuleFactory());
|
|
43
|
-
/**
|
|
44
|
-
* 收集打包 Remote 应用时使用到的 Webpack runtime 工具函数。
|
|
45
|
-
* 因为小程序中 Remote 应用也使用 Host 应用的 runtime,所以
|
|
46
|
-
* Host 应用的 Webpack runtime 需要增加上 Remote 应用使用到的工具函数。
|
|
47
|
-
*/
|
|
48
|
-
compilation.hooks.afterRuntimeRequirements.tap(PLUGIN_NAME, () => {
|
|
49
|
-
const chunkGraphEntries = compilation._getChunkGraphEntries();
|
|
50
|
-
for (const chunk of chunkGraphEntries) {
|
|
51
|
-
if (chunk.name === 'runtime') {
|
|
52
|
-
const chunkGraph = compilation.chunkGraph;
|
|
53
|
-
const cgc = chunkGraph._getChunkGraphChunk(chunk);
|
|
54
|
-
const runtimeRequirements = cgc.runtimeRequirementsInTree;
|
|
55
|
-
runtimeRequirements.forEach(item => this.runtimeRequirements.add(item));
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
/**
|
|
60
|
-
* 删除多余的 assets
|
|
61
|
-
* - entry chunk
|
|
62
|
-
* - remote runtime chunk
|
|
63
|
-
*/
|
|
64
|
-
compilation.hooks.processAssets.tapAsync(PLUGIN_NAME, (assets, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
delete assets['main.js'];
|
|
66
|
-
delete assets['runtime.js'];
|
|
67
|
-
callback();
|
|
68
|
-
}));
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
exports.default = TaroContainerPlugin;
|
|
73
|
-
//# sourceMappingURL=TaroContainerPlugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TaroContainerPlugin.js","sourceRoot":"","sources":["../../../src/prebundle/webpack/TaroContainerPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAOA,0FAAiE;AAEjE,MAAM,wBAAwB,GAAG,OAAO,CAAC,gDAAgD,CAAC,CAAA;AAC1F,MAAM,2BAA2B,GAAG,OAAO,CAAC,mDAAmD,CAAC,CAAA;AAEhG,MAAM,WAAW,GAAG,qBAAqB,CAAA;AACzC,MAAM,+BAAgC,SAAQ,2BAA2B;IACvE,MAAM,CAAE,IAAI,EAAE,QAAQ;QACpB,MAAM,GAAG,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC,CAAC,CAAC,CAAA;QACjC,QAAQ,CAAC,IAAI,EAAE;YACb,MAAM,EAAE,IAAI,kCAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;SAC5E,CAAC,CAAA;IACJ,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,mBAAmB;IAGvB,YAAa,mBAAmB;QAC9B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;IAChD,CAAC;IAED,KAAK,CAAE,QAA0B;QAC/B,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAChC;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG;SACX,EACD,WAAW,CAAC,EAAE;YACZ,WAAW,CAAC,mBAAmB,CAAC,GAAG,CACjC,wBAAwB,EACxB,IAAI,+BAA+B,EAAE,CACtC,CAAA;YAED;;;;eAIG;YACH,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAC5C,WAAW,EACX,GAAG,EAAE;gBACH,MAAM,iBAAiB,GAAI,WAAmB,CAAC,qBAAqB,EAAE,CAAA;gBACtE,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE;oBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;wBAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;wBACzC,MAAM,GAAG,GAAI,UAAkB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;wBAC1D,MAAM,mBAAmB,GAAG,GAAG,CAAC,yBAAyB,CAAA;wBACzD,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;qBACxE;iBACF;YACH,CAAC,CACF,CAAA;YAED;;;;eAIG;YACH,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CACtC,WAAW,EACX,CAAO,MAAM,EAAE,QAAa,EAAE,EAAE;gBAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,MAAM,CAAC,YAAY,CAAC,CAAA;gBAC3B,QAAQ,EAAE,CAAA;YACZ,CAAC,CAAA,CACF,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC;CACF;AAED,kBAAe,mBAAmB,CAAA"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
/**
|
|
7
|
-
* Modify from https://github.com/webpack/webpack/blob/main/lib/container/ContainerReferencePlugin.js
|
|
8
|
-
* MIT License http://www.opensource.org/licenses/mit-license.php
|
|
9
|
-
* Author Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy
|
|
10
|
-
*/
|
|
11
|
-
const helper_1 = require("@tarojs/helper");
|
|
12
|
-
const webpack_1 = __importDefault(require("webpack"));
|
|
13
|
-
const webpack_sources_1 = require("webpack-sources");
|
|
14
|
-
const TaroLoadChunksPlugin_1 = require("../../plugins/TaroLoadChunksPlugin");
|
|
15
|
-
const webpack_2 = require("../../utils/webpack");
|
|
16
|
-
const RemoteModule = require('webpack/lib/container/RemoteModule');
|
|
17
|
-
const PLUGIN_NAME = 'TaroContainerReferencePlugin';
|
|
18
|
-
class TaroRemoteRuntimeModule extends webpack_1.default.RuntimeModule {
|
|
19
|
-
constructor() {
|
|
20
|
-
super('remotes loading');
|
|
21
|
-
}
|
|
22
|
-
generate() {
|
|
23
|
-
const { compilation, chunkGraph } = this;
|
|
24
|
-
const { runtimeTemplate, moduleGraph } = compilation;
|
|
25
|
-
const chunkToRemotesMapping = {};
|
|
26
|
-
const idToExternalAndNameMapping = {};
|
|
27
|
-
for (const chunk of compilation.chunks) {
|
|
28
|
-
const modules = (chunkGraph.getChunkModulesIterableBySourceType(chunk, 'remote'));
|
|
29
|
-
if (!modules)
|
|
30
|
-
continue;
|
|
31
|
-
const remotes = (chunkToRemotesMapping[chunk.id] = []);
|
|
32
|
-
for (const m of modules) {
|
|
33
|
-
const module = m;
|
|
34
|
-
const name = module.internalRequest;
|
|
35
|
-
const id = chunkGraph.getModuleId(module);
|
|
36
|
-
const shareScope = module.shareScope;
|
|
37
|
-
const dep = module.dependencies[0];
|
|
38
|
-
const externalModule = moduleGraph.getModule(dep);
|
|
39
|
-
const externalModuleId = externalModule && chunkGraph.getModuleId(externalModule);
|
|
40
|
-
remotes.push(id);
|
|
41
|
-
idToExternalAndNameMapping[id] = [shareScope, name, externalModuleId];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return webpack_1.default.Template.asString([
|
|
45
|
-
`var chunkMapping = ${JSON.stringify(chunkToRemotesMapping, null, '\t')};`,
|
|
46
|
-
`var idToExternalAndNameMapping = ${JSON.stringify(idToExternalAndNameMapping, null, '\t')};`,
|
|
47
|
-
`${webpack_1.default.RuntimeGlobals.require}.taro = ${runtimeTemplate.basicFunction('get', [
|
|
48
|
-
'for (var id in idToExternalAndNameMapping) {',
|
|
49
|
-
webpack_1.default.Template.indent([
|
|
50
|
-
'var mappedName = idToExternalAndNameMapping[id][1];',
|
|
51
|
-
'var factory = get(mappedName);',
|
|
52
|
-
`__webpack_modules__[id] = (${runtimeTemplate.basicFunction('factory', [`return ${runtimeTemplate.basicFunction('module', ['module.exports = factory();'])}`])})(factory);`
|
|
53
|
-
]),
|
|
54
|
-
'}'
|
|
55
|
-
])};`
|
|
56
|
-
]);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
class TaroContainerReferencePlugin {
|
|
60
|
-
constructor(options, deps, remoteAssets, runtimeRequirements) {
|
|
61
|
-
this.deps = deps;
|
|
62
|
-
this.remoteAssets = remoteAssets;
|
|
63
|
-
this.remoteName = Object.keys(options.remotes)[0];
|
|
64
|
-
this.runtimeRequirements = runtimeRequirements;
|
|
65
|
-
}
|
|
66
|
-
apply(compiler) {
|
|
67
|
-
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation, { normalModuleFactory }) => {
|
|
68
|
-
/**
|
|
69
|
-
* 把预编译的依赖改为 Remote module 的形式
|
|
70
|
-
* 例如把 import '@tarojs/taro' 改为 import 'lib-app/@tarojs/taro'
|
|
71
|
-
*/
|
|
72
|
-
normalModuleFactory.hooks.factorize.tap(PLUGIN_NAME, data => {
|
|
73
|
-
if (!data.request.includes('!')) {
|
|
74
|
-
for (const dep of this.deps.keys()) {
|
|
75
|
-
if (data.request === dep || data.request === '@tarojs/runtime') {
|
|
76
|
-
return new RemoteModule(data.request, [`webpack/container/reference/${this.remoteName}`], `./${data.request}`, 'default' // share scope
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
/**
|
|
83
|
-
* 修改 webpack runtime
|
|
84
|
-
* 1. 注入一些 webpack 内置的工具函数(remote 打包时注入了,而 host 里没有,需要补全,后续改为自动补全)
|
|
85
|
-
* 2. 修改 webpack/runtime/remotes 模块的输出
|
|
86
|
-
* a) 生成 id 映射对象 idToExternalAndNameMapping
|
|
87
|
-
* b) 插入自动注册模块的逻辑
|
|
88
|
-
*/
|
|
89
|
-
compilation.hooks.additionalTreeRuntimeRequirements.tap(PLUGIN_NAME, (chunk, set) => {
|
|
90
|
-
// webpack runtime 增加 Rmote runtime 使用到的工具函数
|
|
91
|
-
this.runtimeRequirements.forEach(item => set.add(item));
|
|
92
|
-
compilation.addRuntimeModule(chunk, new TaroRemoteRuntimeModule());
|
|
93
|
-
});
|
|
94
|
-
/**
|
|
95
|
-
* 在 dist/app.js 头部注入 require,
|
|
96
|
-
* 依赖所有的预编译 chunk 和 remoteEntry
|
|
97
|
-
*/
|
|
98
|
-
const hooks = webpack_1.default.javascript.JavascriptModulesPlugin.getCompilationHooks(compilation);
|
|
99
|
-
hooks.render.tap(PLUGIN_NAME, (modules, { chunk }) => {
|
|
100
|
-
var _a;
|
|
101
|
-
const chunkEntryModule = (0, webpack_2.getChunkEntryModule)(compilation, chunk);
|
|
102
|
-
if (chunkEntryModule) {
|
|
103
|
-
const entryModule = (_a = chunkEntryModule.rootModule) !== null && _a !== void 0 ? _a : chunkEntryModule;
|
|
104
|
-
if (entryModule.miniType === helper_1.META_TYPE.ENTRY) {
|
|
105
|
-
return (0, TaroLoadChunksPlugin_1.addRequireToSource)((0, TaroLoadChunksPlugin_1.getIdOrName)(chunk), modules, this.remoteAssets);
|
|
106
|
-
}
|
|
107
|
-
return modules;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
return modules;
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
/**
|
|
114
|
-
* 模块 "webpack/container/reference/lib-app" 用于网络加载 remoteEntry.js,
|
|
115
|
-
* 在小程序环境则不需要了,因此将模块输出改为空字符串,减少不必要的代码
|
|
116
|
-
*/
|
|
117
|
-
hooks.renderModuleContent.tap(PLUGIN_NAME, (source, module) => {
|
|
118
|
-
if (module.userRequest === `webpack/container/reference/${this.remoteName}`) {
|
|
119
|
-
return new webpack_sources_1.RawSource('');
|
|
120
|
-
}
|
|
121
|
-
return source;
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
module.exports = TaroContainerReferencePlugin;
|
|
127
|
-
//# sourceMappingURL=TaroContainerReferencePlugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TaroContainerReferencePlugin.js","sourceRoot":"","sources":["../../../src/prebundle/webpack/TaroContainerReferencePlugin.ts"],"names":[],"mappings":"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"}
|