-
Notifications
You must be signed in to change notification settings - Fork 389
Expand file tree
/
Copy pathindex.js
More file actions
107 lines (106 loc) · 3.01 KB
/
index.js
File metadata and controls
107 lines (106 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
const async = require('async')
const processJSON = require('./processJSON')
const processMainScript = require('./processMainScript')
const processTemplate = require('./processTemplate')
const processStyles = require('./processStyles')
const processScript = require('./processScript')
const RecordLoaderContentDependency = require('../dependencies/RecordLoaderContentDependency')
module.exports = function ({
parts,
jsonContent,
loaderContext,
pagesMap,
componentsMap,
queryObj,
ctorType,
srcMode,
moduleId,
isProduction,
hasScoped,
hasComment,
isNative,
usingComponentsInfo,
originalUsingComponents,
componentGenerics,
autoScope,
callback
}) {
if (ctorType === 'app' && !queryObj.isApp) {
return processMainScript({
loaderContext
}, (err, scriptRes) => {
if (err) return callback(err)
loaderContext.loaderIndex = -1
return callback(null, scriptRes.output)
})
}
const mpx = loaderContext.getMpx()
const rnConfig = mpx.rnConfig
// 通过RecordLoaderContentDependency和loaderContentCache确保子request不再重复生成loaderContent
const cacheContent = mpx.loaderContentCache.get(loaderContext.resourcePath)
if (cacheContent) return callback(null, cacheContent)
let output = ''
return async.waterfall([
(callback) => {
async.parallel([
(callback) => {
processTemplate(parts.template, {
loaderContext,
hasScoped,
hasComment,
isNative,
srcMode,
moduleId,
ctorType,
usingComponentsInfo,
originalUsingComponents,
componentGenerics
}, callback)
},
(callback) => {
processStyles(parts.styles, {
loaderContext,
ctorType,
autoScope,
moduleId
}, callback)
},
(callback) => {
processJSON(jsonContent, {
loaderContext,
ctorType,
pagesMap,
componentsMap
}, callback)
}
], (err, res) => {
callback(err, res)
})
},
([templateRes, stylesRes, jsonRes], callback) => {
output += templateRes.output
output += stylesRes.output
output += jsonRes.output
processScript(parts.script, {
loaderContext,
ctorType,
srcMode,
moduleId,
isProduction,
jsonConfig: jsonRes.jsonObj,
outputPath: queryObj.outputPath || '',
builtInComponentsMap: templateRes.builtInComponentsMap,
genericsInfo: templateRes.genericsInfo,
wxsModuleMap: templateRes.wxsModuleMap,
localComponentsMap: jsonRes.localComponentsMap,
localPagesMap: jsonRes.localPagesMap,
rnConfig
}, callback)
}
], (err, scriptRes) => {
if (err) return callback(err)
output += scriptRes.output
loaderContext._module.addPresentationalDependency(new RecordLoaderContentDependency(loaderContext.resourcePath, output))
callback(null, output)
})
}