create-react-native-library 0.61.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 -11
- 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 -209
- package/lib/exampleApp/generateExampleApp.js.map +0 -1
- package/lib/index.js +0 -129
- package/lib/index.js.map +0 -1
- package/lib/inform.js +0 -82
- package/lib/inform.js.map +0 -1
- package/lib/prompt.js +0 -307
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveNpmPackageVersion.js","sourceRoot":"","sources":["../../../src/utils/resolveNpmPackageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAY,EACZ,QAAgB,EAChB,UAAkB,IAAI;IAEtB,IAAI,MAAc,CAAC;IAEnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAEjE,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAC1B,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBAC9B,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC,EAAE,OAAO,CAAC,CAAC;YACd,CAAC,CAAC;YACF,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function sortObjectKeys<T extends Record<string, unknown>>(obj: T): T;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default function sortObjectKeys(obj) {
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/require-array-sort-compare
|
|
3
|
+
return Object.keys(obj).sort().reduce((acc, key) => {
|
|
4
|
+
acc[key] = obj[key];
|
|
5
|
+
return acc;
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
7
|
+
}, {});
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=sortObjectKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortObjectKeys.js","sourceRoot":"","sources":["../../../src/utils/sortObjectKeys.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,GAAM;IAEN,yEAAyE;IACzE,OAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,CAAC;QACX,uEAAuE;IACzE,CAAC,EAAE,EAAO,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import crossSpawn from 'cross-spawn';
|
|
2
|
+
export const spawn = async (...args) => {
|
|
3
|
+
return new Promise((resolve, reject) => {
|
|
4
|
+
const child = crossSpawn(...args);
|
|
5
|
+
let stdout = '';
|
|
6
|
+
let stderr = '';
|
|
7
|
+
child.stdout?.setEncoding('utf8');
|
|
8
|
+
child.stdout?.on('data', (data) => {
|
|
9
|
+
stdout += data;
|
|
10
|
+
});
|
|
11
|
+
child.stderr?.setEncoding('utf8');
|
|
12
|
+
child.stderr?.on('data', (data) => {
|
|
13
|
+
stderr += data;
|
|
14
|
+
});
|
|
15
|
+
child.once('error', reject);
|
|
16
|
+
child.once('close', (code) => {
|
|
17
|
+
if (code === 0) {
|
|
18
|
+
resolve(stdout.trim());
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
reject(new Error(stderr.trim()));
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/utils/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,GAAG,IAAmC,EAAE,EAAE;IACpE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QAElC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-react-native-library",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.62.1",
|
|
4
4
|
"description": "CLI to scaffold React Native libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -23,7 +23,10 @@
|
|
|
23
23
|
"url": "https://github.com/callstack/react-native-builder-bob/issues"
|
|
24
24
|
},
|
|
25
25
|
"homepage": "https://oss.callstack.com/react-native-builder-bob/create",
|
|
26
|
-
"
|
|
26
|
+
"type": "module",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": "./lib/src/index.js"
|
|
29
|
+
},
|
|
27
30
|
"bin": "bin/create-react-native-library",
|
|
28
31
|
"files": [
|
|
29
32
|
"lib",
|
|
@@ -37,7 +40,7 @@
|
|
|
37
40
|
"registry": "https://registry.npmjs.org/"
|
|
38
41
|
},
|
|
39
42
|
"scripts": {
|
|
40
|
-
"prepare": "
|
|
43
|
+
"prepare": "del-cli lib .tsbuildinfo && tsc"
|
|
41
44
|
},
|
|
42
45
|
"dependencies": {
|
|
43
46
|
"cross-spawn": "^7.0.6",
|
|
@@ -48,20 +51,19 @@
|
|
|
48
51
|
"github-username": "^9.0.0",
|
|
49
52
|
"kleur": "^4.1.5",
|
|
50
53
|
"ora": "^9.3.0",
|
|
51
|
-
"pigment": "^0.4.
|
|
54
|
+
"pigment": "^0.4.4",
|
|
55
|
+
"typescript": "^6.0.3",
|
|
52
56
|
"validate-npm-package-name": "^7.0.2"
|
|
53
57
|
},
|
|
54
58
|
"devDependencies": {
|
|
55
|
-
"@babel/cli": "^7.28.6",
|
|
56
|
-
"@babel/core": "^7.29.0",
|
|
57
|
-
"@babel/preset-env": "^7.29.2",
|
|
58
|
-
"@babel/preset-typescript": "^7.28.5",
|
|
59
59
|
"@commitlint/config-conventional": "^20.5.0",
|
|
60
60
|
"@types/cross-spawn": "^6.0.6",
|
|
61
61
|
"@types/dedent": "^0.7.2",
|
|
62
62
|
"@types/ejs": "^3.1.5",
|
|
63
63
|
"@types/fs-extra": "^11.0.4",
|
|
64
|
-
"@types/
|
|
64
|
+
"@types/node": "^20.19.39",
|
|
65
|
+
"@types/validate-npm-package-name": "^4.0.2",
|
|
66
|
+
"del-cli": "^7.0.0"
|
|
65
67
|
},
|
|
66
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "d4370e22e9e2976b464096fbd2b5738c740266e0"
|
|
67
69
|
}
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
<% if (project.moduleConfig === 'nitro-modules' || project.viewConfig === 'nitro-view') { -%>
|
|
85
85
|
"react-native-nitro-modules": "^<%- versions.nitro %>",
|
|
86
86
|
<% } -%>
|
|
87
|
-
"typescript": "^6.0.
|
|
87
|
+
"typescript": "^6.0.3"
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
90
|
"react": "*",
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
"useTabs": false
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"@eslint/compat": "^2.0
|
|
13
|
+
"@eslint/compat": "^2.1.0",
|
|
14
14
|
"@eslint/eslintrc": "^3.3.5",
|
|
15
15
|
"@eslint/js": "^10.0.1",
|
|
16
16
|
"@react-native/eslint-config": "0.85.0",
|
|
17
17
|
"eslint": "^9.39.4",
|
|
18
18
|
"eslint-config-prettier": "^10.1.8",
|
|
19
19
|
"eslint-plugin-ft-flow": "^3.0.11",
|
|
20
|
-
"eslint-plugin-prettier": "^5.5.
|
|
21
|
-
"prettier": "^3.8.
|
|
20
|
+
"eslint-plugin-prettier": "^5.5.6",
|
|
21
|
+
"prettier": "^3.8.3"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"extends": ["@commitlint/config-conventional"]
|
|
4
4
|
},
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@commitlint/config-conventional": "^
|
|
7
|
-
"commitlint": "^
|
|
8
|
-
"lefthook": "^2.1.
|
|
6
|
+
"@commitlint/config-conventional": "^21.0.2",
|
|
7
|
+
"commitlint": "^21.0.2",
|
|
8
|
+
"lefthook": "^2.1.9"
|
|
9
9
|
}
|
|
10
10
|
}
|
package/lib/constants.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.SUPPORTED_REACT_NATIVE_VERSION = exports.SUPPORTED_MONOREPO_CONFIG_VERSION = exports.FALLBACK_NITRO_MODULES_VERSION = exports.FALLBACK_BOB_VERSION = void 0;
|
|
7
|
-
const FALLBACK_BOB_VERSION = exports.FALLBACK_BOB_VERSION = '0.41.0';
|
|
8
|
-
const FALLBACK_NITRO_MODULES_VERSION = exports.FALLBACK_NITRO_MODULES_VERSION = '0.35.3';
|
|
9
|
-
const SUPPORTED_MONOREPO_CONFIG_VERSION = exports.SUPPORTED_MONOREPO_CONFIG_VERSION = '0.3.3';
|
|
10
|
-
const SUPPORTED_REACT_NATIVE_VERSION = exports.SUPPORTED_REACT_NATIVE_VERSION = '0.85.0';
|
|
11
|
-
//# sourceMappingURL=constants.js.map
|
package/lib/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["FALLBACK_BOB_VERSION","exports","FALLBACK_NITRO_MODULES_VERSION","SUPPORTED_MONOREPO_CONFIG_VERSION","SUPPORTED_REACT_NATIVE_VERSION"],"sources":["../src/constants.ts"],"sourcesContent":["export const FALLBACK_BOB_VERSION = '0.41.0';\nexport const FALLBACK_NITRO_MODULES_VERSION = '0.35.3';\nexport const SUPPORTED_MONOREPO_CONFIG_VERSION = '0.3.3';\nexport const SUPPORTED_REACT_NATIVE_VERSION = '0.85.0';\n"],"mappings":";;;;;;AAAO,MAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,QAAQ;AACrC,MAAME,8BAA8B,GAAAD,OAAA,CAAAC,8BAAA,GAAG,QAAQ;AAC/C,MAAMC,iCAAiC,GAAAF,OAAA,CAAAE,iCAAA,GAAG,OAAO;AACjD,MAAMC,8BAA8B,GAAAH,OAAA,CAAAG,8BAAA,GAAG,QAAQ","ignoreList":[]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.alignDependencyVersionsWithExampleApp = alignDependencyVersionsWithExampleApp;
|
|
7
|
-
var _path = _interopRequireDefault(require("path"));
|
|
8
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
9
|
-
var _sortObjectKeys = _interopRequireDefault(require("../utils/sortObjectKeys"));
|
|
10
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
-
async function alignDependencyVersionsWithExampleApp(pkg, folder) {
|
|
12
|
-
const examplePackageJson = await _fsExtra.default.readJSON(_path.default.join(folder, 'example', 'package.json'));
|
|
13
|
-
const PACKAGES_TO_COPY = ['react', 'react-native', '@types/react', '@react-native/babel-preset'];
|
|
14
|
-
const usesCodegen = pkg['react-native-builder-bob']?.targets?.some(target => Array.isArray(target) ? target[0] === 'codegen' : target === 'codegen') ?? false;
|
|
15
|
-
if (usesCodegen) {
|
|
16
|
-
PACKAGES_TO_COPY.push('@react-native-community/cli');
|
|
17
|
-
}
|
|
18
|
-
const devDependencies = {};
|
|
19
|
-
PACKAGES_TO_COPY.forEach(name => {
|
|
20
|
-
if (name) {
|
|
21
|
-
const version = examplePackageJson.dependencies?.[name] ?? examplePackageJson.devDependencies?.[name];
|
|
22
|
-
if (version != null) {
|
|
23
|
-
devDependencies[name] = version;
|
|
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'] = (0, _sortObjectKeys.default)({
|
|
30
|
-
...pkg['devDependencies'],
|
|
31
|
-
...devDependencies
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=dependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","names":["_path","_interopRequireDefault","require","_fsExtra","_sortObjectKeys","e","__esModule","default","alignDependencyVersionsWithExampleApp","pkg","folder","examplePackageJson","fs","readJSON","path","join","PACKAGES_TO_COPY","usesCodegen","targets","some","target","Array","isArray","push","devDependencies","forEach","name","version","dependencies","Error","sortObjectKeys"],"sources":["../../src/exampleApp/dependencies.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport sortObjectKeys from '../utils/sortObjectKeys';\n\ntype PackageJson = {\n devDependencies?: Record<string, string>;\n 'react-native-builder-bob'?: {\n targets?: (string | [string, unknown])[];\n };\n};\n\nexport async function alignDependencyVersionsWithExampleApp(\n pkg: PackageJson,\n folder: string\n) {\n const examplePackageJson = await fs.readJSON(\n path.join(folder, 'example', 'package.json')\n );\n\n const PACKAGES_TO_COPY = [\n 'react',\n 'react-native',\n '@types/react',\n '@react-native/babel-preset',\n ];\n\n const usesCodegen =\n pkg['react-native-builder-bob']?.targets?.some((target) =>\n Array.isArray(target) ? target[0] === 'codegen' : target === 'codegen'\n ) ?? false;\n\n if (usesCodegen) {\n PACKAGES_TO_COPY.push('@react-native-community/cli');\n }\n\n const devDependencies: Record<string, string> = {};\n\n PACKAGES_TO_COPY.forEach((name) => {\n if (name) {\n const version =\n examplePackageJson.dependencies?.[name] ??\n examplePackageJson.devDependencies?.[name];\n\n if (version != null) {\n devDependencies[name] = version;\n } else if (pkg.devDependencies?.[name] == null) {\n throw new Error(\n `Couldn't find the package \"${name}\" in the example app.`\n );\n }\n }\n });\n\n pkg['devDependencies'] = sortObjectKeys({\n ...pkg['devDependencies'],\n ...devDependencies,\n });\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA;AAAqD,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAS9C,eAAeG,qCAAqCA,CACzDC,GAAgB,EAChBC,MAAc,EACd;EACA,MAAMC,kBAAkB,GAAG,MAAMC,gBAAE,CAACC,QAAQ,CAC1CC,aAAI,CAACC,IAAI,CAACL,MAAM,EAAE,SAAS,EAAE,cAAc,CAC7C,CAAC;EAED,MAAMM,gBAAgB,GAAG,CACvB,OAAO,EACP,cAAc,EACd,cAAc,EACd,4BAA4B,CAC7B;EAED,MAAMC,WAAW,GACfR,GAAG,CAAC,0BAA0B,CAAC,EAAES,OAAO,EAAEC,IAAI,CAAEC,MAAM,IACpDC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,GAAGA,MAAM,KAAK,SAC/D,CAAC,IAAI,KAAK;EAEZ,IAAIH,WAAW,EAAE;IACfD,gBAAgB,CAACO,IAAI,CAAC,6BAA6B,CAAC;EACtD;EAEA,MAAMC,eAAuC,GAAG,CAAC,CAAC;EAElDR,gBAAgB,CAACS,OAAO,CAAEC,IAAI,IAAK;IACjC,IAAIA,IAAI,EAAE;MACR,MAAMC,OAAO,GACXhB,kBAAkB,CAACiB,YAAY,GAAGF,IAAI,CAAC,IACvCf,kBAAkB,CAACa,eAAe,GAAGE,IAAI,CAAC;MAE5C,IAAIC,OAAO,IAAI,IAAI,EAAE;QACnBH,eAAe,CAACE,IAAI,CAAC,GAAGC,OAAO;MACjC,CAAC,MAAM,IAAIlB,GAAG,CAACe,eAAe,GAAGE,IAAI,CAAC,IAAI,IAAI,EAAE;QAC9C,MAAM,IAAIG,KAAK,CACb,8BAA8BH,IAAI,uBACpC,CAAC;MACH;IACF;EACF,CAAC,CAAC;EAEFjB,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAAqB,uBAAc,EAAC;IACtC,GAAGrB,GAAG,CAAC,iBAAiB,CAAC;IACzB,GAAGe;EACL,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = generateExampleApp;
|
|
7
|
-
var _dedent = _interopRequireDefault(require("dedent"));
|
|
8
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
9
|
-
var _getLatestVersion = require("get-latest-version");
|
|
10
|
-
var _https = _interopRequireDefault(require("https"));
|
|
11
|
-
var _path = _interopRequireDefault(require("path"));
|
|
12
|
-
var _constants = require("../constants");
|
|
13
|
-
var _sortObjectKeys = _interopRequireDefault(require("../utils/sortObjectKeys"));
|
|
14
|
-
var _spawn = require("../utils/spawn");
|
|
15
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
-
const FILES_TO_DELETE = ['__tests__', '.buckconfig', '.eslintrc.js', '.flowconfig', '.git', '.gitignore', '.prettierrc.js', 'App.js', 'App.tsx', 'index.js', 'tsconfig.json'];
|
|
17
|
-
const PACKAGES_TO_REMOVE = ['@react-native/eslint-config', '@react-native/new-app-screen', '@tsconfig/react-native', '@types/jest', '@types/react-test-renderer', '@typescript-eslint/eslint-plugin', '@typescript-eslint/parser', 'babel-jest', 'eslint', 'jest', 'prettier', 'react-test-renderer', 'typescript', 'react-native-safe-area-context'];
|
|
18
|
-
const PACKAGES_TO_ADD_EXPO_WEB = {
|
|
19
|
-
'@expo/metro-runtime': '~5.0.4',
|
|
20
|
-
'react-native-web': '~0.21.1'
|
|
21
|
-
};
|
|
22
|
-
const PACKAGES_TO_ADD_DEV_EXPO_NATIVE = {
|
|
23
|
-
'expo-dev-client': '~5.0.3'
|
|
24
|
-
};
|
|
25
|
-
async function generateExampleApp({
|
|
26
|
-
config,
|
|
27
|
-
root,
|
|
28
|
-
reactNativeVersion = 'latest'
|
|
29
|
-
}) {
|
|
30
|
-
const directory = _path.default.join(root, 'example');
|
|
31
|
-
let args = [];
|
|
32
|
-
switch (config.example) {
|
|
33
|
-
case 'vanilla':
|
|
34
|
-
// `npx @react-native-community/cli init <projectName> --directory example --skip-install`
|
|
35
|
-
args = [`@react-native-community/cli`, 'init', `${config.project.name}Example`, '--package-name', `${config.project.package}.example`, '--directory', directory, '--version', reactNativeVersion, '--skip-install', '--skip-git-init', '--pm', 'npm'];
|
|
36
|
-
break;
|
|
37
|
-
case 'test-app':
|
|
38
|
-
{
|
|
39
|
-
// Test App requires React Native version to be a semver version
|
|
40
|
-
const matchedReactNativeVersion = /(\d+\.\d+[-.0-9a-z]*)/.test(reactNativeVersion) ? reactNativeVersion : await (0, _getLatestVersion.getLatestVersion)('react-native', {
|
|
41
|
-
range: reactNativeVersion
|
|
42
|
-
});
|
|
43
|
-
if (!matchedReactNativeVersion) {
|
|
44
|
-
throw new Error(`Could not find a matching version for react-native: ${reactNativeVersion}`);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`
|
|
48
|
-
args = ['--package', `react-native-test-app@latest`, 'init', '--name', `${config.project.name}Example`, `--destination`, directory, '--version', matchedReactNativeVersion, '--platform', 'ios', '--platform', 'android'];
|
|
49
|
-
}
|
|
50
|
-
break;
|
|
51
|
-
case 'expo':
|
|
52
|
-
// `npx create-expo-app example --no-install --template blank`
|
|
53
|
-
args = ['create-expo-app@latest', directory, '--no-install', '--template', 'blank'];
|
|
54
|
-
break;
|
|
55
|
-
case undefined:
|
|
56
|
-
case null:
|
|
57
|
-
{
|
|
58
|
-
// Do nothing
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
await (0, _spawn.spawn)('npx', args, {
|
|
62
|
-
env: {
|
|
63
|
-
...process.env,
|
|
64
|
-
npm_config_yes: 'true'
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
// Remove unnecessary files and folders
|
|
69
|
-
for (const file of FILES_TO_DELETE) {
|
|
70
|
-
await _fsExtra.default.remove(_path.default.join(directory, file));
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Patch the example app's package.json
|
|
74
|
-
const pkg = await _fsExtra.default.readJSON(_path.default.join(directory, 'package.json'));
|
|
75
|
-
pkg.name = `${config.project.slug}-example`;
|
|
76
|
-
|
|
77
|
-
// Remove Jest config for now
|
|
78
|
-
delete pkg.jest;
|
|
79
|
-
|
|
80
|
-
// Make sure we have at least empty objects
|
|
81
|
-
// Otherwise generation will fails if package doesn't contain these fields
|
|
82
|
-
pkg.scripts = pkg.scripts || {};
|
|
83
|
-
pkg.dependencies = pkg.dependencies || {};
|
|
84
|
-
pkg.devDependencies = pkg.devDependencies || {};
|
|
85
|
-
const {
|
|
86
|
-
scripts,
|
|
87
|
-
dependencies,
|
|
88
|
-
devDependencies
|
|
89
|
-
} = pkg;
|
|
90
|
-
delete scripts.test;
|
|
91
|
-
delete scripts.lint;
|
|
92
|
-
const SCRIPTS_TO_ADD = config.example === 'expo' ? {
|
|
93
|
-
'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`,
|
|
94
|
-
'build:android': 'cd android && ./gradlew assembleDebug -DtestBuildType=debug -Dorg.gradle.jvmargs=-Xmx4g'
|
|
95
|
-
} : {
|
|
96
|
-
'build:android': 'react-native build-android --extra-params "--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a"',
|
|
97
|
-
'build:ios': `react-native build-ios --mode Debug`
|
|
98
|
-
};
|
|
99
|
-
if (config.example != null) {
|
|
100
|
-
Object.assign(scripts, SCRIPTS_TO_ADD);
|
|
101
|
-
}
|
|
102
|
-
if (config.example === 'test-app') {
|
|
103
|
-
// `react-native-test-app` doesn't bundle application by default in 'Release' mode and also `bundle` command doesn't create a directory.
|
|
104
|
-
// `mkdist` script should be removed after stable React Native major contains this fix: https://github.com/facebook/react-native/pull/45182.
|
|
105
|
-
|
|
106
|
-
const androidBuild = ['npm run mkdist', 'react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist', SCRIPTS_TO_ADD['build:android']].join(' && ');
|
|
107
|
-
const iosBuild = ['npm run mkdist', 'react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist', SCRIPTS_TO_ADD['build:ios']].join(' && ');
|
|
108
|
-
Object.assign(scripts, {
|
|
109
|
-
'build:android': androidBuild,
|
|
110
|
-
'build:ios': iosBuild
|
|
111
|
-
});
|
|
112
|
-
const app = await _fsExtra.default.readJSON(_path.default.join(directory, 'app.json'));
|
|
113
|
-
app.android = app.android || {};
|
|
114
|
-
app.android.package = `${config.project.package}.example`;
|
|
115
|
-
app.ios = app.ios || {};
|
|
116
|
-
app.ios.bundleIdentifier = `${config.project.package}.example`;
|
|
117
|
-
await _fsExtra.default.writeJSON(_path.default.join(directory, 'app.json'), app, {
|
|
118
|
-
spaces: 2
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
PACKAGES_TO_REMOVE.forEach(name => {
|
|
122
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
123
|
-
delete devDependencies[name];
|
|
124
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
125
|
-
delete dependencies[name];
|
|
126
|
-
});
|
|
127
|
-
const PACKAGES_TO_ADD_DEV = {
|
|
128
|
-
'react-native-builder-bob': `^${config.versions.bob}`,
|
|
129
|
-
'react-native-monorepo-config': `^${_constants.SUPPORTED_MONOREPO_CONFIG_VERSION}`
|
|
130
|
-
};
|
|
131
|
-
if (config.project.moduleConfig === 'nitro-modules' || config.project.viewConfig === 'nitro-view') {
|
|
132
|
-
const packagesToAddNitro = {
|
|
133
|
-
'react-native-nitro-modules': `^${config.versions.nitro || 'latest'}`
|
|
134
|
-
};
|
|
135
|
-
Object.assign(dependencies, packagesToAddNitro);
|
|
136
|
-
}
|
|
137
|
-
Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);
|
|
138
|
-
if (config.example === 'expo') {
|
|
139
|
-
const sdkVersion = dependencies.expo.split('.')[0].replace(/[^\d]/, '');
|
|
140
|
-
let bundledNativeModules;
|
|
141
|
-
try {
|
|
142
|
-
bundledNativeModules = await new Promise((resolve, reject) => {
|
|
143
|
-
_https.default.get(`https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`, res => {
|
|
144
|
-
let data = '';
|
|
145
|
-
res.on('data', chunk => data += chunk);
|
|
146
|
-
res.on('end', () => {
|
|
147
|
-
try {
|
|
148
|
-
resolve(JSON.parse(data));
|
|
149
|
-
} catch (e) {
|
|
150
|
-
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
|
|
151
|
-
reject(e);
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
}).on('error', reject);
|
|
155
|
-
});
|
|
156
|
-
} catch (e) {
|
|
157
|
-
bundledNativeModules = {};
|
|
158
|
-
}
|
|
159
|
-
if (config.project.native) {
|
|
160
|
-
Object.entries(PACKAGES_TO_ADD_DEV_EXPO_NATIVE).forEach(([name, version]) => {
|
|
161
|
-
devDependencies[name] = bundledNativeModules[name] || version;
|
|
162
|
-
});
|
|
163
|
-
scripts.start = 'expo start --dev-client';
|
|
164
|
-
scripts.android = 'expo run:android';
|
|
165
|
-
scripts.ios = 'expo run:ios';
|
|
166
|
-
await _fsExtra.default.writeFile(_path.default.join(directory, '.gitignore'), (0, _dedent.default)`
|
|
167
|
-
# These folders are generated with prebuild (CNG)
|
|
168
|
-
android/
|
|
169
|
-
ios/
|
|
170
|
-
`);
|
|
171
|
-
}
|
|
172
|
-
const reactVersion = dependencies.react ?? devDependencies.react;
|
|
173
|
-
if (typeof reactVersion !== 'string') {
|
|
174
|
-
throw new Error("Couldn't find the package 'react' in the example app.");
|
|
175
|
-
}
|
|
176
|
-
Object.entries(PACKAGES_TO_ADD_EXPO_WEB).forEach(([name, version]) => {
|
|
177
|
-
dependencies[name] = bundledNativeModules[name] || version;
|
|
178
|
-
});
|
|
179
|
-
dependencies['react-dom'] = reactVersion;
|
|
180
|
-
scripts.web = 'expo start --web';
|
|
181
|
-
scripts['build:web'] = 'expo export --platform web';
|
|
182
|
-
const app = await _fsExtra.default.readJSON(_path.default.join(directory, 'app.json'));
|
|
183
|
-
app.expo.name = `${config.project.name} Example`;
|
|
184
|
-
app.expo.slug = `${config.project.slug}-example`;
|
|
185
|
-
app.expo.android = app.expo.android || {};
|
|
186
|
-
app.expo.android.package = `${config.project.package}.example`;
|
|
187
|
-
app.expo.ios = app.expo.ios || {};
|
|
188
|
-
app.expo.ios.bundleIdentifier = `${config.project.package}.example`;
|
|
189
|
-
await _fsExtra.default.writeJSON(_path.default.join(directory, 'app.json'), app, {
|
|
190
|
-
spaces: 2
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Sort the deps by name to match behavior of package managers
|
|
195
|
-
// This way the package.json doesn't get updated when installing deps
|
|
196
|
-
for (const field of ['dependencies', 'devDependencies']) {
|
|
197
|
-
if (pkg[field]) {
|
|
198
|
-
pkg[field] = (0, _sortObjectKeys.default)(pkg[field]);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
await _fsExtra.default.writeJSON(_path.default.join(directory, 'package.json'), pkg, {
|
|
202
|
-
spaces: 2
|
|
203
|
-
});
|
|
204
|
-
if (config.example === 'vanilla' && config.project.cpp) {
|
|
205
|
-
const podfile = await _fsExtra.default.readFile(_path.default.join(directory, 'ios', 'Podfile'), 'utf8');
|
|
206
|
-
await _fsExtra.default.writeFile(_path.default.join(directory, 'ios', 'Podfile'), "ENV['RCT_USE_RN_DEP'] = '1' # Needed to make iOS build work for C++ module\n\n" + podfile);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
//# sourceMappingURL=generateExampleApp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateExampleApp.js","names":["_dedent","_interopRequireDefault","require","_fsExtra","_getLatestVersion","_https","_path","_constants","_sortObjectKeys","_spawn","e","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_EXPO_WEB","PACKAGES_TO_ADD_DEV_EXPO_NATIVE","generateExampleApp","config","root","reactNativeVersion","directory","path","join","args","example","project","name","package","matchedReactNativeVersion","test","getLatestVersion","range","Error","undefined","spawn","env","process","npm_config_yes","file","fs","remove","pkg","readJSON","slug","jest","scripts","dependencies","devDependencies","lint","SCRIPTS_TO_ADD","Object","assign","androidBuild","iosBuild","app","android","ios","bundleIdentifier","writeJSON","spaces","forEach","PACKAGES_TO_ADD_DEV","versions","bob","SUPPORTED_MONOREPO_CONFIG_VERSION","moduleConfig","viewConfig","packagesToAddNitro","nitro","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","JSON","parse","native","entries","version","start","writeFile","dedent","reactVersion","react","web","field","sortObjectKeys","cpp","podfile","readFile"],"sources":["../../src/exampleApp/generateExampleApp.ts"],"sourcesContent":["import dedent from 'dedent';\nimport fs from 'fs-extra';\nimport { getLatestVersion } from 'get-latest-version';\nimport https from 'https';\nimport path from 'path';\nimport { SUPPORTED_MONOREPO_CONFIG_VERSION } from '../constants';\nimport type { TemplateConfiguration } from '../template';\nimport sortObjectKeys from '../utils/sortObjectKeys';\nimport { spawn } from '../utils/spawn';\n\nconst FILES_TO_DELETE = [\n '__tests__',\n '.buckconfig',\n '.eslintrc.js',\n '.flowconfig',\n '.git',\n '.gitignore',\n '.prettierrc.js',\n 'App.js',\n 'App.tsx',\n 'index.js',\n 'tsconfig.json',\n];\n\nconst PACKAGES_TO_REMOVE = [\n '@react-native/eslint-config',\n '@react-native/new-app-screen',\n '@tsconfig/react-native',\n '@types/jest',\n '@types/react-test-renderer',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'babel-jest',\n 'eslint',\n 'jest',\n 'prettier',\n 'react-test-renderer',\n 'typescript',\n 'react-native-safe-area-context',\n];\n\nconst PACKAGES_TO_ADD_EXPO_WEB = {\n '@expo/metro-runtime': '~5.0.4',\n 'react-native-web': '~0.21.1',\n};\n\nconst PACKAGES_TO_ADD_DEV_EXPO_NATIVE = {\n 'expo-dev-client': '~5.0.3',\n};\n\nexport default async function generateExampleApp({\n config,\n root,\n reactNativeVersion = 'latest',\n}: {\n config: TemplateConfiguration;\n root: string;\n reactNativeVersion: string | undefined;\n}) {\n const directory = path.join(root, 'example');\n\n let args: string[] = [];\n\n switch (config.example) {\n case 'vanilla':\n // `npx @react-native-community/cli init <projectName> --directory example --skip-install`\n args = [\n `@react-native-community/cli`,\n 'init',\n `${config.project.name}Example`,\n '--package-name',\n `${config.project.package}.example`,\n '--directory',\n directory,\n '--version',\n reactNativeVersion,\n '--skip-install',\n '--skip-git-init',\n '--pm',\n 'npm',\n ];\n break;\n case 'test-app':\n {\n // Test App requires React Native version to be a semver version\n const matchedReactNativeVersion = /(\\d+\\.\\d+[-.0-9a-z]*)/.test(\n reactNativeVersion\n )\n ? reactNativeVersion\n : await getLatestVersion('react-native', {\n range: reactNativeVersion,\n });\n\n if (!matchedReactNativeVersion) {\n throw new Error(\n `Could not find a matching version for react-native: ${reactNativeVersion}`\n );\n }\n\n // `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`\n args = [\n '--package',\n `react-native-test-app@latest`,\n 'init',\n '--name',\n `${config.project.name}Example`,\n `--destination`,\n directory,\n '--version',\n matchedReactNativeVersion,\n '--platform',\n 'ios',\n '--platform',\n 'android',\n ];\n }\n break;\n case 'expo':\n // `npx create-expo-app example --no-install --template blank`\n args = [\n 'create-expo-app@latest',\n directory,\n '--no-install',\n '--template',\n 'blank',\n ];\n break;\n case undefined:\n case null: {\n // Do nothing\n }\n }\n\n await spawn('npx', args, {\n env: { ...process.env, npm_config_yes: 'true' },\n });\n\n // Remove unnecessary files and folders\n for (const file of FILES_TO_DELETE) {\n await fs.remove(path.join(directory, file));\n }\n\n // Patch the example app's package.json\n const pkg = await fs.readJSON(path.join(directory, 'package.json'));\n\n pkg.name = `${config.project.slug}-example`;\n\n // Remove Jest config for now\n delete pkg.jest;\n\n // Make sure we have at least empty objects\n // Otherwise generation will fails if package doesn't contain these fields\n pkg.scripts = pkg.scripts || {};\n pkg.dependencies = pkg.dependencies || {};\n pkg.devDependencies = pkg.devDependencies || {};\n\n const { scripts, dependencies, devDependencies } = pkg;\n\n delete scripts.test;\n delete scripts.lint;\n\n const SCRIPTS_TO_ADD =\n config.example === 'expo'\n ? {\n '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`,\n 'build:android':\n 'cd android && ./gradlew assembleDebug -DtestBuildType=debug -Dorg.gradle.jvmargs=-Xmx4g',\n }\n : {\n 'build:android':\n 'react-native build-android --extra-params \"--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a\"',\n 'build:ios': `react-native build-ios --mode Debug`,\n };\n\n if (config.example != null) {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n }\n\n if (config.example === 'test-app') {\n // `react-native-test-app` doesn't bundle application by default in 'Release' mode and also `bundle` command doesn't create a directory.\n // `mkdist` script should be removed after stable React Native major contains this fix: https://github.com/facebook/react-native/pull/45182.\n\n const androidBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:android'],\n ].join(' && ');\n\n const iosBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:ios'],\n ].join(' && ');\n\n Object.assign(scripts, {\n 'build:android': androidBuild,\n 'build:ios': iosBuild,\n });\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.android = app.android || {};\n app.android.package = `${config.project.package}.example`;\n app.ios = app.ios || {};\n app.ios.bundleIdentifier = `${config.project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n PACKAGES_TO_REMOVE.forEach((name) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete devDependencies[name];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete dependencies[name];\n });\n\n const PACKAGES_TO_ADD_DEV = {\n 'react-native-builder-bob': `^${config.versions.bob}`,\n 'react-native-monorepo-config': `^${SUPPORTED_MONOREPO_CONFIG_VERSION}`,\n };\n\n if (\n config.project.moduleConfig === 'nitro-modules' ||\n config.project.viewConfig === 'nitro-view'\n ) {\n const packagesToAddNitro = {\n 'react-native-nitro-modules': `^${config.versions.nitro || 'latest'}`,\n };\n\n Object.assign(dependencies, packagesToAddNitro);\n }\n\n Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);\n\n if (config.example === 'expo') {\n const sdkVersion: string = dependencies.expo\n .split('.')[0]\n .replace(/[^\\d]/, '');\n\n let bundledNativeModules: Record<string, string>;\n\n try {\n bundledNativeModules = await new Promise((resolve, reject) => {\n https\n .get(\n `https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`,\n (res) => {\n let data = '';\n\n res.on('data', (chunk: string) => (data += chunk));\n res.on('end', () => {\n try {\n resolve(JSON.parse(data));\n } catch (e) {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(e);\n }\n });\n }\n )\n .on('error', reject);\n });\n } catch (e) {\n bundledNativeModules = {};\n }\n\n if (config.project.native) {\n Object.entries(PACKAGES_TO_ADD_DEV_EXPO_NATIVE).forEach(\n ([name, version]) => {\n devDependencies[name] = bundledNativeModules[name] || version;\n }\n );\n\n scripts.start = 'expo start --dev-client';\n scripts.android = 'expo run:android';\n scripts.ios = 'expo run:ios';\n\n await fs.writeFile(\n path.join(directory, '.gitignore'),\n dedent`\n # These folders are generated with prebuild (CNG)\n android/\n ios/\n `\n );\n }\n\n const reactVersion = dependencies.react ?? devDependencies.react;\n\n if (typeof reactVersion !== 'string') {\n throw new Error(\"Couldn't find the package 'react' in the example app.\");\n }\n\n Object.entries(PACKAGES_TO_ADD_EXPO_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n dependencies['react-dom'] = reactVersion;\n scripts.web = 'expo start --web';\n scripts['build:web'] = 'expo export --platform web';\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.expo.name = `${config.project.name} Example`;\n app.expo.slug = `${config.project.slug}-example`;\n app.expo.android = app.expo.android || {};\n app.expo.android.package = `${config.project.package}.example`;\n app.expo.ios = app.expo.ios || {};\n app.expo.ios.bundleIdentifier = `${config.project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n // Sort the deps by name to match behavior of package managers\n // This way the package.json doesn't get updated when installing deps\n for (const field of ['dependencies', 'devDependencies']) {\n if (pkg[field]) {\n pkg[field] = sortObjectKeys(pkg[field]);\n }\n }\n\n await fs.writeJSON(path.join(directory, 'package.json'), pkg, {\n spaces: 2,\n });\n\n if (config.example === 'vanilla' && config.project.cpp) {\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_USE_RN_DEP'] = '1' # Needed to make iOS build work for C++ module\\n\\n\" +\n podfile\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|