@mpxjs/webpack-plugin 2.6.110 → 2.7.0-beta.10
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/dependencies/AppEntryDependency.js +56 -0
- package/lib/dependencies/CommonJsVariableDependency.js +69 -0
- package/lib/dependencies/DynamicEntryDependency.js +131 -0
- package/lib/dependencies/FlagPluginDependency.js +23 -0
- package/lib/dependencies/InjectDependency.js +43 -0
- package/lib/dependencies/RecordGlobalComponentsDependency.js +50 -0
- package/lib/dependencies/RecordResourceMapDependency.js +52 -0
- package/lib/dependencies/RemoveEntryDependency.js +40 -0
- package/lib/{dependency → dependencies}/ReplaceDependency.js +19 -2
- package/lib/dependencies/ResolveDependency.js +84 -0
- package/lib/extractor.js +73 -178
- package/lib/file-loader.js +7 -19
- package/lib/helpers.js +42 -330
- package/lib/index.js +497 -376
- package/lib/json-compiler/helper.js +148 -0
- package/lib/json-compiler/index.js +195 -439
- package/lib/json-compiler/plugin.js +150 -0
- package/lib/json-compiler/{theme-loader.js → theme.js} +5 -3
- package/lib/loader.js +107 -226
- package/lib/native-loader.js +65 -132
- package/lib/parser.js +1 -2
- package/lib/record-loader.js +11 -0
- package/lib/{path-loader.js → resolve-loader.js} +0 -0
- package/lib/resolver/AddEnvPlugin.js +3 -2
- package/lib/resolver/AddModePlugin.js +3 -2
- package/lib/runtime/base.styl +5 -0
- package/lib/runtime/i18n.wxs +3 -3
- package/lib/runtime/optionProcessor.js +3 -3
- package/lib/selector.js +9 -11
- package/lib/style-compiler/index.js +12 -19
- package/lib/template-compiler/compiler.js +21 -162
- package/lib/template-compiler/index.js +47 -136
- package/lib/url-loader.js +11 -29
- package/lib/utils/add-query.js +1 -1
- package/lib/utils/const.js +9 -0
- package/lib/utils/emit-file.js +10 -0
- package/lib/utils/eval-json-js.js +31 -0
- package/lib/utils/get-entry-name.js +13 -0
- package/lib/utils/get-json-content.js +41 -0
- package/lib/utils/is-url-request.js +10 -1
- package/lib/utils/normalize.js +0 -13
- package/lib/utils/parse-request.js +3 -3
- package/lib/utils/resolve.js +13 -0
- package/lib/utils/set.js +47 -0
- package/lib/utils/stringify-loaders-resource.js +25 -0
- package/lib/utils/stringify-query.js +4 -0
- package/lib/web/processJSON.js +113 -142
- package/lib/web/processScript.js +32 -26
- package/lib/web/processTemplate.js +57 -39
- package/lib/wxml/{wxml-loader.js → loader.js} +24 -60
- package/lib/wxs/WxsModuleIdsPlugin.js +32 -0
- package/lib/wxs/WxsParserPlugin.js +2 -2
- package/lib/wxs/WxsPlugin.js +4 -8
- package/lib/wxs/WxsTemplatePlugin.js +46 -92
- package/lib/wxs/{wxs-i18n-loader.js → i18n-loader.js} +1 -3
- package/lib/wxs/{wxs-loader.js → loader.js} +41 -50
- package/lib/wxs/{wxs-pre-loader.js → pre-loader.js} +3 -4
- package/lib/wxss/loader.js +31 -43
- package/lib/wxss/localsLoader.js +1 -5
- package/package.json +5 -9
- package/lib/built-in-loader.js +0 -49
- package/lib/content-loader.js +0 -13
- package/lib/dependency/ChildCompileDependency.js +0 -24
- package/lib/dependency/InjectDependency.js +0 -26
- package/lib/dependency/RemovedModuleDependency.js +0 -23
- package/lib/dependency/ResolveDependency.js +0 -49
- package/lib/plugin-loader.js +0 -287
- package/lib/staticConfig.js +0 -4
- package/lib/utils/get-main-compilation.js +0 -6
- package/lib/utils/read-json-for-src.js +0 -34
- package/lib/utils/try-require.js +0 -16
- package/lib/wxss/getImportPrefix.js +0 -30
package/lib/native-loader.js
CHANGED
|
@@ -1,39 +1,29 @@
|
|
|
1
1
|
const path = require('path')
|
|
2
2
|
const JSON5 = require('json5')
|
|
3
3
|
const parseRequest = require('./utils/parse-request')
|
|
4
|
-
const loaderUtils = require('loader-utils')
|
|
5
4
|
const config = require('./config')
|
|
6
5
|
const createHelpers = require('./helpers')
|
|
7
|
-
const
|
|
8
|
-
const addQuery = require('./utils/add-query')
|
|
9
|
-
const mpxJSON = require('./utils/mpx-json')
|
|
6
|
+
const getJSONContent = require('./utils/get-json-content')
|
|
10
7
|
const async = require('async')
|
|
11
8
|
const matchCondition = require('./utils/match-condition')
|
|
12
9
|
const fixUsingComponent = require('./utils/fix-using-component')
|
|
13
|
-
const
|
|
10
|
+
const { JSON_JS_EXT } = require('./utils/const')
|
|
14
11
|
|
|
15
12
|
module.exports = function (content) {
|
|
16
13
|
this.cacheable()
|
|
17
14
|
|
|
18
|
-
const
|
|
19
|
-
const mpx = mainCompilation.__mpx__
|
|
15
|
+
const mpx = this.getMpx()
|
|
20
16
|
if (!mpx) {
|
|
21
17
|
return content
|
|
22
18
|
}
|
|
23
19
|
|
|
24
20
|
const nativeCallback = this.async()
|
|
25
|
-
|
|
26
21
|
const loaderContext = this
|
|
27
22
|
const isProduction = this.minimize || process.env.NODE_ENV === 'production'
|
|
28
|
-
const options = Object.assign({}, mpx.loaderOptions, loaderUtils.getOptions(this))
|
|
29
|
-
|
|
30
23
|
const filePath = this.resourcePath
|
|
31
|
-
|
|
32
24
|
const moduleId = 'm' + mpx.pathHash(filePath)
|
|
33
25
|
const { resourcePath, queryObj } = parseRequest(this.resource)
|
|
34
|
-
const projectRoot = mpx.projectRoot
|
|
35
26
|
const mode = mpx.mode
|
|
36
|
-
const defs = mpx.defs
|
|
37
27
|
const globalSrcMode = mpx.srcMode
|
|
38
28
|
const localSrcMode = queryObj.mode
|
|
39
29
|
const packageName = queryObj.packageRoot || mpx.currentPackageRoot || 'main'
|
|
@@ -41,14 +31,12 @@ module.exports = function (content) {
|
|
|
41
31
|
const componentsMap = mpx.componentsMap[packageName]
|
|
42
32
|
const parsed = path.parse(resourcePath)
|
|
43
33
|
const resourceName = path.join(parsed.dir, parsed.name)
|
|
44
|
-
const isApp = !pagesMap[resourcePath]
|
|
34
|
+
const isApp = !(pagesMap[resourcePath] || componentsMap[resourcePath])
|
|
45
35
|
const srcMode = localSrcMode || globalSrcMode
|
|
46
|
-
const fs = this._compiler.inputFileSystem
|
|
47
36
|
const typeExtMap = config[srcMode].typeExtMap
|
|
48
37
|
const typeResourceMap = {}
|
|
49
38
|
const autoScope = matchCondition(resourcePath, mpx.autoScopeRules)
|
|
50
39
|
|
|
51
|
-
const EXT_MPX_JSON = '.json.js'
|
|
52
40
|
const CSS_LANG_EXT_MAP = {
|
|
53
41
|
less: '.less',
|
|
54
42
|
stylus: '.styl',
|
|
@@ -56,36 +44,14 @@ module.exports = function (content) {
|
|
|
56
44
|
scss: '.scss'
|
|
57
45
|
}
|
|
58
46
|
|
|
59
|
-
let
|
|
47
|
+
let useJSONJS = false
|
|
60
48
|
let cssLang = ''
|
|
61
49
|
const hasScoped = (queryObj.scoped || autoScope) && mode === 'ali'
|
|
62
50
|
const hasComment = false
|
|
63
51
|
const isNative = true
|
|
64
52
|
|
|
65
|
-
const tryEvalMPXJSON = (callback) => {
|
|
66
|
-
const { rawResourcePath } = parseRequest(typeResourceMap['json'])
|
|
67
|
-
const _src = rawResourcePath
|
|
68
|
-
this.addDependency(_src)
|
|
69
|
-
fs.readFile(_src, (err, raw) => {
|
|
70
|
-
if (err) {
|
|
71
|
-
callback(err)
|
|
72
|
-
} else {
|
|
73
|
-
try {
|
|
74
|
-
const source = raw.toString('utf-8')
|
|
75
|
-
const text = mpxJSON.compileMPXJSONText({ source, defs, filePath: _src })
|
|
76
|
-
callback(null, text)
|
|
77
|
-
} catch (e) {
|
|
78
|
-
callback(e)
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
})
|
|
82
|
-
}
|
|
83
|
-
|
|
84
53
|
const checkFileExists = (extName, callback) => {
|
|
85
|
-
this.resolve(parsed.dir, resourceName + extName,
|
|
86
|
-
err = null
|
|
87
|
-
callback(err, result)
|
|
88
|
-
})
|
|
54
|
+
this.resolve(parsed.dir, resourceName + extName, callback)
|
|
89
55
|
}
|
|
90
56
|
|
|
91
57
|
function checkCSSLangFiles (callback) {
|
|
@@ -99,7 +65,7 @@ module.exports = function (content) {
|
|
|
99
65
|
if (!err && result) {
|
|
100
66
|
results[i] = result
|
|
101
67
|
}
|
|
102
|
-
callback(
|
|
68
|
+
callback()
|
|
103
69
|
})
|
|
104
70
|
}, function (err) {
|
|
105
71
|
for (let i = 0; i < langs.length; i++) {
|
|
@@ -113,14 +79,13 @@ module.exports = function (content) {
|
|
|
113
79
|
})
|
|
114
80
|
}
|
|
115
81
|
|
|
116
|
-
function
|
|
117
|
-
|
|
118
|
-
checkFileExists(EXT_MPX_JSON, (err, result) => {
|
|
82
|
+
function checkJSONJSFile (callback) {
|
|
83
|
+
checkFileExists(JSON_JS_EXT, (err, result) => {
|
|
119
84
|
if (!err && result) {
|
|
120
85
|
typeResourceMap.json = result
|
|
121
|
-
|
|
86
|
+
useJSONJS = true
|
|
122
87
|
}
|
|
123
|
-
callback(
|
|
88
|
+
callback()
|
|
124
89
|
})
|
|
125
90
|
}
|
|
126
91
|
|
|
@@ -129,109 +94,88 @@ module.exports = function (content) {
|
|
|
129
94
|
(callback) => {
|
|
130
95
|
async.parallel([
|
|
131
96
|
checkCSSLangFiles,
|
|
132
|
-
|
|
97
|
+
checkJSONJSFile
|
|
133
98
|
], (err) => {
|
|
134
99
|
callback(err)
|
|
135
100
|
})
|
|
136
101
|
},
|
|
137
102
|
(callback) => {
|
|
138
103
|
async.forEachOf(typeExtMap, (ext, key, callback) => {
|
|
139
|
-
// 检测到
|
|
140
|
-
if (
|
|
104
|
+
// 检测到jsonjs或cssLang时跳过对应类型文件检测
|
|
105
|
+
if (typeResourceMap[key]) {
|
|
141
106
|
return callback()
|
|
142
107
|
}
|
|
143
108
|
checkFileExists(ext, (err, result) => {
|
|
144
109
|
if (!err && result) {
|
|
145
110
|
typeResourceMap[key] = result
|
|
146
111
|
}
|
|
147
|
-
callback(
|
|
112
|
+
callback()
|
|
148
113
|
})
|
|
149
114
|
}, callback)
|
|
150
115
|
},
|
|
151
116
|
(callback) => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
if (typeResourceMap['json']) {
|
|
157
|
-
// eslint-disable-next-line handle-callback-err
|
|
158
|
-
const { rawResourcePath } = parseRequest(typeResourceMap['json'])
|
|
159
|
-
fs.readFile(rawResourcePath, (err, raw) => {
|
|
160
|
-
if (err) {
|
|
161
|
-
callback(err)
|
|
162
|
-
} else {
|
|
163
|
-
callback(null, raw.toString('utf-8'))
|
|
164
|
-
}
|
|
165
|
-
})
|
|
166
|
-
} else {
|
|
167
|
-
callback(null, '{}')
|
|
168
|
-
}
|
|
169
|
-
}
|
|
117
|
+
getJSONContent({
|
|
118
|
+
src: typeResourceMap.json,
|
|
119
|
+
useJSONJS
|
|
120
|
+
}, this, callback)
|
|
170
121
|
}, (content, callback) => {
|
|
171
|
-
let
|
|
122
|
+
let json
|
|
172
123
|
try {
|
|
173
|
-
|
|
174
|
-
if (ret.usingComponents) {
|
|
175
|
-
fixUsingComponent(ret.usingComponents, mode)
|
|
176
|
-
usingComponents = usingComponents.concat(Object.keys(ret.usingComponents))
|
|
177
|
-
}
|
|
124
|
+
json = JSON5.parse(content)
|
|
178
125
|
} catch (e) {
|
|
126
|
+
return callback(e)
|
|
127
|
+
}
|
|
128
|
+
let usingComponents = Object.keys(mpx.usingComponents)
|
|
129
|
+
if (json.usingComponents) {
|
|
130
|
+
fixUsingComponent(json.usingComponents, mode)
|
|
131
|
+
usingComponents = usingComponents.concat(Object.keys(json.usingComponents))
|
|
179
132
|
}
|
|
180
133
|
const {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
srcMode,
|
|
191
|
-
isNative,
|
|
192
|
-
projectRoot
|
|
193
|
-
})
|
|
194
|
-
|
|
195
|
-
const getRequire = (type) => {
|
|
196
|
-
const localQuery = Object.assign({}, queryObj)
|
|
197
|
-
let src = typeResourceMap[type]
|
|
198
|
-
localQuery.resourcePath = resourcePath
|
|
199
|
-
if (type !== 'script') {
|
|
200
|
-
this.addDependency(src)
|
|
201
|
-
}
|
|
202
|
-
if (type === 'template' && isApp) {
|
|
203
|
-
return ''
|
|
204
|
-
}
|
|
205
|
-
if (type === 'json' && !useMPXJSON) {
|
|
206
|
-
localQuery.__component = true
|
|
207
|
-
}
|
|
208
|
-
src = addQuery(src, localQuery, true)
|
|
209
|
-
const partsOpts = { src }
|
|
134
|
+
getRequire
|
|
135
|
+
} = createHelpers(loaderContext)
|
|
136
|
+
|
|
137
|
+
const getRequireByType = (type) => {
|
|
138
|
+
const src = typeResourceMap[type]
|
|
139
|
+
const part = { src }
|
|
140
|
+
const extraOptions = Object.assign({}, queryObj, {
|
|
141
|
+
resourcePath
|
|
142
|
+
})
|
|
210
143
|
|
|
211
|
-
|
|
212
|
-
|
|
144
|
+
switch (type) {
|
|
145
|
+
case 'template':
|
|
146
|
+
if (isApp) return ''
|
|
147
|
+
Object.assign(extraOptions, {
|
|
148
|
+
hasScoped,
|
|
149
|
+
hasComment,
|
|
150
|
+
isNative,
|
|
151
|
+
moduleId,
|
|
152
|
+
usingComponents
|
|
153
|
+
})
|
|
154
|
+
break
|
|
155
|
+
case 'styles':
|
|
156
|
+
if (cssLang) part.lang = cssLang
|
|
157
|
+
Object.assign(extraOptions, {
|
|
158
|
+
moduleId,
|
|
159
|
+
scoped: hasScoped
|
|
160
|
+
})
|
|
161
|
+
break
|
|
162
|
+
case 'json':
|
|
163
|
+
if (useJSONJS) part.useJSONJS = true
|
|
164
|
+
break
|
|
213
165
|
}
|
|
214
|
-
|
|
215
|
-
if (cssLang) {
|
|
216
|
-
partsOpts.lang = cssLang
|
|
217
|
-
}
|
|
218
|
-
if (hasScoped) {
|
|
219
|
-
return getRequireForSrc(type, partsOpts, 0, true)
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
return getRequireForSrc(type, partsOpts)
|
|
166
|
+
return getRequire(type, part, extraOptions)
|
|
223
167
|
}
|
|
224
168
|
|
|
225
169
|
// 注入模块id及资源路径
|
|
226
|
-
let
|
|
170
|
+
let output = `global.currentModuleId = ${JSON.stringify(moduleId)}\n`
|
|
227
171
|
if (!isProduction) {
|
|
228
|
-
|
|
172
|
+
output += `global.currentResource = ${JSON.stringify(filePath)}\n`
|
|
229
173
|
}
|
|
230
174
|
|
|
231
175
|
// 注入构造函数
|
|
232
176
|
let ctor = 'App'
|
|
233
177
|
if (pagesMap[resourcePath]) {
|
|
234
|
-
if (mpx.forceUsePageCtor || mode === 'ali') {
|
|
178
|
+
if (mpx.forceUsePageCtor || mode === 'ali' || mode === 'swan') {
|
|
235
179
|
ctor = 'Page'
|
|
236
180
|
} else {
|
|
237
181
|
ctor = 'Component'
|
|
@@ -239,28 +183,17 @@ module.exports = function (content) {
|
|
|
239
183
|
} else if (componentsMap[resourcePath]) {
|
|
240
184
|
ctor = 'Component'
|
|
241
185
|
}
|
|
242
|
-
|
|
243
|
-
|
|
186
|
+
output += `global.currentCtor = ${ctor}\n`
|
|
187
|
+
output += `global.currentCtorType = ${JSON.stringify(ctor.replace(/^./, (match) => {
|
|
244
188
|
return match.toLowerCase()
|
|
245
189
|
}))}\n`
|
|
246
190
|
|
|
247
191
|
if (srcMode) {
|
|
248
|
-
|
|
192
|
+
output += `global.currentSrcMode = ${JSON.stringify(srcMode)}\n`
|
|
249
193
|
}
|
|
250
194
|
|
|
251
|
-
if (!mpx.forceDisableInject) {
|
|
252
|
-
const dep = new InjectDependency({
|
|
253
|
-
content: globalInjectCode,
|
|
254
|
-
index: -3
|
|
255
|
-
})
|
|
256
|
-
this._module.addDependency(dep)
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// 触发webpack global var 注入
|
|
260
|
-
let output = 'global.currentModuleId;\n'
|
|
261
|
-
|
|
262
195
|
for (let type in typeResourceMap) {
|
|
263
|
-
output += `/* ${type} */\n${
|
|
196
|
+
output += `/* ${type} */\n${getRequireByType(type)}\n\n`
|
|
264
197
|
}
|
|
265
198
|
|
|
266
199
|
callback(null, output)
|
package/lib/parser.js
CHANGED
|
@@ -6,7 +6,7 @@ const SourceMapGenerator = require('source-map').SourceMapGenerator
|
|
|
6
6
|
const splitRE = /\r?\n/g
|
|
7
7
|
const emptyRE = /^(?:\/\/)?\s*$/
|
|
8
8
|
|
|
9
|
-
module.exports = (content, { filePath, needMap, mode,
|
|
9
|
+
module.exports = (content, { filePath, needMap, mode, env }) => {
|
|
10
10
|
// 缓存需要mode隔离,不同mode经过区块条件编译parseComponent得到的内容并不一致
|
|
11
11
|
const cacheKey = hash(filePath + content + mode + env)
|
|
12
12
|
|
|
@@ -14,7 +14,6 @@ module.exports = (content, { filePath, needMap, mode, defs, env }) => {
|
|
|
14
14
|
if (output) return JSON.parse(output)
|
|
15
15
|
output = compiler.parseComponent(content, {
|
|
16
16
|
mode,
|
|
17
|
-
defs,
|
|
18
17
|
filePath,
|
|
19
18
|
pad: 'line',
|
|
20
19
|
env
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const parseRequest = require('./utils/parse-request')
|
|
2
|
+
const RecordResourceMapDependency = require('./dependencies/RecordResourceMapDependency')
|
|
3
|
+
|
|
4
|
+
module.exports = function (source) {
|
|
5
|
+
const mpx = this.getMpx()
|
|
6
|
+
const { resourcePath, queryObj } = parseRequest(this.resource)
|
|
7
|
+
const file = mpx.getExtractedFile(this.resource)
|
|
8
|
+
const packageRoot = queryObj.packageRoot || ''
|
|
9
|
+
this._module.addPresentationalDependency(new RecordResourceMapDependency(resourcePath, 'staticResource', file, packageRoot))
|
|
10
|
+
return source
|
|
11
|
+
}
|
|
File without changes
|
|
@@ -3,6 +3,7 @@ const stringifyQuery = require('../utils/stringify-query')
|
|
|
3
3
|
const parseQuery = require('loader-utils').parseQuery
|
|
4
4
|
const addInfix = require('../utils/add-infix')
|
|
5
5
|
const matchCondition = require('../utils/match-condition')
|
|
6
|
+
const { JSON_JS_EXT } = require('../utils/const')
|
|
6
7
|
|
|
7
8
|
module.exports = class AddEnvPlugin {
|
|
8
9
|
constructor (source, env, fileConditionRules, target) {
|
|
@@ -24,8 +25,8 @@ module.exports = class AddEnvPlugin {
|
|
|
24
25
|
}
|
|
25
26
|
const resourcePath = request.path
|
|
26
27
|
let extname = ''
|
|
27
|
-
if (resourcePath.endsWith(
|
|
28
|
-
extname =
|
|
28
|
+
if (resourcePath.endsWith(JSON_JS_EXT)) {
|
|
29
|
+
extname = JSON_JS_EXT
|
|
29
30
|
} else {
|
|
30
31
|
extname = path.extname(resourcePath)
|
|
31
32
|
}
|
|
@@ -3,6 +3,7 @@ const stringifyQuery = require('../utils/stringify-query')
|
|
|
3
3
|
const parseQuery = require('loader-utils').parseQuery
|
|
4
4
|
const matchCondition = require('../utils/match-condition')
|
|
5
5
|
const addInfix = require('../utils/add-infix')
|
|
6
|
+
const { JSON_JS_EXT } = require('../utils/const')
|
|
6
7
|
|
|
7
8
|
module.exports = class AddModePlugin {
|
|
8
9
|
constructor (source, mode, fileConditionRules, target) {
|
|
@@ -24,8 +25,8 @@ module.exports = class AddModePlugin {
|
|
|
24
25
|
}
|
|
25
26
|
const resourcePath = request.path
|
|
26
27
|
let extname = ''
|
|
27
|
-
if (resourcePath.endsWith(
|
|
28
|
-
extname =
|
|
28
|
+
if (resourcePath.endsWith(JSON_JS_EXT)) {
|
|
29
|
+
extname = JSON_JS_EXT
|
|
29
30
|
} else {
|
|
30
31
|
extname = path.extname(resourcePath)
|
|
31
32
|
}
|
package/lib/runtime/base.styl
CHANGED
|
@@ -120,3 +120,8 @@ html, body, .app {
|
|
|
120
120
|
font-family "weui"
|
|
121
121
|
src url('data:application/octet-stream;base64,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') format('truetype')
|
|
122
122
|
}
|
|
123
|
+
|
|
124
|
+
.mpx-root-view {
|
|
125
|
+
display: inline
|
|
126
|
+
line-height: normal
|
|
127
|
+
}
|
package/lib/runtime/i18n.wxs
CHANGED
|
@@ -265,17 +265,17 @@ var dateTimeFormats = {}
|
|
|
265
265
|
var numberFormats = {}
|
|
266
266
|
|
|
267
267
|
function getMessages () {
|
|
268
|
-
// __mpx_messages__会在编译时通过lib/wxs/
|
|
268
|
+
// __mpx_messages__会在编译时通过lib/wxs/i18n-loader注入
|
|
269
269
|
return __mpx_messages__ || messages
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
function getDateTimeFormats () {
|
|
273
|
-
// __mpx_datetime_formats__会在编译时通过lib/wxs/
|
|
273
|
+
// __mpx_datetime_formats__会在编译时通过lib/wxs/i18n-loader注入
|
|
274
274
|
return __mpx_datetime_formats__ || dateTimeFormats
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
function getNumberFormats () {
|
|
278
|
-
// __mpx_number_formats__会在编译时通过lib/wxs/
|
|
278
|
+
// __mpx_number_formats__会在编译时通过lib/wxs/i18n-loader注入
|
|
279
279
|
return __mpx_number_formats__ || numberFormats
|
|
280
280
|
}
|
|
281
281
|
|
|
@@ -4,7 +4,7 @@ export default function processOption (
|
|
|
4
4
|
option,
|
|
5
5
|
ctorType,
|
|
6
6
|
firstPage,
|
|
7
|
-
|
|
7
|
+
outputPath,
|
|
8
8
|
pageConfig,
|
|
9
9
|
pagesMap,
|
|
10
10
|
componentsMap,
|
|
@@ -339,8 +339,8 @@ registered in parent context!`)
|
|
|
339
339
|
option.mixins = [mixin]
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
if (
|
|
343
|
-
option.componentPath = '/' +
|
|
342
|
+
if (outputPath) {
|
|
343
|
+
option.componentPath = '/' + outputPath
|
|
344
344
|
}
|
|
345
345
|
|
|
346
346
|
return option
|
package/lib/selector.js
CHANGED
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
const parseComponent = require('./parser')
|
|
2
|
-
const
|
|
3
|
-
const getMainCompilation = require('./utils/get-main-compilation')
|
|
2
|
+
const parseRequest = require('./utils/parse-request')
|
|
4
3
|
|
|
5
4
|
module.exports = function (content) {
|
|
6
5
|
this.cacheable()
|
|
7
|
-
|
|
8
|
-
const mpx =
|
|
6
|
+
// todo 移除mpx访问依赖,支持thread-loader
|
|
7
|
+
const mpx = this.getMpx()
|
|
9
8
|
if (!mpx) {
|
|
10
9
|
return content
|
|
11
10
|
}
|
|
11
|
+
const { queryObj } = parseRequest(this.resource)
|
|
12
|
+
const type = queryObj.type
|
|
13
|
+
const index = queryObj.index || 0
|
|
12
14
|
const mode = mpx.mode
|
|
13
15
|
const env = mpx.env
|
|
14
|
-
const defs = mpx.defs
|
|
15
|
-
const query = loaderUtils.getOptions(this) || {}
|
|
16
16
|
const filePath = this.resourcePath
|
|
17
17
|
const parts = parseComponent(content, {
|
|
18
18
|
filePath,
|
|
19
19
|
needMap: this.sourceMap,
|
|
20
20
|
mode,
|
|
21
|
-
defs,
|
|
22
21
|
env
|
|
23
22
|
})
|
|
24
|
-
let part = parts[
|
|
23
|
+
let part = parts[type]
|
|
25
24
|
if (Array.isArray(part)) {
|
|
26
|
-
part = part[
|
|
27
|
-
content: ''
|
|
28
|
-
}
|
|
25
|
+
part = part[index]
|
|
29
26
|
}
|
|
27
|
+
part = part || { content: '' }
|
|
30
28
|
this.callback(null, part.content, part.map)
|
|
31
29
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
const getMainCompilation = require('../utils/get-main-compilation')
|
|
2
1
|
const postcss = require('postcss')
|
|
3
|
-
const loaderUtils = require('loader-utils')
|
|
4
2
|
const loadPostcssConfig = require('./load-postcss-config')
|
|
5
|
-
const { MPX_ROOT_VIEW, MPX_APP_MODULE_ID } = require('../
|
|
3
|
+
const { MPX_ROOT_VIEW, MPX_APP_MODULE_ID } = require('../utils/const')
|
|
6
4
|
const trim = require('./plugins/trim')
|
|
7
5
|
const rpx = require('./plugins/rpx')
|
|
8
6
|
const vw = require('./plugins/vw')
|
|
@@ -15,18 +13,14 @@ const parseRequest = require('../utils/parse-request')
|
|
|
15
13
|
module.exports = function (css, map) {
|
|
16
14
|
this.cacheable()
|
|
17
15
|
const cb = this.async()
|
|
18
|
-
const loaderOptions = loaderUtils.getOptions(this) || {}
|
|
19
|
-
const mainCompilation = getMainCompilation(this._compilation)
|
|
20
|
-
const mpx = mainCompilation.__mpx__
|
|
21
|
-
const defs = mpx.defs
|
|
22
16
|
const { resourcePath, queryObj } = parseRequest(this.resource)
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
17
|
+
const id = queryObj.moduleId || queryObj.mid
|
|
18
|
+
const mpx = this.getMpx()
|
|
19
|
+
const appInfo = mpx.appInfo
|
|
20
|
+
const defs = mpx.defs
|
|
21
|
+
const mode = mpx.mode
|
|
22
|
+
const isApp = resourcePath === appInfo.resourcePath
|
|
28
23
|
const transRpxRulesRaw = mpx.transRpxRules
|
|
29
|
-
|
|
30
24
|
const transRpxRules = transRpxRulesRaw ? (Array.isArray(transRpxRulesRaw) ? transRpxRulesRaw : [transRpxRulesRaw]) : []
|
|
31
25
|
|
|
32
26
|
const testResolveRange = (include = () => true, exclude) => {
|
|
@@ -45,13 +39,12 @@ module.exports = function (css, map) {
|
|
|
45
39
|
config.options
|
|
46
40
|
)
|
|
47
41
|
// ali环境处理host选择器
|
|
48
|
-
if (
|
|
49
|
-
plugins.push(transSpecial({ id
|
|
42
|
+
if (mode === 'ali') {
|
|
43
|
+
plugins.push(transSpecial({ id }))
|
|
50
44
|
}
|
|
51
45
|
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
plugins.push(scopeId({ id: moduleId }))
|
|
46
|
+
if (queryObj.scoped) {
|
|
47
|
+
plugins.push(scopeId({ id }))
|
|
55
48
|
}
|
|
56
49
|
|
|
57
50
|
plugins.push(pluginCondStrip({
|
|
@@ -90,7 +83,7 @@ module.exports = function (css, map) {
|
|
|
90
83
|
.process(css, options)
|
|
91
84
|
.then(result => {
|
|
92
85
|
// ali环境添加全局样式抹平root差异
|
|
93
|
-
if (
|
|
86
|
+
if (mode === 'ali' && isApp) {
|
|
94
87
|
result.css += `\n.${MPX_ROOT_VIEW} { display: initial }\n.${MPX_APP_MODULE_ID} { line-height: normal }`
|
|
95
88
|
}
|
|
96
89
|
if (result.messages) {
|