@tarojs/rn-runner 3.5.0-beta.2 → 3.5.0-beta.5
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/.eslintrc.js +2 -1
- package/__tests__/__snapshots__/components.spec.ts.snap +523 -0
- package/__tests__/build.spec.ts +3 -3
- package/__tests__/components.spec.ts +103 -0
- package/__tests__/config.spec.ts +1 -1
- package/__tests__/global.d.ts +11 -0
- package/__tests__/mock/build_testdata.ts +58 -0
- package/__tests__/mock/{build_testdata.js → components_testdata.ts} +4 -9
- package/__tests__/mock/config/index.js +1 -0
- package/__tests__/mock/src/app.config.ts +13 -0
- package/__tests__/mock/src/app.scss +0 -0
- package/__tests__/mock/src/app.tsx +15 -0
- package/__tests__/mock/src/components/cell/index.scss +25 -0
- package/__tests__/mock/src/components/cell/index.tsx +38 -0
- package/__tests__/mock/src/components/navbar/icon_back.webp +0 -0
- package/__tests__/mock/src/components/navbar/index.scss +29 -0
- package/__tests__/mock/src/components/navbar/index.tsx +36 -0
- package/__tests__/mock/src/components/navbar/resolver.rn.ts +1 -0
- package/__tests__/mock/src/components/navbar/resolver.ts +1 -0
- package/__tests__/mock/src/components/svg/index.tsx +6 -0
- package/__tests__/mock/src/components/svg/rollup-logo.svg +3 -0
- package/__tests__/mock/src/utils/dynamicImport/index.ts +3 -0
- package/__tests__/mock/src/utils/namedExport/index.js +2 -0
- package/__tests__/mock/src/utils/requireLodash/index.ts +5 -0
- package/__tests__/mock/src/utils/requireReactNative/index.js +2 -0
- package/__tests__/tsconfig.json +8 -0
- package/dist/config/build-component.js +162 -0
- package/dist/config/build-component.js.map +1 -0
- package/dist/config/config-holder.js +1 -1
- package/dist/config/config-holder.js.map +1 -1
- package/dist/config/index.js +4 -4
- package/dist/config/index.js.map +1 -1
- package/dist/config/terminal-reporter.js +3 -3
- package/dist/config/terminal-reporter.js.map +1 -1
- package/dist/index.js +26 -19
- package/dist/index.js.map +1 -1
- package/index.js +1 -0
- package/jest.config.js +3 -30
- package/package.json +38 -25
- package/src/config/build-component.ts +171 -0
- package/src/config/config-holder.ts +2 -1
- package/src/config/index.ts +15 -14
- package/src/config/terminal-reporter.ts +3 -3
- package/src/index.ts +33 -22
- package/src/types/index.ts +33 -33
- package/tsconfig.json +3 -5
package/dist/config/index.js
CHANGED
|
@@ -10,18 +10,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.defaultConfig = void 0;
|
|
13
|
+
const findProjectRoot_1 = require("@react-native-community/cli/build/tools/config/findProjectRoot");
|
|
14
|
+
const resolveReactNativePath_1 = require("@react-native-community/cli/build/tools/config/resolveReactNativePath");
|
|
15
|
+
const rn_supporter_1 = require("@tarojs/rn-supporter");
|
|
13
16
|
const Metro = require("metro");
|
|
14
17
|
const os = require("os");
|
|
15
18
|
const path = require("path");
|
|
16
|
-
const resolveReactNativePath_1 = require("@react-native-community/cli/build/tools/config/resolveReactNativePath");
|
|
17
|
-
const findProjectRoot_1 = require("@react-native-community/cli/build/tools/config/findProjectRoot");
|
|
18
|
-
const Supporter = require("@tarojs/rn-supporter");
|
|
19
19
|
const conditional_file_store_1 = require("./conditional-file-store");
|
|
20
20
|
const reactNativePath = (0, resolveReactNativePath_1.default)((0, findProjectRoot_1.default)());
|
|
21
21
|
const defaultConfig = getDefaultConfig();
|
|
22
22
|
exports.defaultConfig = defaultConfig;
|
|
23
23
|
function getDefaultConfig() {
|
|
24
|
-
const supporter = new Supporter({ fromRunner: true });
|
|
24
|
+
const supporter = new rn_supporter_1.Supporter({ fromRunner: true });
|
|
25
25
|
const taroMetroConfig = supporter.getMetroConfig();
|
|
26
26
|
const metroConfig = {
|
|
27
27
|
transformer: taroMetroConfig.transformer,
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA8B;AAC9B,yBAAwB;AACxB,6BAA4B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oGAA4F;AAC5F,kHAA0G;AAC1G,uDAAgD;AAChD,+BAA8B;AAC9B,yBAAwB;AACxB,6BAA4B;AAE5B,qEAA2D;AAE3D,MAAM,eAAe,GAAW,IAAA,gCAAsB,EAAC,IAAA,yBAAe,GAAE,CAAC,CAAA;AAyBzE,MAAM,aAAa,GAAgB,gBAAgB,EAAE,CAAA;AAyC5C,sCAAa;AAvCtB,SAAS,gBAAgB;IACvB,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,EAAE,CAAA;IAClD,MAAM,WAAW,GAAgB;QAC/B,WAAW,EAAE,eAAe,CAAC,WAAW;QACxC,QAAQ,EAAE,eAAe,CAAC,QAAQ;QAClC,UAAU,EAAE;YACV,2EAA2E;YAC3E,oDAAoD;YACpD,6BAA6B,EAAE,GAAG,EAAE,CAAC;gBACnC,OAAO,CAAC,OAAO,CACb,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,+BAA+B,CAAC,CAC5D;aACF;YACD,YAAY,EAAE,GAAG,EAAE,CACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,EAAE;SAC5D;QACD,WAAW,EAAE,CAAC,IAAI,gCAAoB,CAAM;gBAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC;aAC5C,CAAC,CAAC;QACH,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;SACX;KACF,CAAA;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,kBAAe,CAAO,MAAW,EAAE,EAAE;IACnC,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAA;IACtC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IACnD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,gCAAoB,CAAC,EAAE;QAC/G,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;KACxE;IACD,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAA;KAC5C;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA,CAAA"}
|
|
@@ -10,9 +10,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.TerminalReporter = void 0;
|
|
13
|
-
const
|
|
13
|
+
const rn_supporter_1 = require("@tarojs/rn-supporter");
|
|
14
14
|
const MetroTerminalReporter = require("metro/src/lib/TerminalReporter");
|
|
15
|
-
const
|
|
15
|
+
const metro_core_1 = require("metro-core");
|
|
16
16
|
class TerminalReporter {
|
|
17
17
|
constructor(entry, sourceRoot, conditionalFileStore, metroServerInstance) {
|
|
18
18
|
this._reporter = new MetroTerminalReporter(new metro_core_1.Terminal(process.stdout));
|
|
@@ -43,7 +43,7 @@ class TerminalReporter {
|
|
|
43
43
|
case 'bundle_build_done':
|
|
44
44
|
{
|
|
45
45
|
this._reporter.update(args);
|
|
46
|
-
const realEntryPath =
|
|
46
|
+
const realEntryPath = require.resolve(rn_supporter_1.emptyModulePath);
|
|
47
47
|
if (this._initialized) {
|
|
48
48
|
// 恢复入口页面的缓存
|
|
49
49
|
this._reporter.ignoreEntryFileCache = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-reporter.js","sourceRoot":"","sources":["../../src/config/terminal-reporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"terminal-reporter.js","sourceRoot":"","sources":["../../src/config/terminal-reporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAsD;AACtD,wEAAuE;AACvE,2CAAqC;AAErC,MAAa,gBAAgB;IAQ3B,YAAa,KAAa,EAAE,UAAkB,EAAE,oBAAyB,EAAE,mBAAyB;QAClG,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAqB,CAAC,IAAI,qBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QACxE,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAA;QACjD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;QAC9C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;IAC/B,CAAC;IAEK,MAAM,CAAE,IAAI;;YAChB,2BAA2B;YAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,oBAAoB;oBACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;;;;;;;CAOnC,CAAC,CAAA;oBACM,MAAK;gBACP,KAAK,sBAAsB;oBACzB,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAA;oBACxC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC3B,MAAK;gBACP,KAAK,mBAAmB;oBAAE;wBACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;wBAC3B,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,8BAAe,CAAC,CAAA;wBACtD,IAAI,IAAI,CAAC,YAAY,EAAE;4BACrB,YAAY;4BACZ,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,KAAK,CAAA;4BAC3C,OAAM;yBACP;wBACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;wBACxB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;4BAC7B,OAAM;yBACP;wBACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAA;wBAChE,MAAM,YAAY,GAAG,kBAAkB,CAAC,eAAe,EAAE,CAAA;wBACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,EAAE,CAAA;wBAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE;4BAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;gCACpB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,EAAE;oCAC7C,OAAO,CAAC,CAAA;iCACT;6BACF;4BACD,OAAO,IAAI,CAAA;wBACb,CAAC,CAAA;wBACD,eAAe;wBACf,MAAM,YAAY,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAA;wBACpF,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;wBAErF,wDAAwD;wBACxD,OAAO,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;4BAClD,eAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;gCAC5D,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gCAC3D,2BAA2B;gCAC3B,MAAM,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;gCACnF,MAAM,uBAAuB,GAAG,IAAI,CAAC,EAAE;oCACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;wCACpB,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;4CACzD,OAAO,IAAI,CAAA;yCACZ;qCACF;oCACD,OAAO,KAAK,CAAA;gCACd,CAAC,CAAA;gCACD,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAE;oCACzC,gBAAgB;oCAChB,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,GAAG,IAAI,CAAA;oCACtD,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;oCACjD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;oCAC/B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;iCAC/C;4BACH,CAAC,CAAC,CAAA;wBACJ,CAAC,CAAC,CAAA;qBACH;oBACC,MAAK;gBACP;oBACE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC3B,MAAK;aACR;QACH,CAAC;KAAA;CACF;AA3FD,4CA2FC"}
|
package/dist/index.js
CHANGED
|
@@ -9,23 +9,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const config_holder_1 = require("./config/config-holder");
|
|
15
|
-
const utils_1 = require("./utils");
|
|
16
|
-
const preview_1 = require("./config/preview");
|
|
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");
|
|
17
14
|
const helper_1 = require("@tarojs/helper");
|
|
18
|
-
const path = require("path");
|
|
19
15
|
const fse = require("fs-extra");
|
|
20
|
-
const
|
|
21
|
-
const qr = require("qrcode-terminal");
|
|
22
|
-
const readline = require("readline");
|
|
23
|
-
const cli_server_api_1 = require("@react-native-community/cli-server-api");
|
|
24
|
-
const terminal_reporter_1 = require("./config/terminal-reporter");
|
|
16
|
+
const Metro = require("metro");
|
|
25
17
|
const transformHelpers_1 = require("metro/src/lib/transformHelpers");
|
|
26
18
|
const Server = require("metro/src/Server");
|
|
27
|
-
const saveAssets_1 = require("@react-native-community/cli-plugin-metro/build/commands/bundle/saveAssets");
|
|
28
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");
|
|
25
|
+
const build_component_1 = require("./config/build-component");
|
|
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");
|
|
29
30
|
function concatOutputFileName(config) {
|
|
30
31
|
// 优先级:--bundle-output > config.output > config.outputRoot
|
|
31
32
|
let output = path.join(config.outputRoot, 'index.bundle');
|
|
@@ -118,7 +119,10 @@ function build(_appPath, config) {
|
|
|
118
119
|
if (error instanceof Error)
|
|
119
120
|
throw error;
|
|
120
121
|
};
|
|
121
|
-
if (config.
|
|
122
|
+
if (config.isBuildNativeComp) {
|
|
123
|
+
return (0, build_component_1.default)(_appPath, config);
|
|
124
|
+
}
|
|
125
|
+
else if (config.isWatch) {
|
|
122
126
|
if (!metroConfig.server || (metroConfig.server.useGlobalHotkey === undefined)) {
|
|
123
127
|
if (!metroConfig.server) {
|
|
124
128
|
metroConfig.server = {};
|
|
@@ -128,7 +132,7 @@ function build(_appPath, config) {
|
|
|
128
132
|
if (config.port) {
|
|
129
133
|
metroConfig.server.port = config.port;
|
|
130
134
|
}
|
|
131
|
-
const { middleware,
|
|
135
|
+
const { middleware, messageSocketEndpoint, websocketEndpoints } = (0, cli_server_api_1.createDevServerMiddleware)({
|
|
132
136
|
port: metroConfig.server.port,
|
|
133
137
|
watchFolders: metroConfig.watchFolders
|
|
134
138
|
});
|
|
@@ -151,20 +155,19 @@ function build(_appPath, config) {
|
|
|
151
155
|
});
|
|
152
156
|
};
|
|
153
157
|
// 支持host
|
|
154
|
-
return Metro.runServer(metroConfig, Object.assign(Object.assign({}, commonOptions), { hmrEnabled: true })).then(server => {
|
|
158
|
+
return Metro.runServer(metroConfig, Object.assign(Object.assign({}, commonOptions), { hmrEnabled: true, websocketEndpoints })).then(server => {
|
|
155
159
|
console.log(`React-Native Dev server is running on port: ${metroConfig.server.port}`);
|
|
156
160
|
console.log('\n\nTo reload the app press "r"\nTo open developer menu press "d"\n');
|
|
157
|
-
const { messageSocket } = attachToServer(server);
|
|
158
161
|
readline.emitKeypressEvents(process.stdin);
|
|
159
162
|
process.stdin.setRawMode && process.stdin.setRawMode(true);
|
|
160
163
|
process.stdin.on('keypress', (_key, data) => {
|
|
161
164
|
const { ctrl, name } = data;
|
|
162
165
|
if (name === 'r') {
|
|
163
|
-
|
|
166
|
+
messageSocketEndpoint.broadcast('reload');
|
|
164
167
|
console.log('Reloading app...');
|
|
165
168
|
}
|
|
166
169
|
else if (name === 'd') {
|
|
167
|
-
|
|
170
|
+
messageSocketEndpoint.broadcast('devMenu');
|
|
168
171
|
console.log('Opening developer menu...');
|
|
169
172
|
}
|
|
170
173
|
else if (ctrl && (name === 'c')) {
|
|
@@ -194,7 +197,11 @@ function build(_appPath, config) {
|
|
|
194
197
|
const savedBuildFunc = outputBundle.build;
|
|
195
198
|
outputBundle.build = (packagerClient, requestOptions) => __awaiter(this, void 0, void 0, function* () {
|
|
196
199
|
const resolutionFn = yield (0, transformHelpers_1.getResolveDependencyFn)(packagerClient.getBundler().getBundler(), requestOptions.platform);
|
|
197
|
-
|
|
200
|
+
// try for test case build_noWatch
|
|
201
|
+
try {
|
|
202
|
+
requestOptions.entryFile = resolutionFn(metroConfig.projectRoot, requestOptions.entryFile);
|
|
203
|
+
}
|
|
204
|
+
catch (e) { }
|
|
198
205
|
return savedBuildFunc(packagerClient, requestOptions);
|
|
199
206
|
});
|
|
200
207
|
const server = new Server(metroConfig);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/index.js
CHANGED
package/jest.config.js
CHANGED
|
@@ -1,33 +1,6 @@
|
|
|
1
|
-
const { jsWithTs: tsjPreset } = require('ts-jest/presets')
|
|
2
|
-
|
|
3
1
|
module.exports = {
|
|
2
|
+
coverageDirectory: 'coverage',
|
|
3
|
+
preset: 'ts-jest',
|
|
4
4
|
testEnvironment: 'node',
|
|
5
|
-
|
|
6
|
-
...tsjPreset.transform
|
|
7
|
-
},
|
|
8
|
-
collectCoverage: true,
|
|
9
|
-
testURL: 'http://localhost/',
|
|
10
|
-
moduleFileExtensions: [
|
|
11
|
-
'ts',
|
|
12
|
-
'tsx',
|
|
13
|
-
'js',
|
|
14
|
-
'jsx',
|
|
15
|
-
'json',
|
|
16
|
-
'node'
|
|
17
|
-
],
|
|
18
|
-
globals: {
|
|
19
|
-
'ts-jest': {
|
|
20
|
-
diagnostics: false,
|
|
21
|
-
tsconfig: {
|
|
22
|
-
jsx: 'react',
|
|
23
|
-
allowJs: true,
|
|
24
|
-
target: 'ES6'
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
testPathIgnorePatterns: [
|
|
29
|
-
'node_modules',
|
|
30
|
-
'utils'
|
|
31
|
-
],
|
|
32
|
-
testMatch: ['**/__tests__/?(*.)+(spec|test).[jt]s?(x)']
|
|
5
|
+
testRegex: '/__tests__/.*.spec.tsx?$'
|
|
33
6
|
}
|
package/package.json
CHANGED
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tarojs/rn-runner",
|
|
3
|
-
"version": "3.5.0-beta.
|
|
3
|
+
"version": "3.5.0-beta.5",
|
|
4
4
|
"description": "ReactNative build tool for taro",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/NervJS/taro.git"
|
|
9
9
|
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
12
|
-
"dev": "tsc --watch",
|
|
13
|
-
"lint": "eslint .",
|
|
14
|
-
"test": "jest --silent",
|
|
15
|
-
"test:dev": "jest --watch",
|
|
16
|
-
"test:ci": "jest --silent --coverage false",
|
|
17
|
-
"test:coverage": "jest --coverage"
|
|
18
|
-
},
|
|
19
10
|
"keywords": [
|
|
20
11
|
"taro"
|
|
21
12
|
],
|
|
@@ -30,22 +21,44 @@
|
|
|
30
21
|
"npm": ">=6.0.0"
|
|
31
22
|
},
|
|
32
23
|
"dependencies": {
|
|
33
|
-
"@react-native-community/cli
|
|
34
|
-
"@react-native-community/cli-
|
|
35
|
-
"@
|
|
36
|
-
"@
|
|
37
|
-
"@
|
|
38
|
-
"@
|
|
24
|
+
"@react-native-community/cli": "^7.0.3",
|
|
25
|
+
"@react-native-community/cli-plugin-metro": "^7.0.0",
|
|
26
|
+
"@react-native-community/cli-server-api": "^7.0.0",
|
|
27
|
+
"@rollup/plugin-babel": "^5.3.1",
|
|
28
|
+
"@rollup/plugin-commonjs": "^20.0.0",
|
|
29
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
30
|
+
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
31
|
+
"@rollup/plugin-replace": "^4.0.0",
|
|
32
|
+
"@tarojs/helper": "3.5.0-beta.5",
|
|
33
|
+
"@tarojs/rn-style-transformer": "3.5.0-beta.5",
|
|
34
|
+
"@tarojs/rn-supporter": "3.5.0-beta.5",
|
|
35
|
+
"@tarojs/rn-transformer": "3.5.0-beta.5",
|
|
36
|
+
"acorn-jsx": "^5.3.2",
|
|
39
37
|
"fs-extra": "^8.0.1",
|
|
40
38
|
"lodash": "^4.17.21",
|
|
41
|
-
"metro": "^0.
|
|
42
|
-
"metro-cache": "^0.
|
|
43
|
-
"metro-config": "^0.
|
|
44
|
-
"metro-core": "^0.
|
|
45
|
-
"metro-react-native-babel-transformer": "^0.
|
|
46
|
-
"metro-resolver": "^0.
|
|
39
|
+
"metro": "^0.67.0",
|
|
40
|
+
"metro-cache": "^0.67.0",
|
|
41
|
+
"metro-config": "^0.67.0",
|
|
42
|
+
"metro-core": "^0.67.0",
|
|
43
|
+
"metro-react-native-babel-transformer": "^0.67.0",
|
|
44
|
+
"metro-resolver": "^0.67.0",
|
|
47
45
|
"mime-types": "^2.1.27",
|
|
48
|
-
"qrcode-terminal": "^0.12.0"
|
|
46
|
+
"qrcode-terminal": "^0.12.0",
|
|
47
|
+
"rollup-plugin-clear": "^2.0.7",
|
|
48
|
+
"rollup-plugin-image-file": "^1.0.2"
|
|
49
49
|
},
|
|
50
|
-
"
|
|
51
|
-
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"expo-file-system": "~14.0.0",
|
|
52
|
+
"react-is": "^16.13.0",
|
|
53
|
+
"react-native-root-siblings": "^4.1.1"
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsc",
|
|
57
|
+
"dev": "tsc --watch",
|
|
58
|
+
"lint": "eslint .",
|
|
59
|
+
"test": "jest --silent",
|
|
60
|
+
"test:dev": "jest --watch",
|
|
61
|
+
"test:ci": "jest --silent --coverage false",
|
|
62
|
+
"test:coverage": "jest --coverage"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import babel from '@rollup/plugin-babel'
|
|
2
|
+
import * as commonjs from '@rollup/plugin-commonjs'
|
|
3
|
+
import * as json from '@rollup/plugin-json'
|
|
4
|
+
import nodeResolve from '@rollup/plugin-node-resolve'
|
|
5
|
+
import * as pluginReplace from '@rollup/plugin-replace'
|
|
6
|
+
import { recursiveMerge } from '@tarojs/helper'
|
|
7
|
+
import { rollupTransform as styleTransformer } from '@tarojs/rn-style-transformer'
|
|
8
|
+
import { resolveExtFile, rollupResolver as taroResolver } from '@tarojs/rn-supporter'
|
|
9
|
+
import { getAppConfig } from '@tarojs/rn-transformer'
|
|
10
|
+
import * as jsx from 'acorn-jsx'
|
|
11
|
+
import * as path from 'path'
|
|
12
|
+
import { rollup, RollupOptions } from 'rollup'
|
|
13
|
+
import * as clear from 'rollup-plugin-clear'
|
|
14
|
+
import image from 'rollup-plugin-image-file'
|
|
15
|
+
|
|
16
|
+
type ExternalFn = (arr: Array<string | RegExp>) => Array<string | RegExp>
|
|
17
|
+
|
|
18
|
+
interface IComponentConfig {
|
|
19
|
+
input: string[] | string
|
|
20
|
+
output?: string
|
|
21
|
+
sourceRootPath?: string
|
|
22
|
+
external?: Array<string | RegExp> | ExternalFn
|
|
23
|
+
externalResolve?: (importee, importer) => string | null | void
|
|
24
|
+
modifyRollupConfig?: (
|
|
25
|
+
config: RollupOptions,
|
|
26
|
+
innerplugins?: [typeof taroResolver, typeof styleTransformer]
|
|
27
|
+
) => RollupOptions
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const DEFAULT_CONFIG: Pick<
|
|
31
|
+
IComponentConfig,
|
|
32
|
+
'external' | 'output' | 'externalResolve' | 'sourceRootPath' | 'modifyRollupConfig'
|
|
33
|
+
> = {
|
|
34
|
+
external: [/^react(\/.*)?$/, /^react-native(\/.*)?$/, /^@react-native/],
|
|
35
|
+
output: 'dist',
|
|
36
|
+
externalResolve: importee => (likeDependent(importee) ? importee : null),
|
|
37
|
+
sourceRootPath: process.cwd(),
|
|
38
|
+
modifyRollupConfig: config => config
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const build = async (projectConfig, componentConfig: IComponentConfig) => {
|
|
42
|
+
const mergedConfig = recursiveMerge({ ...DEFAULT_CONFIG }, componentConfig)
|
|
43
|
+
const { input, external, output, externalResolve, sourceRootPath, modifyRollupConfig } = mergedConfig
|
|
44
|
+
|
|
45
|
+
const getInputOption = () => {
|
|
46
|
+
const components: string[] = Array.isArray(input) ? input : [input]
|
|
47
|
+
|
|
48
|
+
const inputOptions = components.reduce((pre, cur) => {
|
|
49
|
+
let absolutePath = cur
|
|
50
|
+
if (!path.isAbsolute(cur)) {
|
|
51
|
+
absolutePath = path.resolve(sourceRootPath, cur)
|
|
52
|
+
}
|
|
53
|
+
const realPath = resolveExtFile({ originModulePath: absolutePath }, absolutePath)
|
|
54
|
+
const relativePath = path
|
|
55
|
+
.relative(sourceRootPath, realPath)
|
|
56
|
+
.replace(/\.(js|ts|jsx|tsx)$/, '')
|
|
57
|
+
.replace(/\.{1,}\//g, '')
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
...pre,
|
|
61
|
+
[relativePath]: realPath
|
|
62
|
+
}
|
|
63
|
+
}, {})
|
|
64
|
+
if (components.length === 1) {
|
|
65
|
+
return {
|
|
66
|
+
index: Object.values(inputOptions)[0]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return inputOptions
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const getExternal = () => {
|
|
73
|
+
if (typeof external === 'function') {
|
|
74
|
+
return external(DEFAULT_CONFIG.external)
|
|
75
|
+
}
|
|
76
|
+
const _external = Array.isArray(external) ? external : [external]
|
|
77
|
+
return _external.filter(Boolean).map(item => {
|
|
78
|
+
if (((item as unknown) as RegExp).test) return item
|
|
79
|
+
const match = (item as string).match(/^\/(.+)\/$/)
|
|
80
|
+
return match ? new RegExp(match[1]) : item
|
|
81
|
+
})
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const rollupOptions: RollupOptions = {
|
|
85
|
+
input: getInputOption(),
|
|
86
|
+
output: {
|
|
87
|
+
format: 'es',
|
|
88
|
+
dir: output
|
|
89
|
+
},
|
|
90
|
+
external: getExternal(),
|
|
91
|
+
// @ts-ignore react native 相关的一些库中可能包含 jsx 语法
|
|
92
|
+
acornInjectPlugins: [jsx()],
|
|
93
|
+
plugins: [
|
|
94
|
+
clear({ targets: [output] }),
|
|
95
|
+
// TODO: 使用 react-native-svg-transformer 处理
|
|
96
|
+
// @ts-ignore
|
|
97
|
+
image({
|
|
98
|
+
extensions: ['.jpg', '.jpeg', '.png', '.webp', '.gif', '.svg', '.svgx']
|
|
99
|
+
}),
|
|
100
|
+
// @ts-ignore
|
|
101
|
+
json(),
|
|
102
|
+
taroResolver({
|
|
103
|
+
externalResolve
|
|
104
|
+
}),
|
|
105
|
+
nodeResolve({
|
|
106
|
+
extensions: ['.mjs', '.js', '.json', '.node', '.ts', '.tsx']
|
|
107
|
+
}),
|
|
108
|
+
// @ts-ignore
|
|
109
|
+
pluginReplace({
|
|
110
|
+
'process.env.NODE_ENV': JSON.stringify('production')
|
|
111
|
+
}),
|
|
112
|
+
// @ts-ignore
|
|
113
|
+
commonjs(),
|
|
114
|
+
babel({
|
|
115
|
+
babelHelpers: 'runtime',
|
|
116
|
+
presets: [
|
|
117
|
+
[
|
|
118
|
+
'babel-preset-taro',
|
|
119
|
+
{
|
|
120
|
+
framework: 'react',
|
|
121
|
+
ts: true,
|
|
122
|
+
reactJsxRuntime: projectConfig.reactJsxRuntime || 'automatic',
|
|
123
|
+
disableImportExportTransform: true
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
],
|
|
127
|
+
extensions: ['js', 'ts', 'jsx', 'tsx']
|
|
128
|
+
}),
|
|
129
|
+
styleTransformer({ config: projectConfig })
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const newRollupOptions = modifyRollupConfig(rollupOptions, {
|
|
134
|
+
taroResolver,
|
|
135
|
+
styleTransformer
|
|
136
|
+
})
|
|
137
|
+
const { output: outputOptions, ...inputOptions } = newRollupOptions
|
|
138
|
+
|
|
139
|
+
let bundle
|
|
140
|
+
try {
|
|
141
|
+
bundle = await rollup(inputOptions)
|
|
142
|
+
|
|
143
|
+
const result = await bundle.write(outputOptions)
|
|
144
|
+
return result
|
|
145
|
+
} catch (error) {
|
|
146
|
+
console.error(error)
|
|
147
|
+
}
|
|
148
|
+
if (bundle) {
|
|
149
|
+
await bundle.close()
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function likeDependent (str: string) {
|
|
154
|
+
return !str.match(/^\.?\.\//) && !path.isAbsolute(str)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export default async function (projectPath: string, config: any) {
|
|
158
|
+
const { sourceRoot, entry, nativeComponents } = config
|
|
159
|
+
const appPath = path.join(projectPath, sourceRoot, entry)
|
|
160
|
+
const appConfig = getAppConfig(appPath)
|
|
161
|
+
const { output = DEFAULT_CONFIG.output } = nativeComponents || {}
|
|
162
|
+
|
|
163
|
+
const componentConfig = {
|
|
164
|
+
...nativeComponents,
|
|
165
|
+
input: appConfig?.components,
|
|
166
|
+
output: path.join(projectPath, output),
|
|
167
|
+
sourceRootPath: path.join(projectPath, sourceRoot)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return build(config, componentConfig)
|
|
171
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { merge } from 'lodash'
|
|
2
|
+
|
|
2
3
|
import { Config, RNConfig } from '../types'
|
|
3
4
|
|
|
4
5
|
const fs = require('fs')
|
|
@@ -66,4 +67,4 @@ const getRNConfigBabelPlugin = () => {
|
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
export { getConfig, getRNConfig, getRNConfigEntry, getRNConfigOutput, getRNConfigTransformer
|
|
70
|
+
export { getConfig, getRNConfig, getRNConfigBabelPlugin, getRNConfigEntry, getRNConfigOutput, getRNConfigTransformer }
|
package/src/config/index.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import findProjectRoot from '@react-native-community/cli/build/tools/config/findProjectRoot'
|
|
2
|
+
import resolveReactNativePath from '@react-native-community/cli/build/tools/config/resolveReactNativePath'
|
|
3
|
+
import { Supporter } from '@tarojs/rn-supporter'
|
|
1
4
|
import * as Metro from 'metro'
|
|
2
5
|
import * as os from 'os'
|
|
3
6
|
import * as path from 'path'
|
|
4
|
-
|
|
5
|
-
import findProjectRoot from '@react-native-community/cli/build/tools/config/findProjectRoot'
|
|
6
|
-
import * as Supporter from '@tarojs/rn-supporter'
|
|
7
|
+
|
|
7
8
|
import ConditionalFileStore from './conditional-file-store'
|
|
8
9
|
|
|
9
10
|
const reactNativePath: string = resolveReactNativePath(findProjectRoot())
|
|
@@ -13,21 +14,21 @@ type GetModulesRunBeforeMainModuleFunc = () => any
|
|
|
13
14
|
type GetPolyfillsFunc = () => any
|
|
14
15
|
interface MetroConfig {
|
|
15
16
|
transformer: {
|
|
16
|
-
dynamicDepsInPackages: string
|
|
17
|
-
babelTransformerPath: string
|
|
18
|
-
assetRegistryPath: string
|
|
19
|
-
}
|
|
17
|
+
dynamicDepsInPackages: string
|
|
18
|
+
babelTransformerPath: string
|
|
19
|
+
assetRegistryPath: string
|
|
20
|
+
}
|
|
20
21
|
resolver: {
|
|
21
|
-
sourceExts: string[]
|
|
22
|
-
resolveRequest?: ResolveRequestFunc
|
|
23
|
-
}
|
|
22
|
+
sourceExts: string[]
|
|
23
|
+
resolveRequest?: ResolveRequestFunc
|
|
24
|
+
}
|
|
24
25
|
serializer: {
|
|
25
|
-
getModulesRunBeforeMainModule: GetModulesRunBeforeMainModuleFunc
|
|
26
|
+
getModulesRunBeforeMainModule: GetModulesRunBeforeMainModuleFunc
|
|
26
27
|
getPolyfills: GetPolyfillsFunc
|
|
27
|
-
}
|
|
28
|
-
cacheStores: ConditionalFileStore<any>[]
|
|
28
|
+
}
|
|
29
|
+
cacheStores: ConditionalFileStore<any>[]
|
|
29
30
|
server: {
|
|
30
|
-
port: number
|
|
31
|
+
port: number
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { emptyModulePath } from '@tarojs/rn-supporter'
|
|
2
2
|
import * as MetroTerminalReporter from 'metro/src/lib/TerminalReporter'
|
|
3
|
-
import
|
|
3
|
+
import { Terminal } from 'metro-core'
|
|
4
4
|
|
|
5
5
|
export class TerminalReporter {
|
|
6
6
|
_reporter: any
|
|
@@ -38,7 +38,7 @@ export class TerminalReporter {
|
|
|
38
38
|
break
|
|
39
39
|
case 'bundle_build_done': {
|
|
40
40
|
this._reporter.update(args)
|
|
41
|
-
const realEntryPath =
|
|
41
|
+
const realEntryPath = require.resolve(emptyModulePath)
|
|
42
42
|
if (this._initialized) {
|
|
43
43
|
// 恢复入口页面的缓存
|
|
44
44
|
this._reporter.ignoreEntryFileCache = false
|