@mpxjs/webpack-plugin 2.6.115 → 2.7.0-alpha

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.
Files changed (129) hide show
  1. package/LICENSE +433 -0
  2. package/README.md +1 -1
  3. package/lib/config.js +14 -0
  4. package/lib/dependencies/AddEntryDependency.js +24 -0
  5. package/lib/dependencies/AppEntryDependency.js +58 -0
  6. package/lib/dependencies/CommonJsAsyncDependency.js +51 -0
  7. package/lib/dependencies/CommonJsVariableDependency.js +81 -0
  8. package/lib/dependencies/DynamicEntryDependency.js +171 -0
  9. package/lib/dependencies/FlagPluginDependency.js +24 -0
  10. package/lib/dependencies/InjectDependency.js +43 -0
  11. package/lib/dependencies/RecordGlobalComponentsDependency.js +50 -0
  12. package/lib/dependencies/RecordIndependentDependency.js +44 -0
  13. package/lib/dependencies/RecordResourceMapDependency.js +62 -0
  14. package/lib/dependencies/RemoveEntryDependency.js +40 -0
  15. package/lib/{dependency → dependencies}/ReplaceDependency.js +19 -2
  16. package/lib/dependencies/ResolveDependency.js +88 -0
  17. package/lib/extractor.js +82 -178
  18. package/lib/file-loader.js +7 -19
  19. package/lib/helpers.js +39 -334
  20. package/lib/independent-loader.js +52 -0
  21. package/lib/index.js +889 -525
  22. package/lib/json-compiler/helper.js +156 -0
  23. package/lib/json-compiler/index.js +245 -451
  24. package/lib/json-compiler/plugin.js +150 -0
  25. package/lib/json-compiler/{theme-loader.js → theme.js} +5 -3
  26. package/lib/loader.js +178 -241
  27. package/lib/native-loader.js +71 -133
  28. package/lib/parser.js +1 -2
  29. package/lib/partial-compile/index.js +35 -0
  30. package/lib/platform/json/wx/index.js +1 -1
  31. package/lib/platform/template/normalize-component-rules.js +2 -3
  32. package/lib/platform/template/wx/component-config/button.js +14 -2
  33. package/lib/platform/template/wx/component-config/image.js +4 -0
  34. package/lib/platform/template/wx/component-config/input.js +4 -0
  35. package/lib/platform/template/wx/component-config/rich-text.js +4 -0
  36. package/lib/platform/template/wx/component-config/scroll-view.js +4 -0
  37. package/lib/platform/template/wx/component-config/switch.js +4 -0
  38. package/lib/platform/template/wx/component-config/text.js +4 -0
  39. package/lib/platform/template/wx/component-config/textarea.js +5 -0
  40. package/lib/platform/template/wx/component-config/view.js +4 -0
  41. package/lib/platform/template/wx/index.js +149 -3
  42. package/lib/record-loader.js +11 -0
  43. package/lib/resolve-loader.js +6 -0
  44. package/lib/resolver/AddEnvPlugin.js +4 -3
  45. package/lib/resolver/AddModePlugin.js +4 -3
  46. package/lib/resolver/FixDescriptionInfoPlugin.js +28 -0
  47. package/lib/resolver/PackageEntryPlugin.js +23 -36
  48. package/lib/runtime/base.styl +5 -0
  49. package/lib/runtime/components/tenon/getInnerListeners.js +317 -0
  50. package/lib/runtime/components/tenon/tenon-button.vue +305 -0
  51. package/lib/runtime/components/tenon/tenon-image.vue +61 -0
  52. package/lib/runtime/components/tenon/tenon-input.vue +99 -0
  53. package/lib/runtime/components/tenon/tenon-rich-text.vue +21 -0
  54. package/lib/runtime/components/tenon/tenon-scroll-view.vue +124 -0
  55. package/lib/runtime/components/tenon/tenon-switch.vue +91 -0
  56. package/lib/runtime/components/tenon/tenon-text-area.vue +64 -0
  57. package/lib/runtime/components/tenon/tenon-text.vue +64 -0
  58. package/lib/runtime/components/tenon/tenon-view.vue +93 -0
  59. package/lib/runtime/components/tenon/util.js +44 -0
  60. package/lib/runtime/components/web/getInnerListeners.js +1 -3
  61. package/lib/runtime/components/web/mpx-image.vue +20 -5
  62. package/lib/runtime/components/web/mpx-movable-view.vue +6 -2
  63. package/lib/runtime/components/web/mpx-swiper.vue +18 -3
  64. package/lib/runtime/i18n.wxs +31 -11
  65. package/lib/runtime/optionProcessor.js +48 -3
  66. package/lib/runtime/optionProcessor.tenon.js +386 -0
  67. package/lib/selector.js +29 -10
  68. package/lib/style-compiler/index.js +16 -24
  69. package/lib/style-compiler/load-postcss-config.js +3 -1
  70. package/lib/style-compiler/plugins/conditional-strip.js +68 -65
  71. package/lib/style-compiler/plugins/hm.js +20 -0
  72. package/lib/style-compiler/plugins/rpx.js +43 -37
  73. package/lib/style-compiler/plugins/scope-id.js +79 -72
  74. package/lib/style-compiler/plugins/trans-special.js +25 -18
  75. package/lib/style-compiler/plugins/trim.js +13 -7
  76. package/lib/style-compiler/plugins/vw.js +22 -16
  77. package/lib/template-compiler/compiler.js +106 -199
  78. package/lib/template-compiler/index.js +52 -139
  79. package/lib/template-compiler/trans-dynamic-class-expr.js +18 -13
  80. package/lib/tenon/index.js +105 -0
  81. package/lib/tenon/processJSON.js +356 -0
  82. package/lib/tenon/processScript.js +261 -0
  83. package/lib/tenon/processStyles.js +21 -0
  84. package/lib/tenon/processTemplate.js +133 -0
  85. package/lib/url-loader.js +11 -29
  86. package/lib/utils/add-query.js +1 -1
  87. package/lib/utils/const.js +10 -0
  88. package/lib/utils/emit-file.js +10 -0
  89. package/lib/utils/eval-json-js.js +31 -0
  90. package/lib/utils/get-entry-name.js +13 -0
  91. package/lib/utils/get-json-content.js +42 -0
  92. package/lib/utils/get-relative-path.js +25 -0
  93. package/lib/utils/is-url-request.js +10 -1
  94. package/lib/utils/match-condition.js +4 -1
  95. package/lib/utils/normalize.js +4 -15
  96. package/lib/utils/parse-request.js +3 -3
  97. package/lib/utils/resolve.js +13 -0
  98. package/lib/utils/set.js +47 -0
  99. package/lib/utils/stringify-loaders-resource.js +25 -0
  100. package/lib/utils/stringify-query.js +4 -0
  101. package/lib/web/processJSON.js +113 -144
  102. package/lib/web/processScript.js +47 -34
  103. package/lib/web/processTemplate.js +57 -40
  104. package/lib/wxml/{wxml-loader.js → loader.js} +21 -62
  105. package/lib/wxs/WxsModuleIdsPlugin.js +29 -0
  106. package/lib/wxs/WxsParserPlugin.js +2 -2
  107. package/lib/wxs/WxsPlugin.js +4 -8
  108. package/lib/wxs/WxsTemplatePlugin.js +46 -92
  109. package/lib/wxs/{wxs-i18n-loader.js → i18n-loader.js} +5 -4
  110. package/lib/wxs/loader.js +142 -0
  111. package/lib/wxs/{wxs-pre-loader.js → pre-loader.js} +20 -5
  112. package/lib/wxss/loader.js +31 -43
  113. package/lib/wxss/localsLoader.js +1 -5
  114. package/lib/wxss/processCss.js +107 -103
  115. package/package.json +21 -18
  116. package/lib/built-in-loader.js +0 -49
  117. package/lib/content-loader.js +0 -13
  118. package/lib/dependency/ChildCompileDependency.js +0 -24
  119. package/lib/dependency/InjectDependency.js +0 -26
  120. package/lib/dependency/RemovedModuleDependency.js +0 -23
  121. package/lib/dependency/ResolveDependency.js +0 -49
  122. package/lib/path-loader.js +0 -3
  123. package/lib/plugin-loader.js +0 -287
  124. package/lib/staticConfig.js +0 -4
  125. package/lib/utils/get-main-compilation.js +0 -6
  126. package/lib/utils/read-json-for-src.js +0 -34
  127. package/lib/utils/try-require.js +0 -16
  128. package/lib/wxs/wxs-loader.js +0 -117
  129. package/lib/wxss/getImportPrefix.js +0 -30
@@ -1,117 +0,0 @@
1
- const NodeTargetPlugin = require('webpack/lib/node/NodeTargetPlugin')
2
- const SingleEntryPlugin = require('webpack/lib/SingleEntryPlugin')
3
- const LimitChunkCountPlugin = require('webpack/lib/optimize/LimitChunkCountPlugin')
4
- const path = require('path')
5
- const WxsPlugin = require('./WxsPlugin')
6
- const ChildCompileDependency = require('../dependency/ChildCompileDependency')
7
- const getMainCompilation = require('../utils/get-main-compilation')
8
- const parseRequest = require('../utils/parse-request')
9
- const toPosix = require('../utils/to-posix')
10
- const fixRelative = require('../utils/fix-relative')
11
- const config = require('../config')
12
-
13
- module.exports = function () {
14
- const nativeCallback = this.async()
15
- const mainCompilation = getMainCompilation(this._compilation)
16
- const mpx = mainCompilation.__mpx__
17
- const assetsInfo = mpx.assetsInfo
18
- const mode = mpx.mode
19
- const wxsMap = mpx.wxsMap
20
- const getOutputPath = mpx.getOutputPath
21
- const rootName = mainCompilation._preparedEntrypoints[0].name
22
- let { resourcePath, queryObj } = parseRequest(this.resource)
23
- const { resourcePath: issuerResourcePath, queryObj: issuerQueryObj } = parseRequest(queryObj.issuerResource || this._module.issuer.resource)
24
- const issuerPackageName = issuerQueryObj.packageRoot || mpx.currentPackageRoot || 'main'
25
- const pagesMap = mpx.pagesMap
26
- const componentsMap = mpx.componentsMap[issuerPackageName]
27
- const staticResourcesMap = mpx.staticResourcesMap[issuerPackageName]
28
- const issuerName = pagesMap[issuerResourcePath] || componentsMap[issuerResourcePath] || staticResourcesMap[issuerResourcePath] || rootName
29
- const issuerDir = path.dirname(issuerName)
30
-
31
- const getName = (raw) => {
32
- const match = /^(.*?)(\.[^.]*)?$/.exec(raw)
33
- return match[1]
34
- }
35
-
36
- const wxsModule = queryObj.wxsModule
37
- if (wxsModule) {
38
- resourcePath = `${resourcePath}~${wxsModule}`
39
- }
40
- const packageRoot = queryObj.packageRoot || ''
41
- const ext = config[mode].wxs.ext
42
- let filename = toPosix(path.join(packageRoot, getOutputPath(resourcePath, ext.slice(1), { ext })))
43
-
44
- filename = mpx.getPackageInfo({
45
- resource: this.resource,
46
- outputPath: filename,
47
- resourceType: 'staticResources',
48
- warn: (err) => {
49
- this.emitWarning(err)
50
- }
51
- }).outputPath
52
-
53
- const callback = (err) => {
54
- if (err) return nativeCallback(err)
55
- let relativePath = toPosix(path.relative(issuerDir, filename))
56
- relativePath = fixRelative(relativePath, mode)
57
- nativeCallback(null, `module.exports = ${JSON.stringify(relativePath)};`)
58
- }
59
-
60
- if (wxsMap[filename]) {
61
- wxsMap[filename].modules.push(this._module)
62
- return callback()
63
- }
64
-
65
- wxsMap[filename] = {
66
- dep: null,
67
- modules: [this._module]
68
- }
69
-
70
- const outputOptions = {
71
- filename
72
- }
73
- // wxs文件必须经过pre-loader
74
- const request = `!${this.remainingRequest}`
75
- const plugins = [
76
- new WxsPlugin({ mode }),
77
- new NodeTargetPlugin(),
78
- new SingleEntryPlugin(this.context, request, getName(filename)),
79
- new LimitChunkCountPlugin({ maxChunks: 1 })
80
- ]
81
-
82
- const childCompiler = mainCompilation.createChildCompiler(request, outputOptions, plugins)
83
-
84
- let entryModule
85
- childCompiler.hooks.thisCompilation.tap('MpxWebpackPlugin ', (compilation) => {
86
- compilation.hooks.succeedEntry.tap('MpxWebpackPlugin', (entry, name, module) => {
87
- entryModule = module
88
- const dep = new ChildCompileDependency(entryModule)
89
- wxsMap[filename].dep = dep
90
- })
91
- })
92
-
93
- childCompiler.hooks.afterCompile.tapAsync('MpxWebpackPlugin', (compilation, callback) => {
94
- Object.keys(compilation.assets).forEach((name) => {
95
- // 因为子编译会合并assetsInfo会互相覆盖,使用全局mpx对象收集完之后再合并到主assetsInfo中
96
- const assetInfo = assetsInfo.get(name) || { modules: [] }
97
- assetInfo.modules.push(entryModule)
98
- assetsInfo.set(name, assetInfo)
99
- })
100
- callback()
101
- })
102
-
103
- childCompiler.runAsChild((err, entries, compilation) => {
104
- if (err) return callback(err)
105
- if (compilation.errors.length > 0) {
106
- return callback(compilation.errors[0])
107
- }
108
-
109
- compilation.fileDependencies.forEach((dep) => {
110
- this.addDependency(dep)
111
- }, this)
112
- compilation.contextDependencies.forEach((dep) => {
113
- this.addContextDependency(dep)
114
- }, this)
115
- callback()
116
- })
117
- }
@@ -1,30 +0,0 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- Modified by @hiyuki
5
- */
6
- const normalize = require('../utils/normalize')
7
- const extractorPath = normalize.lib('extractor')
8
- const toPosix = require('../utils/to-posix')
9
-
10
- module.exports = function getImportPrefix (loaderContext, extract) {
11
- const selectorIndex = loaderContext.loaders.findIndex(({ path }) => {
12
- // 兼容windows路径
13
- return toPosix(path).indexOf('@mpxjs/webpack-plugin/lib/selector') !== -1
14
- })
15
- let loadersRequest = loaderContext.loaders.slice(
16
- loaderContext.loaderIndex,
17
- selectorIndex !== -1 ? selectorIndex : undefined
18
- ).map(function (x) {
19
- return x.request
20
- }).join('!')
21
- if (extract) {
22
- loadersRequest = extractorPath + '?' +
23
- JSON.stringify({
24
- type: 'styles',
25
- index: -1,
26
- fromImport: true
27
- }) + '!' + loadersRequest
28
- }
29
- return '-!' + loadersRequest + '!'
30
- }