@mpxjs/webpack-plugin 2.10.6-beta.5 → 2.10.6-beta.7

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/lib/index.js CHANGED
@@ -48,6 +48,7 @@ const RecordFileUrlDependency = require('./dependencies/RecordFileUrlDependency'
48
48
  const SplitChunksPlugin = require('webpack/lib/optimize/SplitChunksPlugin')
49
49
  const fixRelative = require('./utils/fix-relative')
50
50
  const parseRequest = require('./utils/parse-request')
51
+ const { transAsyncSubNameRules, transAsyncSubRules } = require('./utils/trans-async-sub-rules')
51
52
  const { matchCondition } = require('./utils/match-condition')
52
53
  const processDefs = require('./utils/process-defs')
53
54
  const config = require('./config')
@@ -778,6 +779,7 @@ class MpxWebpackPlugin {
778
779
  })
779
780
  },
780
781
  asyncSubpackageRules: this.options.asyncSubpackageRules,
782
+ asyncSubpackageNameMap: this.options.asyncSubpackageNameMap,
781
783
  optimizeRenderRules: this.options.optimizeRenderRules,
782
784
  pathHash: (resourcePath) => {
783
785
  if (this.options.pathHashMode === 'relative' && this.options.projectRoot) {
@@ -1406,20 +1408,16 @@ class MpxWebpackPlugin {
1406
1408
  const range = expr.arguments[0].range
1407
1409
  const context = parser.state.module.context
1408
1410
  const { queryObj, resourcePath } = parseRequest(request)
1409
- let tarRoot = queryObj.root
1410
- if (!tarRoot && mpx.asyncSubpackageRules) {
1411
- for (const item of mpx.asyncSubpackageRules) {
1412
- if (matchCondition(resourcePath, item)) {
1413
- tarRoot = item.root
1414
- break
1415
- }
1416
- }
1417
- }
1411
+ let tarRoot = transAsyncSubRules(resourcePath, mpx.asyncSubpackageRules, queryObj.root)
1418
1412
  if (tarRoot) {
1419
1413
  // 删除root query
1420
1414
  if (queryObj.root) request = addQuery(request, {}, false, ['root'])
1421
1415
  // wx、ali和web平台支持require.async,其余平台使用CommonJsAsyncDependency进行模拟抹平
1422
- if (mpx.supportRequireAsync) {
1416
+ if (isWeb(mpx.mode) || isReact(mpx.mode)) {
1417
+ // web 和 react 平台支持分包名转换,如果转换tarRoot为空,则降级到主包
1418
+ tarRoot = transAsyncSubNameRules(mpx.asyncSubpackageNameMap, tarRoot)
1419
+ }
1420
+ if (mpx.supportRequireAsync && tarRoot) {
1423
1421
  if (isWeb(mpx.mode) || isReact(mpx.mode)) {
1424
1422
  const depBlock = new AsyncDependenciesBlock(
1425
1423
  {
@@ -8,6 +8,7 @@ const addQuery = require('../utils/add-query')
8
8
  const parseComponent = require('../parser')
9
9
  const getJSONContent = require('../utils/get-json-content')
10
10
  const resolve = require('../utils/resolve')
11
+ const { transAsyncSubNameRules } = require('../utils/trans-async-sub-rules')
11
12
  const createJSONHelper = require('../json-compiler/helper')
12
13
  const getRulesRunner = require('../platform/index')
13
14
  const { RESOLVE_IGNORED_ERR } = require('../utils/const')
@@ -285,6 +286,8 @@ module.exports = function (jsonContent, {
285
286
 
286
287
  pagesMap[resourcePath] = outputPath
287
288
  loaderContext._module && loaderContext._module.addPresentationalDependency(new RecordResourceMapDependency(resourcePath, 'page', outputPath))
289
+ // 通过asyncSubPackagesNameRules对tarRoot进行修改,仅修改tarRoot,不修改outputPath页面路径
290
+ tarRoot = transAsyncSubNameRules(mpx.asyncSubpackageNameMap, tarRoot)
288
291
  localPagesMap[outputPath] = {
289
292
  resource: addQuery(resource, { isPage: true }),
290
293
  async: queryObj.async || tarRoot,
@@ -332,6 +335,7 @@ module.exports = function (jsonContent, {
332
335
  const fillComponentsMap = (name, entry, tarRoot) => {
333
336
  const { resource, outputPath } = entry
334
337
  const { resourcePath, queryObj } = parseRequest(resource)
338
+ tarRoot = transAsyncSubNameRules(mpx.asyncSubpackageNameMap, tarRoot)
335
339
  componentsMap[resourcePath] = outputPath
336
340
  loaderContext._module && loaderContext._module.addPresentationalDependency(new RecordResourceMapDependency(resourcePath, 'component', outputPath))
337
341
  localComponentsMap[name] = {
@@ -0,0 +1,34 @@
1
+ const { matchCondition } = require('./match-condition')
2
+
3
+ function transAsyncSubNameRules (asyncSubpackageNameRules, tarRoot) {
4
+ // 如果没有tarRoot,则无需进行tarRoot的修改,因此
5
+ if (tarRoot && Array.isArray(asyncSubpackageNameRules) && asyncSubpackageNameRules.length >= 1) {
6
+ for (const item of asyncSubpackageNameRules) {
7
+ if (item?.from) {
8
+ const fromPaths = Array.isArray(item.from) ? item.from : [item.from];
9
+ if (fromPaths.includes(tarRoot)) {
10
+ tarRoot = item.to
11
+ break
12
+ }
13
+ }
14
+ }
15
+ }
16
+ return tarRoot
17
+ }
18
+
19
+ function transAsyncSubRules (resourcePath, asyncSubpackageRules, tarRoot) {
20
+ if (!tarRoot && Array.isArray(asyncSubpackageRules) && asyncSubpackageRules.length >= 1) {
21
+ for (const item of asyncSubpackageRules) {
22
+ if (matchCondition(resourcePath, item)) {
23
+ tarRoot = item.root
24
+ break
25
+ }
26
+ }
27
+ }
28
+ return tarRoot
29
+ }
30
+
31
+ module.exports = {
32
+ transAsyncSubNameRules,
33
+ transAsyncSubRules
34
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mpxjs/webpack-plugin",
3
- "version": "2.10.6-beta.5",
3
+ "version": "2.10.6-beta.7",
4
4
  "description": "mpx compile core",
5
5
  "keywords": [
6
6
  "mpx"