@rnx-kit/cli 0.18.8 → 0.18.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/bundle/hermes.js +2 -1
- package/lib/bundle/metro.js +4 -4
- package/lib/clean.js +109 -79
- package/lib/copy-assets.js +4 -4
- package/lib/serve/keyboard.d.ts +4 -1
- package/lib/serve/keyboard.js +3 -2
- package/package.json +10 -10
- package/lib/helpers/filesystem.d.ts +0 -3
- package/lib/helpers/filesystem.js +0 -41
package/lib/bundle/hermes.js
CHANGED
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.emitBytecode = emitBytecode;
|
|
37
37
|
const console_1 = require("@rnx-kit/console");
|
|
38
|
+
const tools_filesystem_1 = require("@rnx-kit/tools-filesystem");
|
|
38
39
|
const package_1 = require("@rnx-kit/tools-node/package");
|
|
39
40
|
const metro_1 = require("@rnx-kit/tools-react-native/metro");
|
|
40
41
|
const node_child_process_1 = require("node:child_process");
|
|
@@ -121,7 +122,7 @@ function emitBytecode(cliConfig, input, sourcemap, options) {
|
|
|
121
122
|
// @ts-expect-error Property 'composeSourceMaps' does not exist
|
|
122
123
|
const { composeSourceMaps } = (0, metro_1.requireModuleFromMetro)("metro-source-map");
|
|
123
124
|
const composed = composeSourceMaps([packagerSourcemap, compilerSourcemap]);
|
|
124
|
-
|
|
125
|
+
(0, tools_filesystem_1.writeJSONFile)(outputMap, composed, 0);
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
128
|
//# sourceMappingURL=hermes.js.map
|
package/lib/bundle/metro.js
CHANGED
|
@@ -36,9 +36,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.metroBundle = metroBundle;
|
|
37
37
|
const console_1 = require("@rnx-kit/console");
|
|
38
38
|
const metro_service_1 = require("@rnx-kit/metro-service");
|
|
39
|
+
const tools_filesystem_1 = require("@rnx-kit/tools-filesystem");
|
|
39
40
|
const nodefs = __importStar(require("node:fs"));
|
|
40
41
|
const path = __importStar(require("node:path"));
|
|
41
|
-
const filesystem_1 = require("../helpers/filesystem");
|
|
42
42
|
const metro_config_1 = require("../helpers/metro-config");
|
|
43
43
|
/**
|
|
44
44
|
* Run the Metro bundler.
|
|
@@ -74,12 +74,12 @@ async function metroBundle(metroConfig, bundleConfig, dev, minify, output = metr
|
|
|
74
74
|
minify,
|
|
75
75
|
};
|
|
76
76
|
// ensure all output directories exist
|
|
77
|
-
(0,
|
|
77
|
+
(0, tools_filesystem_1.ensureDir)(path.dirname(metroBundleArgs.bundleOutput), fs);
|
|
78
78
|
if (metroBundleArgs.sourcemapOutput) {
|
|
79
|
-
(0,
|
|
79
|
+
(0, tools_filesystem_1.ensureDir)(path.dirname(metroBundleArgs.sourcemapOutput), fs);
|
|
80
80
|
}
|
|
81
81
|
if (metroBundleArgs.assetsDest) {
|
|
82
|
-
(0,
|
|
82
|
+
(0, tools_filesystem_1.ensureDir)(metroBundleArgs.assetsDest, fs);
|
|
83
83
|
}
|
|
84
84
|
// create the bundle
|
|
85
85
|
await output(metroBundleArgs, metroConfig);
|
package/lib/clean.js
CHANGED
|
@@ -49,9 +49,8 @@ async function rnxClean(_argv, { root = process.cwd() }, cliOptions) {
|
|
|
49
49
|
if (!(0, node_fs_1.existsSync)(root)) {
|
|
50
50
|
throw new Error(`Invalid project root: ${root}`);
|
|
51
51
|
}
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
const execute = (command, args, cwd = root) => {
|
|
52
|
+
const isWindows = os.platform() === "win32";
|
|
53
|
+
const execute = (command, args, cwd = root, onError) => {
|
|
55
54
|
return new Promise((resolve, reject) => {
|
|
56
55
|
const process = (0, node_child_process_1.spawn)(command, args, {
|
|
57
56
|
cwd,
|
|
@@ -60,92 +59,123 @@ async function rnxClean(_argv, { root = process.cwd() }, cliOptions) {
|
|
|
60
59
|
});
|
|
61
60
|
process.on("error", (e) => {
|
|
62
61
|
const code = "code" in e ? e.code : "errno" in e ? e.errno : "1";
|
|
63
|
-
|
|
62
|
+
switch (code) {
|
|
63
|
+
case "ENOENT":
|
|
64
|
+
reject(`Unknown command: ${command}`);
|
|
65
|
+
break;
|
|
66
|
+
default:
|
|
67
|
+
reject(`${e.message} (code: ${code})`);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
64
70
|
});
|
|
65
71
|
process.on("close", (code) => {
|
|
66
72
|
if (code === 0) {
|
|
67
73
|
resolve();
|
|
68
74
|
}
|
|
75
|
+
else if (onError) {
|
|
76
|
+
onError(code);
|
|
77
|
+
resolve();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
reject(code);
|
|
81
|
+
}
|
|
69
82
|
});
|
|
70
83
|
});
|
|
71
84
|
};
|
|
72
85
|
const COMMANDS = {
|
|
73
|
-
android
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
cocoapods: [
|
|
92
|
-
{
|
|
93
|
-
label: "Clean CocoaPods cache",
|
|
94
|
-
action: () => execute("pod", ["cache", "clean", "--all"]),
|
|
95
|
-
},
|
|
96
|
-
],
|
|
97
|
-
metro: [
|
|
98
|
-
{
|
|
99
|
-
label: "Clean Metro cache",
|
|
100
|
-
action: () => cleanDir(`${os.tmpdir()}/metro-*`),
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
label: "Clean Haste cache",
|
|
104
|
-
action: () => cleanDir(`${os.tmpdir()}/haste-map-*`),
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
label: "Clean React Native cache",
|
|
108
|
-
action: () => cleanDir(`${os.tmpdir()}/react-*`),
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
npm: [
|
|
112
|
-
{
|
|
113
|
-
label: "Remove node_modules",
|
|
114
|
-
action: () => cleanDir(`${root}/node_modules`),
|
|
115
|
-
},
|
|
116
|
-
...(cliOptions.verifyCache
|
|
117
|
-
? [
|
|
118
|
-
{
|
|
119
|
-
label: "Verify npm cache",
|
|
120
|
-
action: () => execute(npm, ["cache", "verify"]),
|
|
86
|
+
get android() {
|
|
87
|
+
return [
|
|
88
|
+
{
|
|
89
|
+
label: "Clean Gradle cache",
|
|
90
|
+
action: () => {
|
|
91
|
+
const candidates = isWindows
|
|
92
|
+
? ["android/gradlew.bat", "gradlew.bat"]
|
|
93
|
+
: ["android/gradlew", "gradlew"];
|
|
94
|
+
const gradlew = findPath(root, candidates);
|
|
95
|
+
if (gradlew) {
|
|
96
|
+
const script = path.basename(gradlew);
|
|
97
|
+
return execute(isWindows ? script : `./${script}`, ["clean"], path.dirname(gradlew));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return Promise.resolve();
|
|
101
|
+
}
|
|
121
102
|
},
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
"
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
},
|
|
106
|
+
get cocoapods() {
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
label: "Clean CocoaPods cache",
|
|
110
|
+
action: () => execute("pod", ["cache", "clean", "--all"]),
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
},
|
|
114
|
+
get metro() {
|
|
115
|
+
const tmpdir = os.tmpdir();
|
|
116
|
+
return [
|
|
117
|
+
{
|
|
118
|
+
label: "Clean Metro cache",
|
|
119
|
+
action: () => cleanDir(`${tmpdir}/metro-*`),
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
label: "Clean Haste cache",
|
|
123
|
+
action: () => cleanDir(`${tmpdir}/haste-map-*`),
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
label: "Clean React Native cache",
|
|
127
|
+
action: () => cleanDir(`${tmpdir}/react-*`),
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
},
|
|
131
|
+
get npm() {
|
|
132
|
+
const npm = isWindows ? "npm.cmd" : "npm";
|
|
133
|
+
return [
|
|
134
|
+
{
|
|
135
|
+
label: "Remove node_modules",
|
|
136
|
+
action: () => cleanDir(`${root}/node_modules`),
|
|
137
|
+
},
|
|
138
|
+
...(cliOptions.verifyCache
|
|
139
|
+
? [
|
|
140
|
+
{
|
|
141
|
+
label: "Verify npm cache",
|
|
142
|
+
action: () => execute(npm, ["cache", "verify"]),
|
|
143
|
+
},
|
|
144
|
+
]
|
|
145
|
+
: []),
|
|
146
|
+
];
|
|
147
|
+
},
|
|
148
|
+
get watchman() {
|
|
149
|
+
const kill = isWindows ? "tskill" : "killall";
|
|
150
|
+
const ignoreError = () => void 0;
|
|
151
|
+
return [
|
|
152
|
+
{
|
|
153
|
+
label: "Stop Watchman",
|
|
154
|
+
action: () => execute(kill, ["watchman"], root, ignoreError),
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
label: "Delete Watchman cache",
|
|
158
|
+
action: () => execute("watchman", ["watch-del-all"]),
|
|
159
|
+
},
|
|
160
|
+
];
|
|
161
|
+
},
|
|
162
|
+
get xcode() {
|
|
163
|
+
return [
|
|
164
|
+
{
|
|
165
|
+
label: "Clean Xcode Simulator cache",
|
|
166
|
+
action: () => cleanDir(`${os.homedir()}/Library/Developer/CoreSimulator/Caches`),
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
},
|
|
170
|
+
get yarn() {
|
|
171
|
+
const yarn = isWindows ? "yarn.cmd" : "yarn";
|
|
172
|
+
return [
|
|
173
|
+
{
|
|
174
|
+
label: "Clean Yarn cache",
|
|
175
|
+
action: () => execute(yarn, ["cache", "clean"]),
|
|
176
|
+
},
|
|
177
|
+
];
|
|
178
|
+
},
|
|
149
179
|
};
|
|
150
180
|
const categories = cliOptions.include?.split(",") ?? ["metro", "watchman"];
|
|
151
181
|
const spinner = (0, ora_1.default)();
|
package/lib/copy-assets.js
CHANGED
|
@@ -40,6 +40,7 @@ exports.copyAssets = copyAssets;
|
|
|
40
40
|
exports.gatherConfigs = gatherConfigs;
|
|
41
41
|
exports.copyProjectAssets = copyProjectAssets;
|
|
42
42
|
const console_1 = require("@rnx-kit/console");
|
|
43
|
+
const tools_filesystem_1 = require("@rnx-kit/tools-filesystem");
|
|
43
44
|
const properties_1 = require("@rnx-kit/tools-language/properties");
|
|
44
45
|
const package_1 = require("@rnx-kit/tools-node/package");
|
|
45
46
|
const path_1 = require("@rnx-kit/tools-node/path");
|
|
@@ -48,7 +49,6 @@ const node_child_process_1 = require("node:child_process");
|
|
|
48
49
|
const nodefs = __importStar(require("node:fs"));
|
|
49
50
|
const os = __importStar(require("node:os"));
|
|
50
51
|
const path = __importStar(require("node:path"));
|
|
51
|
-
const filesystem_1 = require("./helpers/filesystem");
|
|
52
52
|
const defaultAndroidConfig = {
|
|
53
53
|
androidPluginVersion: "7.2.2",
|
|
54
54
|
compileSdkVersion: 33,
|
|
@@ -161,7 +161,7 @@ async function assembleAarBundle(context, packageName, { aar }, fs = nodefs) {
|
|
|
161
161
|
...customEnv,
|
|
162
162
|
};
|
|
163
163
|
const outputDir = path.join(context.options.assetsDest, "aar");
|
|
164
|
-
(0,
|
|
164
|
+
(0, tools_filesystem_1.ensureDir)(outputDir);
|
|
165
165
|
const dest = path.join(outputDir, `${targetName}-${version}.aar`);
|
|
166
166
|
const targets = [`:${targetName}:assembleRelease`];
|
|
167
167
|
const targetsToCopy = [[output, dest]];
|
|
@@ -234,7 +234,7 @@ async function assembleAarBundle(context, packageName, { aar }, fs = nodefs) {
|
|
|
234
234
|
`project(":${targetName}").projectDir = file(${JSON.stringify(androidProject)})`,
|
|
235
235
|
"",
|
|
236
236
|
].join("\n");
|
|
237
|
-
(0,
|
|
237
|
+
(0, tools_filesystem_1.ensureDir)(buildDir);
|
|
238
238
|
fs.writeFileSync(path.join(buildDir, "build.gradle"), buildGradle);
|
|
239
239
|
fs.writeFileSync(path.join(buildDir, "gradle.properties"), gradleProperties);
|
|
240
240
|
fs.writeFileSync(path.join(buildDir, "settings.gradle"), settingsGradle);
|
|
@@ -247,7 +247,7 @@ function copyFiles(files, destination, fs = nodefs) {
|
|
|
247
247
|
if (!Array.isArray(files) || files.length === 0) {
|
|
248
248
|
return [];
|
|
249
249
|
}
|
|
250
|
-
(0,
|
|
250
|
+
(0, tools_filesystem_1.ensureDir)(destination, fs);
|
|
251
251
|
return files.map((file) => {
|
|
252
252
|
return cp_r(file, `${destination}/${path.basename(file)}`, fs);
|
|
253
253
|
});
|
package/lib/serve/keyboard.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { MetroTerminal } from "@rnx-kit/metro-service";
|
|
2
2
|
import type { Server } from "node:http";
|
|
3
3
|
import type { DevServerMiddleware } from "./types";
|
|
4
|
+
type HttpServer = Server & {
|
|
5
|
+
httpServer?: Server;
|
|
6
|
+
};
|
|
4
7
|
type Params = {
|
|
5
8
|
devServerUrl: string;
|
|
6
9
|
help: () => void;
|
|
@@ -8,6 +11,6 @@ type Params = {
|
|
|
8
11
|
metroTerminal: MetroTerminal;
|
|
9
12
|
reactNativePath: string;
|
|
10
13
|
};
|
|
11
|
-
export declare function attachKeyHandlers(server:
|
|
14
|
+
export declare function attachKeyHandlers(server: HttpServer, params: Params): void;
|
|
12
15
|
export {};
|
|
13
16
|
//# sourceMappingURL=keyboard.d.ts.map
|
package/lib/serve/keyboard.js
CHANGED
|
@@ -72,8 +72,9 @@ function attachKeyHandlers(server, params) {
|
|
|
72
72
|
process.stdin.pause();
|
|
73
73
|
process.stdin.setRawMode(false);
|
|
74
74
|
(0, console_1.info)("Exiting...");
|
|
75
|
-
server.
|
|
76
|
-
|
|
75
|
+
const httpServer = server.httpServer ?? server;
|
|
76
|
+
httpServer.close();
|
|
77
|
+
httpServer.closeAllConnections?.(); // This method was added in Node v18.2.0
|
|
77
78
|
// Even when we close all connections, clients may keep the server alive.
|
|
78
79
|
process.exit();
|
|
79
80
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rnx-kit/cli",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.10",
|
|
4
4
|
"description": "Command-line interface for working with kit packages in your repo",
|
|
5
5
|
"homepage": "https://github.com/microsoft/rnx-kit/tree/main/packages/cli#readme",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"test": "rnx-kit-scripts test"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@rnx-kit/align-deps": "^3.0
|
|
42
|
+
"@rnx-kit/align-deps": "^3.1.0",
|
|
43
43
|
"@rnx-kit/config": "^0.7.0",
|
|
44
44
|
"@rnx-kit/console": "^2.0.0",
|
|
45
45
|
"@rnx-kit/metro-plugin-cyclic-dependencies-detector": "^2.0.0",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"@rnx-kit/third-party-notices": "^2.0.0",
|
|
52
52
|
"@rnx-kit/tools-android": "^0.2.0",
|
|
53
53
|
"@rnx-kit/tools-apple": "^0.2.1",
|
|
54
|
+
"@rnx-kit/tools-filesystem": "^0.1.0",
|
|
54
55
|
"@rnx-kit/tools-language": "^3.0.0",
|
|
55
56
|
"@rnx-kit/tools-node": "^3.0.0",
|
|
56
57
|
"@rnx-kit/tools-react-native": "^2.0.3",
|
|
@@ -73,21 +74,20 @@
|
|
|
73
74
|
"devDependencies": {
|
|
74
75
|
"@babel/core": "^7.20.0",
|
|
75
76
|
"@babel/preset-env": "^7.20.0",
|
|
76
|
-
"@react-native-community/cli-types": "^15.0.
|
|
77
|
+
"@react-native-community/cli-types": "^15.0.1",
|
|
77
78
|
"@rnx-kit/eslint-config": "*",
|
|
78
79
|
"@rnx-kit/jest-preset": "*",
|
|
79
80
|
"@rnx-kit/scripts": "*",
|
|
80
|
-
"@rnx-kit/tools-filesystem": "*",
|
|
81
81
|
"@rnx-kit/tsconfig": "*",
|
|
82
82
|
"@types/connect": "^3.4.36",
|
|
83
|
-
"@types/node": "^
|
|
83
|
+
"@types/node": "^22.0.0",
|
|
84
84
|
"@types/qrcode": "^1.4.2",
|
|
85
85
|
"markdown-table": "^3.0.0",
|
|
86
|
-
"metro": "^0.81.
|
|
87
|
-
"metro-babel-transformer": "^0.81.
|
|
88
|
-
"metro-config": "^0.81.
|
|
89
|
-
"react": "
|
|
90
|
-
"react-native": "^0.
|
|
86
|
+
"metro": "^0.81.3",
|
|
87
|
+
"metro-babel-transformer": "^0.81.3",
|
|
88
|
+
"metro-config": "^0.81.3",
|
|
89
|
+
"react": "19.0.0",
|
|
90
|
+
"react-native": "^0.78.0",
|
|
91
91
|
"tsx": "^4.15.0",
|
|
92
92
|
"type-fest": "^4.0.0"
|
|
93
93
|
},
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.ensureDir = ensureDir;
|
|
37
|
-
const nodefs = __importStar(require("node:fs"));
|
|
38
|
-
function ensureDir(p, fs = nodefs) {
|
|
39
|
-
fs.mkdirSync(p, { recursive: true, mode: 0o755 });
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=filesystem.js.map
|