@tarojs/rn-runner 3.5.6-alpha.2 → 3.5.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/__tests__/config.spec.ts +20 -1
- package/dist/config/conditional-file-store.js +57 -0
- package/dist/config/conditional-file-store.js.map +1 -0
- package/dist/config/config-holder.js +76 -0
- package/dist/config/config-holder.js.map +1 -0
- package/dist/config/index.js +57 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/preview.js +102 -0
- package/dist/config/preview.js.map +1 -0
- package/dist/config/terminal-reporter.js +103 -0
- package/dist/config/terminal-reporter.js.map +1 -0
- package/dist/index.js +182 -73
- package/dist/index.js.map +1 -1
- package/dist/utils.js +29 -0
- package/dist/utils.js.map +1 -0
- package/package.json +20 -5
- package/src/config/conditional-file-store.ts +47 -0
- package/src/config/config-holder.ts +70 -0
- package/src/config/index.ts +76 -0
- package/src/config/preview.ts +114 -0
- package/src/config/terminal-reporter.ts +96 -0
- package/src/index.ts +205 -72
- package/src/utils.ts +27 -0
- package/templates/index.js +0 -1
- package/templates/metro.config.js +0 -8
package/dist/index.js
CHANGED
|
@@ -9,44 +9,106 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const saveAssets_1 = require("@react-native-community/cli-plugin-metro/build/commands/bundle/saveAssets");
|
|
13
|
+
const cli_server_api_1 = require("@react-native-community/cli-server-api");
|
|
12
14
|
const helper_1 = require("@tarojs/helper");
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
15
|
+
const fse = require("fs-extra");
|
|
16
|
+
const Metro = require("metro");
|
|
17
|
+
const transformHelpers_1 = require("metro/src/lib/transformHelpers");
|
|
18
|
+
const Server = require("metro/src/Server");
|
|
19
|
+
const outputBundle = require("metro/src/shared/output/bundle");
|
|
20
|
+
const path = require("path");
|
|
21
|
+
const qr = require("qrcode-terminal");
|
|
22
|
+
const readline = require("readline");
|
|
23
|
+
const url = require("url");
|
|
24
|
+
const config_1 = require("./config");
|
|
17
25
|
const build_component_1 = require("./config/build-component");
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
const config_holder_1 = require("./config/config-holder");
|
|
27
|
+
const preview_1 = require("./config/preview");
|
|
28
|
+
const terminal_reporter_1 = require("./config/terminal-reporter");
|
|
29
|
+
const utils_1 = require("./utils");
|
|
30
|
+
function concatOutputFileName(config) {
|
|
31
|
+
// 优先级:--bundle-output > config.output > config.outputRoot
|
|
32
|
+
let output = path.join(config.outputRoot, 'index.bundle');
|
|
33
|
+
if (config.output) {
|
|
34
|
+
const outputType = typeof config.output;
|
|
35
|
+
if (outputType === 'string') {
|
|
36
|
+
output = config.output;
|
|
37
|
+
}
|
|
38
|
+
else if (outputType === 'object') {
|
|
39
|
+
output = config.output[config.deviceType];
|
|
40
|
+
if (!output) {
|
|
41
|
+
console.error(`lack value for 'rn.output' configuration with platform '${config.deviceType}': ${JSON.stringify(config.output)}`);
|
|
32
42
|
}
|
|
33
|
-
}
|
|
34
|
-
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.error(`invalid value for 'rn.output' configuration: ${JSON.stringify(config.output)}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (config.bundleOutput) {
|
|
49
|
+
output = config.bundleOutput;
|
|
50
|
+
}
|
|
51
|
+
const res = path.isAbsolute(output) ? output : path.join('.', output);
|
|
52
|
+
fse.ensureDirSync(path.dirname(res));
|
|
53
|
+
return res;
|
|
35
54
|
}
|
|
55
|
+
function concatOutputAssetsDest(config) {
|
|
56
|
+
// 优先级:--assets-dest > config.output > config.outputRoot
|
|
57
|
+
let assetDest;
|
|
58
|
+
if (!(config === null || config === void 0 ? void 0 : config.deviceType) || !(config === null || config === void 0 ? void 0 : config.output)) {
|
|
59
|
+
assetDest = config.outputRoot;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
assetDest = config.deviceType === 'ios' ? config.output.iosAssetsDest : config.output.androidAssetsDest;
|
|
63
|
+
}
|
|
64
|
+
if (config.assetsDest) {
|
|
65
|
+
assetDest = config.assetsDest;
|
|
66
|
+
}
|
|
67
|
+
if (!assetDest)
|
|
68
|
+
return undefined;
|
|
69
|
+
const res = path.isAbsolute(assetDest) ? assetDest : path.join('.', assetDest);
|
|
70
|
+
fse.ensureDirSync(path.dirname(res));
|
|
71
|
+
return res;
|
|
72
|
+
}
|
|
73
|
+
function getOutputSourceMapOption(config) {
|
|
74
|
+
var _a, _b, _c, _d, _e, _f;
|
|
75
|
+
if (!(config === null || config === void 0 ? void 0 : config.deviceType)) {
|
|
76
|
+
return {};
|
|
77
|
+
}
|
|
78
|
+
const isIos = config.deviceType === 'ios';
|
|
79
|
+
const sourceMapUrl = config.sourceMapUrl || (isIos ? (_a = config === null || config === void 0 ? void 0 : config.output) === null || _a === void 0 ? void 0 : _a.iosSourceMapUrl : (_b = config === null || config === void 0 ? void 0 : config.output) === null || _b === void 0 ? void 0 : _b.androidSourceMapUrl);
|
|
80
|
+
const sourcemapOutput = config.sourcemapOutput || (isIos ? (_c = config === null || config === void 0 ? void 0 : config.output) === null || _c === void 0 ? void 0 : _c.iosSourcemapOutput : (_d = config === null || config === void 0 ? void 0 : config.output) === null || _d === void 0 ? void 0 : _d.androidSourcemapOutput);
|
|
81
|
+
const sourcemapSourcesRoot = config.sourcemapSourcesRoot || (isIos ? (_e = config === null || config === void 0 ? void 0 : config.output) === null || _e === void 0 ? void 0 : _e.iosSourcemapSourcesRoot : (_f = config === null || config === void 0 ? void 0 : config.output) === null || _f === void 0 ? void 0 : _f.androidSourcemapSourcesRoot);
|
|
82
|
+
sourcemapOutput && fse.ensureDirSync(path.dirname(sourcemapOutput));
|
|
83
|
+
return {
|
|
84
|
+
sourceMapUrl,
|
|
85
|
+
sourcemapOutput,
|
|
86
|
+
sourcemapSourcesRoot
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// TODO: 返回值
|
|
90
|
+
// HttpServer | {code: string, map: string}
|
|
91
|
+
// IBuildConfig
|
|
36
92
|
function build(_appPath, config) {
|
|
37
93
|
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
confirmFiles();
|
|
39
94
|
process.env.TARO_ENV = helper_1.PLATFORMS.RN;
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
config.
|
|
43
|
-
|
|
95
|
+
// TODO:新增环境变量是否可以在metro构建过程中可以访问到?
|
|
96
|
+
const entry = (0, config_holder_1.getRNConfigEntry)();
|
|
97
|
+
config.entry = entry;
|
|
98
|
+
const metroConfig = yield (0, config_1.default)(config);
|
|
99
|
+
const sourceRoot = config.sourceRoot || 'src';
|
|
100
|
+
const commonOptions = {
|
|
101
|
+
platform: config.deviceType,
|
|
102
|
+
minify: process.env.NODE_ENV === 'production' || !config.isWatch,
|
|
103
|
+
dev: config.isWatch
|
|
104
|
+
};
|
|
44
105
|
if (config.resetCache) {
|
|
45
|
-
|
|
106
|
+
metroConfig.resetCache = config.resetCache;
|
|
46
107
|
}
|
|
47
108
|
if (config.publicPath) {
|
|
48
|
-
|
|
109
|
+
metroConfig.transformer.publicPath = config.publicPath;
|
|
49
110
|
}
|
|
111
|
+
metroConfig.reporter = new terminal_reporter_1.TerminalReporter(entry, sourceRoot, metroConfig.cacheStores[0]);
|
|
50
112
|
const onFinish = function (error) {
|
|
51
113
|
if (typeof config.onBuildFinish === 'function') {
|
|
52
114
|
config.onBuildFinish({
|
|
@@ -61,67 +123,114 @@ function build(_appPath, config) {
|
|
|
61
123
|
return (0, build_component_1.default)(_appPath, config);
|
|
62
124
|
}
|
|
63
125
|
else if (config.isWatch) {
|
|
126
|
+
if (!metroConfig.server || (metroConfig.server.useGlobalHotkey === undefined)) {
|
|
127
|
+
if (!metroConfig.server) {
|
|
128
|
+
metroConfig.server = {};
|
|
129
|
+
}
|
|
130
|
+
metroConfig.server.useGlobalHotkey = true;
|
|
131
|
+
}
|
|
64
132
|
if (config.port) {
|
|
65
|
-
|
|
133
|
+
metroConfig.server.port = config.port;
|
|
66
134
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
135
|
+
const { middleware, messageSocketEndpoint, websocketEndpoints } = (0, cli_server_api_1.createDevServerMiddleware)({
|
|
136
|
+
port: metroConfig.server.port,
|
|
137
|
+
watchFolders: metroConfig.watchFolders
|
|
138
|
+
});
|
|
139
|
+
metroConfig.server.enhanceMiddleware = (metroMiddleware, metroServer) => {
|
|
140
|
+
metroConfig.reporter.metroServerInstance = metroServer;
|
|
141
|
+
// bundle路由只识别/index.bundle
|
|
142
|
+
return middleware.use((req, res, next) => {
|
|
143
|
+
// eslint-disable-next-line node/no-deprecated-api
|
|
144
|
+
const urlObj = url.parse(req.url);
|
|
145
|
+
if (/\/[^]+.bundle/.test(urlObj.pathname || '') && (urlObj.pathname || '').toLowerCase() !== '/index.bundle') {
|
|
146
|
+
res.writeHead(400);
|
|
147
|
+
res.end('Please access /index.bundle for entry bundling.');
|
|
148
|
+
}
|
|
149
|
+
else if (/^\/debugger-ui\//.test(urlObj.pathname || '')) {
|
|
150
|
+
next();
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
metroMiddleware(req, res, next);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
// 支持host
|
|
158
|
+
return Metro.runServer(metroConfig, Object.assign(Object.assign({}, commonOptions), { hmrEnabled: true, websocketEndpoints })).then(server => {
|
|
159
|
+
console.log(`React-Native Dev server is running on port: ${metroConfig.server.port}`);
|
|
160
|
+
console.log('\n\nTo reload the app press "r"\nTo open developer menu press "d"\n');
|
|
161
|
+
readline.emitKeypressEvents(process.stdin);
|
|
162
|
+
process.stdin.setRawMode && process.stdin.setRawMode(true);
|
|
163
|
+
process.stdin.on('keypress', (_key, data) => {
|
|
164
|
+
const { ctrl, name } = data;
|
|
165
|
+
if (name === 'r') {
|
|
166
|
+
messageSocketEndpoint.broadcast('reload');
|
|
167
|
+
console.log('Reloading app...');
|
|
168
|
+
}
|
|
169
|
+
else if (name === 'd') {
|
|
170
|
+
messageSocketEndpoint.broadcast('devMenu');
|
|
171
|
+
console.log('Opening developer menu...');
|
|
172
|
+
}
|
|
173
|
+
else if (ctrl && (name === 'c')) {
|
|
174
|
+
process.exit();
|
|
175
|
+
}
|
|
70
176
|
});
|
|
71
177
|
if (config.qr) {
|
|
72
|
-
(0,
|
|
73
|
-
|
|
74
|
-
|
|
178
|
+
const host = (0, utils_1.getOpenHost)();
|
|
179
|
+
if (host) {
|
|
180
|
+
const url = `taro://${host}:${metroConfig.server.port}`;
|
|
181
|
+
console.log(utils_1.PLAYGROUNDINFO);
|
|
182
|
+
console.log(`print qrcode of '${url}':`);
|
|
183
|
+
qr.generate(url, { small: !utils_1.isWin });
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
console.log('print qrcode error: host not found.');
|
|
187
|
+
}
|
|
75
188
|
}
|
|
76
189
|
onFinish(null);
|
|
77
|
-
|
|
78
|
-
catch
|
|
190
|
+
return server;
|
|
191
|
+
}).catch(e => {
|
|
79
192
|
onFinish(e);
|
|
80
|
-
}
|
|
193
|
+
});
|
|
81
194
|
}
|
|
82
195
|
else {
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
const assetsDest = config.assetsDest ? config.assetsDest : (isIos ? config.output.iosAssetsDest : config.output.androidAssetsDest);
|
|
98
|
-
cliParams.push('--assets-dest', assetsDest);
|
|
196
|
+
const options = Object.assign(Object.assign({}, commonOptions), { entry: './index', out: concatOutputFileName(config) });
|
|
197
|
+
const savedBuildFunc = outputBundle.build;
|
|
198
|
+
outputBundle.build = (packagerClient, requestOptions) => __awaiter(this, void 0, void 0, function* () {
|
|
199
|
+
const resolutionFn = yield (0, transformHelpers_1.getResolveDependencyFn)(packagerClient.getBundler().getBundler(), requestOptions.platform);
|
|
200
|
+
// try for test case build_noWatch
|
|
201
|
+
try {
|
|
202
|
+
requestOptions.entryFile = resolutionFn(metroConfig.projectRoot, requestOptions.entryFile);
|
|
203
|
+
}
|
|
204
|
+
catch (e) { } // eslint-disable-line no-empty
|
|
205
|
+
return savedBuildFunc(packagerClient, requestOptions);
|
|
206
|
+
});
|
|
207
|
+
const server = new Server(metroConfig);
|
|
208
|
+
const sourceMapOption = getOutputSourceMapOption(config);
|
|
99
209
|
try {
|
|
100
|
-
(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
(0, rn_supporter_1.previewProd)({
|
|
114
|
-
out: bundleOutput,
|
|
115
|
-
platform: config.deviceType,
|
|
116
|
-
assetsDest: assetsDest,
|
|
210
|
+
const requestOptions = Object.assign(Object.assign(Object.assign({}, commonOptions), sourceMapOption), { entryFile: options.entry, inlineSourceMap: false, createModuleIdFactory: metroConfig.serializer.createModuleIdFactory });
|
|
211
|
+
const bundle = yield outputBundle.build(server, requestOptions);
|
|
212
|
+
const outputOptions = Object.assign(Object.assign(Object.assign({}, commonOptions), sourceMapOption), { bundleOutput: options.out });
|
|
213
|
+
yield outputBundle.save(bundle, outputOptions, console.log);
|
|
214
|
+
// Save the assets of the bundle
|
|
215
|
+
const outputAssets = yield server.getAssets(Object.assign(Object.assign({}, Server.DEFAULT_BUNDLE_OPTIONS), requestOptions));
|
|
216
|
+
const assetsDest = concatOutputAssetsDest(config);
|
|
217
|
+
return yield (0, saveAssets_1.default)(outputAssets, options.platform, assetsDest).then(() => {
|
|
218
|
+
if (config.qr) {
|
|
219
|
+
(0, preview_1.default)({
|
|
220
|
+
out: options.out,
|
|
221
|
+
assetsDest,
|
|
222
|
+
platform: options.platform
|
|
117
223
|
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
224
|
+
}
|
|
225
|
+
onFinish(null);
|
|
226
|
+
});
|
|
121
227
|
}
|
|
122
228
|
catch (e) {
|
|
123
229
|
onFinish(e);
|
|
124
230
|
}
|
|
231
|
+
finally {
|
|
232
|
+
server.end();
|
|
233
|
+
}
|
|
125
234
|
}
|
|
126
235
|
});
|
|
127
236
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isWin = exports.PLAYGROUNDINFO = exports.PLAYGROUNDREPO = exports.getOpenHost = void 0;
|
|
4
|
+
const os_1 = require("os");
|
|
5
|
+
function getOpenHost() {
|
|
6
|
+
var _a;
|
|
7
|
+
let result;
|
|
8
|
+
const interfaces = (0, os_1.networkInterfaces)();
|
|
9
|
+
for (const devName in interfaces) {
|
|
10
|
+
const isEnd = (_a = interfaces[devName]) === null || _a === void 0 ? void 0 : _a.some(item => {
|
|
11
|
+
// 取IPv4, 不为127.0.0.1的内网ip
|
|
12
|
+
if (['IPv4', 4, '4'].includes(item.family) && item.address !== '127.0.0.1' && !item.internal) {
|
|
13
|
+
result = item.address;
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
});
|
|
18
|
+
// 若获取到ip, 结束遍历
|
|
19
|
+
if (isEnd) {
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
exports.getOpenHost = getOpenHost;
|
|
26
|
+
exports.PLAYGROUNDREPO = 'https://github.com/wuba/taro-playground';
|
|
27
|
+
exports.PLAYGROUNDINFO = `use [Taro Playground App](${exports.PLAYGROUNDREPO}) to scan`;
|
|
28
|
+
exports.isWin = /^win/.test(process.platform);
|
|
29
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,2BAAsC;AAEtC,SAAgB,WAAW;;IACzB,IAAI,MAAM,CAAA;IACV,MAAM,UAAU,GAAG,IAAA,sBAAiB,GAAE,CAAA;IACtC,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;QAChC,MAAM,KAAK,GAAG,MAAA,UAAU,CAAC,OAAO,CAAC,0CAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7C,0BAA0B;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC5F,MAAM,GAAG,IAAI,CAAC,OAAO,CAAA;gBACrB,OAAO,IAAI,CAAA;aACZ;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;QACF,eAAe;QACf,IAAI,KAAK,EAAE;YACT,MAAK;SACN;KACF;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAlBD,kCAkBC;AAEY,QAAA,cAAc,GAAG,yCAAyC,CAAA;AAE1D,QAAA,cAAc,GAAG,6BAA6B,sBAAc,WAAW,CAAA;AAEvE,QAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tarojs/rn-runner",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.7",
|
|
4
4
|
"description": "ReactNative build tool for taro",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -21,20 +21,35 @@
|
|
|
21
21
|
"npm": ">=6.0.0"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
+
"@react-native-community/cli": "^8.0.0",
|
|
25
|
+
"@react-native-community/cli-config": "^8.0.0",
|
|
26
|
+
"@react-native-community/cli-plugin-metro": "^8.0.0",
|
|
27
|
+
"@react-native-community/cli-tools": "^8.0.0",
|
|
28
|
+
"@react-native-community/cli-server-api": "^8.0.0",
|
|
24
29
|
"@rollup/plugin-babel": "^5.3.1",
|
|
25
30
|
"@rollup/plugin-commonjs": "^20.0.0",
|
|
26
31
|
"@rollup/plugin-json": "^4.1.0",
|
|
27
32
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
28
33
|
"@rollup/plugin-replace": "^4.0.0",
|
|
29
|
-
"@tarojs/helper": "3.5.
|
|
30
|
-
"@tarojs/rn-style-transformer": "3.5.
|
|
31
|
-
"@tarojs/rn-supporter": "3.5.
|
|
32
|
-
"@tarojs/rn-transformer": "3.5.
|
|
34
|
+
"@tarojs/helper": "3.5.7",
|
|
35
|
+
"@tarojs/rn-style-transformer": "3.5.7",
|
|
36
|
+
"@tarojs/rn-supporter": "3.5.7",
|
|
37
|
+
"@tarojs/rn-transformer": "3.5.7",
|
|
33
38
|
"acorn-jsx": "^5.3.2",
|
|
39
|
+
"fs-extra": "^8.0.1",
|
|
34
40
|
"lodash": "^4.17.21",
|
|
41
|
+
"metro": "^0.70.3",
|
|
42
|
+
"metro-cache": "^0.70.3",
|
|
43
|
+
"metro-config": "^0.70.3",
|
|
44
|
+
"metro-core": "^0.70.3",
|
|
45
|
+
"metro-react-native-babel-transformer": "^0.70.3",
|
|
46
|
+
"metro-resolver": "^0.70.3",
|
|
47
|
+
"mime-types": "^2.1.27",
|
|
48
|
+
"qrcode-terminal": "^0.12.0",
|
|
35
49
|
"rollup-plugin-image-file": "^1.0.2"
|
|
36
50
|
},
|
|
37
51
|
"devDependencies": {
|
|
52
|
+
"expo-file-system": "~14.1.0",
|
|
38
53
|
"react-is": "^16.13.0",
|
|
39
54
|
"react-native-root-siblings": "^4.1.1"
|
|
40
55
|
},
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as FileStore from 'metro-cache/src/stores/FileStore'
|
|
2
|
+
|
|
3
|
+
export default class ConditionalFileStore<T> {
|
|
4
|
+
ignoreEntryFileCache = false
|
|
5
|
+
_fileStore: FileStore<T>
|
|
6
|
+
entryName: string
|
|
7
|
+
|
|
8
|
+
constructor (options: any, entryName?: string) {
|
|
9
|
+
this._fileStore = new FileStore<T>(options)
|
|
10
|
+
this.entryName = entryName || 'app'
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
isEntryCache (cacheItem): boolean {
|
|
14
|
+
if (!cacheItem) return false
|
|
15
|
+
const { dependencies } = cacheItem
|
|
16
|
+
if (!dependencies || !dependencies.length) {
|
|
17
|
+
return false
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
for (const d of dependencies) {
|
|
21
|
+
if (d.name.includes(`${this.entryName}.config`)) {
|
|
22
|
+
return true
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return false
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async get (key: Buffer): Promise<T | null> {
|
|
29
|
+
const result = await this._fileStore.get(key)
|
|
30
|
+
if (result && this.ignoreEntryFileCache && this.isEntryCache(result)) {
|
|
31
|
+
return null
|
|
32
|
+
}
|
|
33
|
+
return result
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async set (key: Buffer, value: any): Promise<void> {
|
|
37
|
+
// fix: 样式文件不写缓存
|
|
38
|
+
if (value?.output?.[0]?.data?.functionMap?.names?.indexOf('ignoreStyleFileCache') > -1) {
|
|
39
|
+
return
|
|
40
|
+
}
|
|
41
|
+
return await this._fileStore.set(key, value)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
clear (): void {
|
|
45
|
+
this._fileStore.clear()
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { merge } from 'lodash'
|
|
2
|
+
|
|
3
|
+
import { Config, RNConfig } from '../types'
|
|
4
|
+
|
|
5
|
+
const fs = require('fs')
|
|
6
|
+
|
|
7
|
+
let config: Config
|
|
8
|
+
let rnConfig: RNConfig
|
|
9
|
+
|
|
10
|
+
const getConfig = () => {
|
|
11
|
+
if (config) return config
|
|
12
|
+
const fileName = `${process.cwd()}/config/index.js`
|
|
13
|
+
if (fs.existsSync(fileName)) {
|
|
14
|
+
config = require(`${process.cwd()}/config/index`)(merge)
|
|
15
|
+
return config
|
|
16
|
+
} else {
|
|
17
|
+
console.warn('缺少项目基本配置')
|
|
18
|
+
config = {}
|
|
19
|
+
return config
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const getRNConfig = () => {
|
|
24
|
+
getConfig()
|
|
25
|
+
if (rnConfig) return rnConfig
|
|
26
|
+
if (config.rn) {
|
|
27
|
+
rnConfig = config.rn
|
|
28
|
+
} else {
|
|
29
|
+
rnConfig = {}
|
|
30
|
+
}
|
|
31
|
+
return rnConfig
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const getRNConfigEntry = () => {
|
|
35
|
+
getRNConfig()
|
|
36
|
+
return rnConfig.entry || 'app'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const getRNConfigOutput = (p) => {
|
|
40
|
+
getRNConfig()
|
|
41
|
+
if (rnConfig.output) {
|
|
42
|
+
if (p === 'ios') {
|
|
43
|
+
return rnConfig.output.ios
|
|
44
|
+
} else {
|
|
45
|
+
return rnConfig.output.android
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
return null
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const getRNConfigTransformer = () => {
|
|
53
|
+
getRNConfig()
|
|
54
|
+
if (rnConfig.transformer) {
|
|
55
|
+
return rnConfig.transformer
|
|
56
|
+
} else {
|
|
57
|
+
return null
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const getRNConfigBabelPlugin = () => {
|
|
62
|
+
getRNConfig()
|
|
63
|
+
if (rnConfig.babelPlugin) {
|
|
64
|
+
return rnConfig.babelPlugin
|
|
65
|
+
} else {
|
|
66
|
+
return null
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { getConfig, getRNConfig, getRNConfigBabelPlugin, getRNConfigEntry, getRNConfigOutput, getRNConfigTransformer }
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import resolveReactNativePath from '@react-native-community/cli-config/build/resolveReactNativePath'
|
|
2
|
+
import { findProjectRoot } from '@react-native-community/cli-tools'
|
|
3
|
+
import { Supporter } from '@tarojs/rn-supporter'
|
|
4
|
+
import * as Metro from 'metro'
|
|
5
|
+
import * as os from 'os'
|
|
6
|
+
import * as path from 'path'
|
|
7
|
+
|
|
8
|
+
import ConditionalFileStore from './conditional-file-store'
|
|
9
|
+
|
|
10
|
+
const reactNativePath: string = resolveReactNativePath(findProjectRoot())
|
|
11
|
+
|
|
12
|
+
type ResolveRequestFunc = (context, moduleName, platform) => any
|
|
13
|
+
type GetModulesRunBeforeMainModuleFunc = () => any
|
|
14
|
+
type GetPolyfillsFunc = () => any
|
|
15
|
+
interface MetroConfig {
|
|
16
|
+
transformer: {
|
|
17
|
+
dynamicDepsInPackages: string
|
|
18
|
+
babelTransformerPath: string
|
|
19
|
+
assetRegistryPath: string
|
|
20
|
+
}
|
|
21
|
+
resolver: {
|
|
22
|
+
sourceExts: string[]
|
|
23
|
+
resolveRequest?: ResolveRequestFunc
|
|
24
|
+
}
|
|
25
|
+
serializer: {
|
|
26
|
+
getModulesRunBeforeMainModule: GetModulesRunBeforeMainModuleFunc
|
|
27
|
+
getPolyfills: GetPolyfillsFunc
|
|
28
|
+
}
|
|
29
|
+
cacheStores: ConditionalFileStore<any>[]
|
|
30
|
+
server: {
|
|
31
|
+
port: number
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const defaultConfig: MetroConfig = getDefaultConfig()
|
|
36
|
+
|
|
37
|
+
function getDefaultConfig () {
|
|
38
|
+
const supporter = new Supporter({ fromRunner: true })
|
|
39
|
+
const taroMetroConfig = supporter.getMetroConfig()
|
|
40
|
+
const metroConfig: MetroConfig = {
|
|
41
|
+
transformer: taroMetroConfig.transformer,
|
|
42
|
+
resolver: taroMetroConfig.resolver,
|
|
43
|
+
serializer: {
|
|
44
|
+
// We can include multiple copies of InitializeCore here because metro will
|
|
45
|
+
// only add ones that are already part of the bundle
|
|
46
|
+
getModulesRunBeforeMainModule: () => [
|
|
47
|
+
require.resolve(
|
|
48
|
+
path.join(reactNativePath, 'Libraries/Core/InitializeCore')
|
|
49
|
+
)
|
|
50
|
+
],
|
|
51
|
+
getPolyfills: () =>
|
|
52
|
+
require(path.join(reactNativePath, 'rn-get-polyfills'))()
|
|
53
|
+
},
|
|
54
|
+
cacheStores: [new ConditionalFileStore<any>({
|
|
55
|
+
root: path.join(os.tmpdir(), 'metro-cache')
|
|
56
|
+
})],
|
|
57
|
+
server: {
|
|
58
|
+
port: 8081
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return metroConfig
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export default async (config: any) => {
|
|
65
|
+
const metroConfig = getDefaultConfig()
|
|
66
|
+
const res = await Metro.loadConfig({}, metroConfig)
|
|
67
|
+
if (!res.cacheStores || (res.cacheStores.length !== 1) || !(res.cacheStores[0] instanceof ConditionalFileStore)) {
|
|
68
|
+
throw new Error("cacheStores shouldn't be overridden in metro config.")
|
|
69
|
+
}
|
|
70
|
+
if (config.entry) {
|
|
71
|
+
res.cacheStores[0].entryName = config.entry
|
|
72
|
+
}
|
|
73
|
+
return res
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export { defaultConfig }
|