create-react-native-library 0.62.0 → 0.62.1
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/bin/create-react-native-library +1 -1
- package/lib/package.json +69 -0
- package/lib/src/constants.d.ts +5 -0
- package/lib/src/constants.js +6 -0
- package/lib/src/constants.js.map +1 -0
- package/lib/src/exampleApp/dependencies.d.ts +8 -0
- package/lib/src/exampleApp/dependencies.js +34 -0
- package/lib/src/exampleApp/dependencies.js.map +1 -0
- package/lib/src/exampleApp/generateExampleApp.d.ts +6 -0
- package/lib/src/exampleApp/generateExampleApp.js +309 -0
- package/lib/src/exampleApp/generateExampleApp.js.map +1 -0
- package/lib/src/index.d.ts +1 -0
- package/lib/src/index.js +134 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/inform.d.ts +10 -0
- package/lib/src/inform.js +56 -0
- package/lib/src/inform.js.map +1 -0
- package/lib/src/prompt.d.ts +125 -0
- package/lib/src/prompt.js +325 -0
- package/lib/src/prompt.js.map +1 -0
- package/lib/src/template.d.ts +44 -0
- package/lib/src/template.js +258 -0
- package/lib/src/template.js.map +1 -0
- package/lib/src/utils/assert.d.ts +1 -0
- package/lib/src/utils/assert.js +17 -0
- package/lib/src/utils/assert.js.map +1 -0
- package/lib/src/utils/configureTools.d.ts +43 -0
- package/lib/src/utils/configureTools.js +122 -0
- package/lib/src/utils/configureTools.js.map +1 -0
- package/lib/src/utils/createMetadata.d.ts +4 -0
- package/lib/src/utils/createMetadata.js +23 -0
- package/lib/src/utils/createMetadata.js.map +1 -0
- package/lib/src/utils/initialCommit.d.ts +1 -0
- package/lib/src/utils/initialCommit.js +24 -0
- package/lib/src/utils/initialCommit.js.map +1 -0
- package/lib/src/utils/local.d.ts +5 -0
- package/lib/src/utils/local.js +49 -0
- package/lib/src/utils/local.js.map +1 -0
- package/lib/src/utils/packageManager.d.ts +1 -0
- package/lib/src/utils/packageManager.js +8 -0
- package/lib/src/utils/packageManager.js.map +1 -0
- package/lib/src/utils/resolveNpmPackageVersion.d.ts +1 -0
- package/lib/src/utils/resolveNpmPackageVersion.js +20 -0
- package/lib/src/utils/resolveNpmPackageVersion.js.map +1 -0
- package/lib/src/utils/sortObjectKeys.d.ts +1 -0
- package/lib/src/utils/sortObjectKeys.js +9 -0
- package/lib/src/utils/sortObjectKeys.js.map +1 -0
- package/lib/src/utils/spawn.d.ts +2 -0
- package/lib/src/utils/spawn.js +26 -0
- package/lib/src/utils/spawn.js.map +1 -0
- package/package.json +12 -10
- package/templates/common/$package.json +1 -1
- package/templates/common/tsconfig.json +0 -2
- package/templates/tools/eslint/~package.json +3 -3
- package/templates/tools/jest/~package.json +2 -2
- package/templates/tools/lefthook/~package.json +3 -3
- package/templates/tools/release-it/~package.json +2 -2
- package/templates/tools/turborepo/~package.json +1 -1
- package/templates/tools/vite/example/~package.json +1 -1
- package/templates/tools/vite/~package.json +1 -1
- package/lib/constants.js +0 -12
- package/lib/constants.js.map +0 -1
- package/lib/exampleApp/dependencies.js +0 -34
- package/lib/exampleApp/dependencies.js.map +0 -1
- package/lib/exampleApp/generateExampleApp.js +0 -249
- package/lib/exampleApp/generateExampleApp.js.map +0 -1
- package/lib/index.js +0 -130
- package/lib/index.js.map +0 -1
- package/lib/inform.js +0 -72
- package/lib/inform.js.map +0 -1
- package/lib/prompt.js +0 -305
- package/lib/prompt.js.map +0 -1
- package/lib/template.js +0 -258
- package/lib/template.js.map +0 -1
- package/lib/utils/assert.js +0 -22
- package/lib/utils/assert.js.map +0 -1
- package/lib/utils/configureTools.js +0 -137
- package/lib/utils/configureTools.js.map +0 -1
- package/lib/utils/createMetadata.js +0 -17
- package/lib/utils/createMetadata.js.map +0 -1
- package/lib/utils/initialCommit.js +0 -37
- package/lib/utils/initialCommit.js.map +0 -1
- package/lib/utils/local.js +0 -55
- package/lib/utils/local.js.map +0 -1
- package/lib/utils/packageManager.js +0 -13
- package/lib/utils/packageManager.js.map +0 -1
- package/lib/utils/resolveNpmPackageVersion.js +0 -22
- package/lib/utils/resolveNpmPackageVersion.js.map +0 -1
- package/lib/utils/sortObjectKeys.js +0 -15
- package/lib/utils/sortObjectKeys.js.map +0 -1
- package/lib/utils/spawn.js +0 -33
- package/lib/utils/spawn.js.map +0 -1
package/lib/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-react-native-library",
|
|
3
|
+
"version": "0.62.1",
|
|
4
|
+
"description": "CLI to scaffold React Native libraries",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react-native",
|
|
7
|
+
"library",
|
|
8
|
+
"module",
|
|
9
|
+
"view",
|
|
10
|
+
"component",
|
|
11
|
+
"ios",
|
|
12
|
+
"android",
|
|
13
|
+
"web",
|
|
14
|
+
"expo"
|
|
15
|
+
],
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/callstack/react-native-builder-bob.git",
|
|
20
|
+
"directory": "packages/create-react-native-library"
|
|
21
|
+
},
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/callstack/react-native-builder-bob/issues"
|
|
24
|
+
},
|
|
25
|
+
"homepage": "https://oss.callstack.com/react-native-builder-bob/create",
|
|
26
|
+
"type": "module",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": "./lib/src/index.js"
|
|
29
|
+
},
|
|
30
|
+
"bin": "bin/create-react-native-library",
|
|
31
|
+
"files": [
|
|
32
|
+
"lib",
|
|
33
|
+
"templates"
|
|
34
|
+
],
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": "^20.19.0 || ^22.12.0 || >= 23.4.0"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public",
|
|
40
|
+
"registry": "https://registry.npmjs.org/"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"prepare": "del-cli lib .tsbuildinfo && tsc"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"cross-spawn": "^7.0.6",
|
|
47
|
+
"dedent": "^1.7.2",
|
|
48
|
+
"ejs": "^5.0.1",
|
|
49
|
+
"fs-extra": "^11.3.4",
|
|
50
|
+
"get-latest-version": "^6.0.1",
|
|
51
|
+
"github-username": "^9.0.0",
|
|
52
|
+
"kleur": "^4.1.5",
|
|
53
|
+
"ora": "^9.3.0",
|
|
54
|
+
"pigment": "^0.4.4",
|
|
55
|
+
"typescript": "^6.0.3",
|
|
56
|
+
"validate-npm-package-name": "^7.0.2"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@commitlint/config-conventional": "^20.5.0",
|
|
60
|
+
"@types/cross-spawn": "^6.0.6",
|
|
61
|
+
"@types/dedent": "^0.7.2",
|
|
62
|
+
"@types/ejs": "^3.1.5",
|
|
63
|
+
"@types/fs-extra": "^11.0.4",
|
|
64
|
+
"@types/node": "^20.19.39",
|
|
65
|
+
"@types/validate-npm-package-name": "^4.0.2",
|
|
66
|
+
"del-cli": "^7.0.0"
|
|
67
|
+
},
|
|
68
|
+
"gitHead": "d4370e22e9e2976b464096fbd2b5738c740266e0"
|
|
69
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const FALLBACK_BOB_VERSION = "0.41.0";
|
|
2
|
+
export declare const FALLBACK_NITRO_MODULES_VERSION = "0.35.3";
|
|
3
|
+
export declare const SUPPORTED_MONOREPO_CONFIG_VERSION = "0.3.3";
|
|
4
|
+
export declare const SUPPORTED_REACT_NATIVE_VERSION = "0.85.0";
|
|
5
|
+
export declare const SUPPORTED_EXPO_SDK_VERSION = "55";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const FALLBACK_BOB_VERSION = '0.41.0';
|
|
2
|
+
export const FALLBACK_NITRO_MODULES_VERSION = '0.35.3';
|
|
3
|
+
export const SUPPORTED_MONOREPO_CONFIG_VERSION = '0.3.3';
|
|
4
|
+
export const SUPPORTED_REACT_NATIVE_VERSION = '0.85.0';
|
|
5
|
+
export const SUPPORTED_EXPO_SDK_VERSION = '55';
|
|
6
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC7C,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAQ,CAAC;AACvD,MAAM,CAAC,MAAM,iCAAiC,GAAG,OAAO,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAQ,CAAC;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type PackageJson = {
|
|
2
|
+
devDependencies?: Record<string, string>;
|
|
3
|
+
'react-native-builder-bob'?: {
|
|
4
|
+
targets?: (string | [string, unknown])[];
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export declare function alignDependencyVersionsWithExampleApp(pkg: PackageJson, folder: string): Promise<void>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import sortObjectKeys from "../utils/sortObjectKeys.js";
|
|
4
|
+
export async function alignDependencyVersionsWithExampleApp(pkg, folder) {
|
|
5
|
+
const examplePackageJson = await fs.readJSON(path.join(folder, 'example', 'package.json'));
|
|
6
|
+
const PACKAGES_TO_COPY = [
|
|
7
|
+
'react',
|
|
8
|
+
'react-native',
|
|
9
|
+
'@types/react',
|
|
10
|
+
'@react-native/babel-preset',
|
|
11
|
+
];
|
|
12
|
+
const usesCodegen = pkg['react-native-builder-bob']?.targets?.some((target) => Array.isArray(target) ? target[0] === 'codegen' : target === 'codegen') ?? false;
|
|
13
|
+
if (usesCodegen) {
|
|
14
|
+
PACKAGES_TO_COPY.push('@react-native-community/cli');
|
|
15
|
+
}
|
|
16
|
+
const devDependencies = {};
|
|
17
|
+
PACKAGES_TO_COPY.forEach((name) => {
|
|
18
|
+
if (name) {
|
|
19
|
+
const version = examplePackageJson.dependencies?.[name] ??
|
|
20
|
+
examplePackageJson.devDependencies?.[name];
|
|
21
|
+
if (version != null) {
|
|
22
|
+
devDependencies[name] = version;
|
|
23
|
+
}
|
|
24
|
+
else if (pkg.devDependencies?.[name] == null) {
|
|
25
|
+
throw new Error(`Couldn't find the package "${name}" in the example app.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
pkg['devDependencies'] = sortObjectKeys({
|
|
30
|
+
...pkg['devDependencies'],
|
|
31
|
+
...devDependencies,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/exampleApp/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,cAAc,MAAM,4BAA4B,CAAC;AASxD,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,GAAgB,EAChB,MAAc;IAEd,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,CAC7C,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,OAAO;QACP,cAAc;QACd,cAAc;QACd,4BAA4B;KAC7B,CAAC;IAEF,MAAM,WAAW,GACf,GAAG,CAAC,0BAA0B,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACxD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CACvE,IAAI,KAAK,CAAC;IAEb,IAAI,WAAW,EAAE,CAAC;QAChB,gBAAgB,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,eAAe,GAA2B,EAAE,CAAC;IAEnD,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,OAAO,GACX,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC;gBACvC,kBAAkB,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YAClC,CAAC;iBAAM,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,uBAAuB,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC;QACtC,GAAG,GAAG,CAAC,iBAAiB,CAAC;QACzB,GAAG,eAAe;KACnB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import dedent from 'dedent';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { getLatestVersion } from 'get-latest-version';
|
|
5
|
+
import kleur from 'kleur';
|
|
6
|
+
import { SUPPORTED_EXPO_SDK_VERSION, SUPPORTED_MONOREPO_CONFIG_VERSION, SUPPORTED_REACT_NATIVE_VERSION, } from "../constants.js";
|
|
7
|
+
import sortObjectKeys from "../utils/sortObjectKeys.js";
|
|
8
|
+
import { spawn } from "../utils/spawn.js";
|
|
9
|
+
const FILES_TO_DELETE = [
|
|
10
|
+
'__tests__',
|
|
11
|
+
'.buckconfig',
|
|
12
|
+
'.eslintrc.js',
|
|
13
|
+
'.flowconfig',
|
|
14
|
+
'.git',
|
|
15
|
+
'.gitignore',
|
|
16
|
+
'.prettierrc.js',
|
|
17
|
+
'App.js',
|
|
18
|
+
'App.tsx',
|
|
19
|
+
'index.js',
|
|
20
|
+
'tsconfig.json',
|
|
21
|
+
];
|
|
22
|
+
const PACKAGES_TO_REMOVE = [
|
|
23
|
+
'@react-native/eslint-config',
|
|
24
|
+
'@react-native/new-app-screen',
|
|
25
|
+
'@tsconfig/react-native',
|
|
26
|
+
'@types/jest',
|
|
27
|
+
'@types/react-test-renderer',
|
|
28
|
+
'@typescript-eslint/eslint-plugin',
|
|
29
|
+
'@typescript-eslint/parser',
|
|
30
|
+
'babel-jest',
|
|
31
|
+
'eslint',
|
|
32
|
+
'jest',
|
|
33
|
+
'prettier',
|
|
34
|
+
'react-test-renderer',
|
|
35
|
+
'typescript',
|
|
36
|
+
'react-native-safe-area-context',
|
|
37
|
+
];
|
|
38
|
+
const PACKAGES_TO_ADD_EXPO_WEB = {
|
|
39
|
+
'@expo/metro-runtime': '~5.0.4',
|
|
40
|
+
'react-native-web': '~0.21.1',
|
|
41
|
+
};
|
|
42
|
+
const PACKAGES_TO_ADD_DEV_EXPO_NATIVE = {
|
|
43
|
+
'expo-dev-client': '~5.0.3',
|
|
44
|
+
};
|
|
45
|
+
async function fetchReactNativeVersion(version) {
|
|
46
|
+
const matchedReactNativeVersion = /(\d+\.\d+[-.0-9a-z]*)/.test(version)
|
|
47
|
+
? version
|
|
48
|
+
: await getLatestVersion('react-native', {
|
|
49
|
+
range: version,
|
|
50
|
+
});
|
|
51
|
+
if (!matchedReactNativeVersion) {
|
|
52
|
+
throw new Error(`Could not find a matching version for react-native: ${version}`);
|
|
53
|
+
}
|
|
54
|
+
return matchedReactNativeVersion;
|
|
55
|
+
}
|
|
56
|
+
async function fetchCompatibleExpoSDK(reactNativeVersion) {
|
|
57
|
+
const matchedReactNativeVersion = await fetchReactNativeVersion(reactNativeVersion);
|
|
58
|
+
const res = await fetch('https://api.expo.dev/v2/versions/latest');
|
|
59
|
+
if (!res.ok) {
|
|
60
|
+
throw new Error(`Failed to fetch Expo SDK versions: ${String(res.status)} ${res.statusText}`);
|
|
61
|
+
}
|
|
62
|
+
const result = await res.json();
|
|
63
|
+
const sdkVersion = Object.entries(result.data.sdkVersions)
|
|
64
|
+
.find(([, sdkVersionInfo]) => {
|
|
65
|
+
if (typeof sdkVersionInfo === 'object' &&
|
|
66
|
+
sdkVersionInfo != null &&
|
|
67
|
+
'facebookReactNativeVersion' in sdkVersionInfo &&
|
|
68
|
+
typeof sdkVersionInfo.facebookReactNativeVersion === 'string') {
|
|
69
|
+
const requested = matchedReactNativeVersion.split('.');
|
|
70
|
+
const supported = sdkVersionInfo.facebookReactNativeVersion.split('.');
|
|
71
|
+
return (requested[0] === supported[0] &&
|
|
72
|
+
requested[1] === supported[1] &&
|
|
73
|
+
(requested[2] ? requested[2] === supported[2] : true));
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
})?.[0]
|
|
77
|
+
// Get major SDK version (e.g. "55" from "55.0.0")
|
|
78
|
+
.split('.')[0];
|
|
79
|
+
if (sdkVersion == null) {
|
|
80
|
+
throw new Error(`Couldn't find a compatible Expo SDK for react-native@${reactNativeVersion}`);
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
sdkVersion,
|
|
84
|
+
reactNativeVersion: matchedReactNativeVersion,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export default async function generateExampleApp({ config, root, reactNativeVersion, }) {
|
|
88
|
+
const directory = path.join(root, 'example');
|
|
89
|
+
let args = [];
|
|
90
|
+
switch (config.example) {
|
|
91
|
+
case 'vanilla':
|
|
92
|
+
if (reactNativeVersion != null &&
|
|
93
|
+
reactNativeVersion !== SUPPORTED_REACT_NATIVE_VERSION) {
|
|
94
|
+
console.log(`${kleur.blue('ℹ')} Using untested ${kleur.cyan(`react-native@${reactNativeVersion}`)} for the example`);
|
|
95
|
+
}
|
|
96
|
+
// `npx @react-native-community/cli init <projectName> --directory example --skip-install`
|
|
97
|
+
args = [
|
|
98
|
+
`@react-native-community/cli`,
|
|
99
|
+
'init',
|
|
100
|
+
`${config.project.name}Example`,
|
|
101
|
+
'--package-name',
|
|
102
|
+
`${config.project.package}.example`,
|
|
103
|
+
'--directory',
|
|
104
|
+
directory,
|
|
105
|
+
'--version',
|
|
106
|
+
reactNativeVersion || SUPPORTED_REACT_NATIVE_VERSION,
|
|
107
|
+
'--skip-install',
|
|
108
|
+
'--skip-git-init',
|
|
109
|
+
'--pm',
|
|
110
|
+
'npm',
|
|
111
|
+
];
|
|
112
|
+
break;
|
|
113
|
+
case 'test-app':
|
|
114
|
+
{
|
|
115
|
+
// Test App doesn't support a semver range for the version
|
|
116
|
+
const matchedReactNativeVersion = reactNativeVersion
|
|
117
|
+
? await fetchReactNativeVersion(reactNativeVersion)
|
|
118
|
+
: SUPPORTED_REACT_NATIVE_VERSION;
|
|
119
|
+
if (reactNativeVersion != null &&
|
|
120
|
+
reactNativeVersion !== SUPPORTED_REACT_NATIVE_VERSION) {
|
|
121
|
+
console.log(`${kleur.blue('ℹ')} Using untested ${kleur.cyan(`react-native@${matchedReactNativeVersion}`)} for the example`);
|
|
122
|
+
}
|
|
123
|
+
// `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`
|
|
124
|
+
args = [
|
|
125
|
+
'--package',
|
|
126
|
+
`react-native-test-app@latest`,
|
|
127
|
+
'init',
|
|
128
|
+
'--name',
|
|
129
|
+
`${config.project.name}Example`,
|
|
130
|
+
`--destination`,
|
|
131
|
+
directory,
|
|
132
|
+
'--version',
|
|
133
|
+
matchedReactNativeVersion,
|
|
134
|
+
'--platform',
|
|
135
|
+
'ios',
|
|
136
|
+
'--platform',
|
|
137
|
+
'android',
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
break;
|
|
141
|
+
case 'expo': {
|
|
142
|
+
// `npx create-expo-app example --no-install --template blank`
|
|
143
|
+
const { sdkVersion, reactNativeVersion: matchedReactNativeVersion } = reactNativeVersion
|
|
144
|
+
? await fetchCompatibleExpoSDK(reactNativeVersion)
|
|
145
|
+
: {
|
|
146
|
+
sdkVersion: SUPPORTED_EXPO_SDK_VERSION,
|
|
147
|
+
reactNativeVersion: null,
|
|
148
|
+
};
|
|
149
|
+
if (sdkVersion !== SUPPORTED_EXPO_SDK_VERSION &&
|
|
150
|
+
matchedReactNativeVersion) {
|
|
151
|
+
console.log(`${kleur.blue('ℹ')} Using untested ${kleur.cyan(`expo@${sdkVersion}`)} with ${kleur.cyan(`react-native@${matchedReactNativeVersion}`)} for the example`);
|
|
152
|
+
}
|
|
153
|
+
args = [
|
|
154
|
+
'create-expo-app@latest',
|
|
155
|
+
directory,
|
|
156
|
+
'--no-install',
|
|
157
|
+
'--template',
|
|
158
|
+
`blank@sdk-${sdkVersion}`,
|
|
159
|
+
];
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case undefined:
|
|
163
|
+
case null: {
|
|
164
|
+
// Do nothing
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
await spawn('npx', args, {
|
|
168
|
+
env: { ...process.env, npm_config_yes: 'true' },
|
|
169
|
+
});
|
|
170
|
+
// Remove unnecessary files and folders
|
|
171
|
+
for (const file of FILES_TO_DELETE) {
|
|
172
|
+
await fs.remove(path.join(directory, file));
|
|
173
|
+
}
|
|
174
|
+
// Patch the example app's package.json
|
|
175
|
+
const pkg = await fs.readJSON(path.join(directory, 'package.json'));
|
|
176
|
+
pkg.name = `${config.project.slug}-example`;
|
|
177
|
+
// Remove Jest config for now
|
|
178
|
+
delete pkg.jest;
|
|
179
|
+
// Make sure we have at least empty objects
|
|
180
|
+
// Otherwise generation will fails if package doesn't contain these fields
|
|
181
|
+
pkg.scripts = pkg.scripts || {};
|
|
182
|
+
pkg.dependencies = pkg.dependencies || {};
|
|
183
|
+
pkg.devDependencies = pkg.devDependencies || {};
|
|
184
|
+
const { scripts, dependencies, devDependencies } = pkg;
|
|
185
|
+
delete scripts.test;
|
|
186
|
+
delete scripts.lint;
|
|
187
|
+
const SCRIPTS_TO_ADD = config.example === 'expo'
|
|
188
|
+
? {
|
|
189
|
+
'build:ios': `xcodebuild ONLY_ACTIVE_ARCH=YES -workspace ios/${config.project.name}Example.xcworkspace -UseNewBuildSystem=YES -scheme ${config.project.name}Example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build -quiet`,
|
|
190
|
+
'build:android': 'cd android && ./gradlew assembleDebug -DtestBuildType=debug -Dorg.gradle.jvmargs=-Xmx4g',
|
|
191
|
+
}
|
|
192
|
+
: {
|
|
193
|
+
'build:android': 'react-native build-android --extra-params "--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a"',
|
|
194
|
+
'build:ios': `react-native build-ios --mode Debug`,
|
|
195
|
+
};
|
|
196
|
+
if (config.example != null) {
|
|
197
|
+
Object.assign(scripts, SCRIPTS_TO_ADD);
|
|
198
|
+
}
|
|
199
|
+
if (config.example === 'test-app') {
|
|
200
|
+
// `react-native-test-app` doesn't bundle application by default in 'Release' mode and also `bundle` command doesn't create a directory.
|
|
201
|
+
// `mkdist` script should be removed after stable React Native major contains this fix: https://github.com/facebook/react-native/pull/45182.
|
|
202
|
+
const androidBuild = [
|
|
203
|
+
'npm run mkdist',
|
|
204
|
+
'react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist',
|
|
205
|
+
SCRIPTS_TO_ADD['build:android'],
|
|
206
|
+
].join(' && ');
|
|
207
|
+
const iosBuild = [
|
|
208
|
+
'npm run mkdist',
|
|
209
|
+
'react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist',
|
|
210
|
+
SCRIPTS_TO_ADD['build:ios'],
|
|
211
|
+
].join(' && ');
|
|
212
|
+
Object.assign(scripts, {
|
|
213
|
+
'build:android': androidBuild,
|
|
214
|
+
'build:ios': iosBuild,
|
|
215
|
+
});
|
|
216
|
+
const app = await fs.readJSON(path.join(directory, 'app.json'));
|
|
217
|
+
app.android = app.android || {};
|
|
218
|
+
app.android.package = `${config.project.package}.example`;
|
|
219
|
+
app.ios = app.ios || {};
|
|
220
|
+
app.ios.bundleIdentifier = `${config.project.package}.example`;
|
|
221
|
+
await fs.writeJSON(path.join(directory, 'app.json'), app, {
|
|
222
|
+
spaces: 2,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
PACKAGES_TO_REMOVE.forEach((name) => {
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
227
|
+
delete devDependencies[name];
|
|
228
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
229
|
+
delete dependencies[name];
|
|
230
|
+
});
|
|
231
|
+
const PACKAGES_TO_ADD_DEV = {
|
|
232
|
+
'react-native-builder-bob': `^${config.versions.bob}`,
|
|
233
|
+
'react-native-monorepo-config': `^${SUPPORTED_MONOREPO_CONFIG_VERSION}`,
|
|
234
|
+
};
|
|
235
|
+
if (config.project.moduleConfig === 'nitro-modules' ||
|
|
236
|
+
config.project.viewConfig === 'nitro-view') {
|
|
237
|
+
const packagesToAddNitro = {
|
|
238
|
+
'react-native-nitro-modules': `^${config.versions.nitro || 'latest'}`,
|
|
239
|
+
};
|
|
240
|
+
Object.assign(dependencies, packagesToAddNitro);
|
|
241
|
+
}
|
|
242
|
+
Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);
|
|
243
|
+
if (config.example === 'expo') {
|
|
244
|
+
const sdkVersion = dependencies.expo
|
|
245
|
+
.split('.')[0]
|
|
246
|
+
.replace(/[^\d]/, '');
|
|
247
|
+
let bundledNativeModules;
|
|
248
|
+
try {
|
|
249
|
+
const res = await fetch(`https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`);
|
|
250
|
+
if (!res.ok) {
|
|
251
|
+
throw new Error(`Failed to fetch bundled native modules for Expo SDK ${sdkVersion}: ${String(res.status)} ${res.statusText}`);
|
|
252
|
+
}
|
|
253
|
+
bundledNativeModules = await res.json();
|
|
254
|
+
}
|
|
255
|
+
catch (e) {
|
|
256
|
+
console.warn(`${kleur.yellow('⚠')} Failed to fetch compatibility data for Expo SDK ${sdkVersion}: ${kleur.cyan(config.example)}`);
|
|
257
|
+
bundledNativeModules = {};
|
|
258
|
+
}
|
|
259
|
+
if (config.project.native) {
|
|
260
|
+
Object.entries(PACKAGES_TO_ADD_DEV_EXPO_NATIVE).forEach(([name, version]) => {
|
|
261
|
+
devDependencies[name] = bundledNativeModules[name] || version;
|
|
262
|
+
});
|
|
263
|
+
scripts.start = 'expo start --dev-client';
|
|
264
|
+
scripts.android = 'expo run:android';
|
|
265
|
+
scripts.ios = 'expo run:ios';
|
|
266
|
+
await fs.writeFile(path.join(directory, '.gitignore'), dedent `
|
|
267
|
+
# These folders are generated with prebuild (CNG)
|
|
268
|
+
android/
|
|
269
|
+
ios/
|
|
270
|
+
`);
|
|
271
|
+
}
|
|
272
|
+
const reactVersion = dependencies.react ?? devDependencies.react;
|
|
273
|
+
if (typeof reactVersion !== 'string') {
|
|
274
|
+
throw new Error("Couldn't find the package 'react' in the example app.");
|
|
275
|
+
}
|
|
276
|
+
Object.entries(PACKAGES_TO_ADD_EXPO_WEB).forEach(([name, version]) => {
|
|
277
|
+
dependencies[name] = bundledNativeModules[name] || version;
|
|
278
|
+
});
|
|
279
|
+
dependencies['react-dom'] = reactVersion;
|
|
280
|
+
scripts.web = 'expo start --web';
|
|
281
|
+
scripts['build:web'] = 'expo export --platform web';
|
|
282
|
+
const app = await fs.readJSON(path.join(directory, 'app.json'));
|
|
283
|
+
app.expo.name = `${config.project.name} Example`;
|
|
284
|
+
app.expo.slug = `${config.project.slug}-example`;
|
|
285
|
+
app.expo.android = app.expo.android || {};
|
|
286
|
+
app.expo.android.package = `${config.project.package}.example`;
|
|
287
|
+
app.expo.ios = app.expo.ios || {};
|
|
288
|
+
app.expo.ios.bundleIdentifier = `${config.project.package}.example`;
|
|
289
|
+
await fs.writeJSON(path.join(directory, 'app.json'), app, {
|
|
290
|
+
spaces: 2,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
// Sort the deps by name to match behavior of package managers
|
|
294
|
+
// This way the package.json doesn't get updated when installing deps
|
|
295
|
+
for (const field of ['dependencies', 'devDependencies']) {
|
|
296
|
+
if (pkg[field]) {
|
|
297
|
+
pkg[field] = sortObjectKeys(pkg[field]);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
await fs.writeJSON(path.join(directory, 'package.json'), pkg, {
|
|
301
|
+
spaces: 2,
|
|
302
|
+
});
|
|
303
|
+
if (config.example === 'vanilla' && config.project.cpp) {
|
|
304
|
+
const podfile = await fs.readFile(path.join(directory, 'ios', 'Podfile'), 'utf8');
|
|
305
|
+
await fs.writeFile(path.join(directory, 'ios', 'Podfile'), "ENV['RCT_USE_RN_DEP'] = '1' # Needed to make iOS build work for C++ module\n\n" +
|
|
306
|
+
podfile);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=generateExampleApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateExampleApp.js","sourceRoot":"","sources":["../../../src/exampleApp/generateExampleApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/src/index.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import kleur from 'kleur';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import pak from '../package.json' with { type: 'json' };
|
|
6
|
+
import { FALLBACK_BOB_VERSION, FALLBACK_NITRO_MODULES_VERSION, } from "./constants.js";
|
|
7
|
+
import { alignDependencyVersionsWithExampleApp } from "./exampleApp/dependencies.js";
|
|
8
|
+
import generateExampleApp from "./exampleApp/generateExampleApp.js";
|
|
9
|
+
import { printLocalLibNextSteps, printNonLocalLibNextSteps } from "./inform.js";
|
|
10
|
+
import { prompt } from "./prompt.js";
|
|
11
|
+
import { applyTemplates, generateTemplateConfiguration } from "./template.js";
|
|
12
|
+
import { assertNpxExists } from "./utils/assert.js";
|
|
13
|
+
import { configureTools } from "./utils/configureTools.js";
|
|
14
|
+
import { createMetadata } from "./utils/createMetadata.js";
|
|
15
|
+
import { createInitialGitCommit } from "./utils/initialCommit.js";
|
|
16
|
+
import { addNitroDependencyToLocalLibrary, linkLocalLibrary, } from "./utils/local.js";
|
|
17
|
+
import { determinePackageManager } from "./utils/packageManager.js";
|
|
18
|
+
import { resolveNpmPackageVersion } from "./utils/resolveNpmPackageVersion.js";
|
|
19
|
+
async function create() {
|
|
20
|
+
// Prefetch bob version in background while asking questions
|
|
21
|
+
const bobVersionPromise = resolveNpmPackageVersion('react-native-builder-bob', FALLBACK_BOB_VERSION);
|
|
22
|
+
const nitroModulesVersionPromise = resolveNpmPackageVersion('react-native-nitro-modules', FALLBACK_NITRO_MODULES_VERSION);
|
|
23
|
+
await assertNpxExists();
|
|
24
|
+
const answers = await prompt.show({
|
|
25
|
+
name: pak.name,
|
|
26
|
+
version: pak.version,
|
|
27
|
+
description: pak.description,
|
|
28
|
+
});
|
|
29
|
+
if (answers == null) {
|
|
30
|
+
process.exit(0);
|
|
31
|
+
}
|
|
32
|
+
console.log(''); // Empty new line after prompts
|
|
33
|
+
const bobVersion = await bobVersionPromise;
|
|
34
|
+
const nitroModulesVersion = answers.type === 'nitro-module' || answers.type === 'nitro-view'
|
|
35
|
+
? await nitroModulesVersionPromise
|
|
36
|
+
: undefined;
|
|
37
|
+
const config = generateTemplateConfiguration({
|
|
38
|
+
versions: {
|
|
39
|
+
bob: bobVersion,
|
|
40
|
+
nitro: nitroModulesVersion,
|
|
41
|
+
},
|
|
42
|
+
basename: path.basename(answers.name ?? answers.directory),
|
|
43
|
+
answers,
|
|
44
|
+
});
|
|
45
|
+
const folder = path.resolve(process.cwd(), answers.directory);
|
|
46
|
+
await fs.mkdirp(folder);
|
|
47
|
+
const spinner = ora().start();
|
|
48
|
+
if (config.example != null) {
|
|
49
|
+
spinner.text = 'Generating example app';
|
|
50
|
+
await generateExampleApp({
|
|
51
|
+
root: folder,
|
|
52
|
+
reactNativeVersion: answers.reactNativeVersion,
|
|
53
|
+
config,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
if (answers.reactNativeVersion) {
|
|
58
|
+
console.warn(`${kleur.yellow('⚠')} Ignoring --react-native-version for library without example app`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
spinner.text = 'Copying files';
|
|
62
|
+
await applyTemplates(answers, config, folder);
|
|
63
|
+
const rootPackageJson = await fs.readJson(path.join(folder, 'package.json'));
|
|
64
|
+
if (config.example != null) {
|
|
65
|
+
await alignDependencyVersionsWithExampleApp(rootPackageJson, folder);
|
|
66
|
+
}
|
|
67
|
+
if (!answers.local) {
|
|
68
|
+
spinner.text = 'Configuring tools';
|
|
69
|
+
await configureTools({
|
|
70
|
+
tools: answers.tools,
|
|
71
|
+
config,
|
|
72
|
+
root: folder,
|
|
73
|
+
packageJson: rootPackageJson,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
const libraryMetadata = createMetadata(answers);
|
|
77
|
+
rootPackageJson['create-react-native-library'] = libraryMetadata;
|
|
78
|
+
await fs.writeJson(path.join(folder, 'package.json'), rootPackageJson, {
|
|
79
|
+
spaces: 2,
|
|
80
|
+
});
|
|
81
|
+
const printSuccessMessage = () => spinner.succeed(`Project created successfully at ${kleur.yellow(path.relative(process.cwd(), folder))}!\n`);
|
|
82
|
+
if (answers.local) {
|
|
83
|
+
const packageManager = await determinePackageManager();
|
|
84
|
+
let addedNitro = false;
|
|
85
|
+
if (config.project.moduleConfig === 'nitro-modules') {
|
|
86
|
+
addedNitro = await addNitroDependencyToLocalLibrary(config);
|
|
87
|
+
}
|
|
88
|
+
const linkedLocalLibrary = await linkLocalLibrary(config, folder, packageManager);
|
|
89
|
+
printSuccessMessage();
|
|
90
|
+
printLocalLibNextSteps({
|
|
91
|
+
config,
|
|
92
|
+
packageManager,
|
|
93
|
+
linkedLocalLibrary,
|
|
94
|
+
addedNitro,
|
|
95
|
+
folder,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
spinner.text = 'Initializing git repository';
|
|
100
|
+
let timer;
|
|
101
|
+
try {
|
|
102
|
+
const abortController = new AbortController();
|
|
103
|
+
// Creating git repository can get stuck in some cases,
|
|
104
|
+
// e.g. if git asks for ssh passphrase.
|
|
105
|
+
// We abort it after a timeout so that this doesn't hang forever.
|
|
106
|
+
await Promise.race([
|
|
107
|
+
createInitialGitCommit(folder, abortController.signal),
|
|
108
|
+
new Promise((_resolve, reject) => {
|
|
109
|
+
timer = setTimeout(() => {
|
|
110
|
+
const error = new Error('Creating git repository took too long');
|
|
111
|
+
abortController.abort(error.message);
|
|
112
|
+
reject(error);
|
|
113
|
+
}, 5000);
|
|
114
|
+
}),
|
|
115
|
+
]);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
spinner.warn('Failed to create git repository');
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
// The process waits for the timer if we don't clear it here
|
|
122
|
+
clearTimeout(timer);
|
|
123
|
+
}
|
|
124
|
+
printSuccessMessage();
|
|
125
|
+
printNonLocalLibNextSteps(config);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
create().catch((e) => {
|
|
129
|
+
console.log('\n');
|
|
130
|
+
console.log(kleur.red('× An error occurred while creating the project.\n'));
|
|
131
|
+
console.error(e);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TemplateConfiguration } from './template.ts';
|
|
2
|
+
export declare function printNonLocalLibNextSteps(config: TemplateConfiguration): void;
|
|
3
|
+
export declare function printLocalLibNextSteps({ folder, config, linkedLocalLibrary, addedNitro, packageManager, }: {
|
|
4
|
+
folder: string;
|
|
5
|
+
config: TemplateConfiguration;
|
|
6
|
+
linkedLocalLibrary: boolean;
|
|
7
|
+
addedNitro: boolean;
|
|
8
|
+
packageManager: string;
|
|
9
|
+
}): void;
|
|
10
|
+
export declare function printErrorHelp(message: string, error: Error): void;
|