UNPKG

5.59 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8function _fs() {
9 const data = _interopRequireDefault(require("fs"));
10
11 _fs = function () {
12 return data;
13 };
14
15 return data;
16}
17
18function _minimist() {
19 const data = _interopRequireDefault(require("minimist"));
20
21 _minimist = function () {
22 return data;
23 };
24
25 return data;
26}
27
28function _path() {
29 const data = _interopRequireDefault(require("path"));
30
31 _path = function () {
32 return data;
33 };
34
35 return data;
36}
37
38function _process() {
39 const data = _interopRequireDefault(require("process"));
40
41 _process = function () {
42 return data;
43 };
44
45 return data;
46}
47
48var _printRunInstructions = _interopRequireDefault(require("./printRunInstructions"));
49
50var _templates = require("../../tools/generator/templates");
51
52var PackageManager = _interopRequireWildcard(require("../../tools/packageManager"));
53
54function _cliTools() {
55 const data = require("@react-native-community/cli-tools");
56
57 _cliTools = function () {
58 return data;
59 };
60
61 return data;
62}
63
64var _installPods = _interopRequireDefault(require("../../tools/installPods"));
65
66function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
67
68function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
69
70function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
71
72/**
73 * Copyright (c) Facebook, Inc. and its affiliates.
74 *
75 * This source code is licensed under the MIT license found in the
76 * LICENSE file in the root directory of this source tree.
77 *
78 */
79
80/**
81 * Creates the template for a React Native project given the provided
82 * parameters:
83 * @param projectDir Templates will be copied here.
84 * @param argsOrName Project name or full list of custom arguments
85 * for the generator.
86 * @param options Command line options passed from the react-native-cli directly.
87 * E.g. `{ version: '0.43.0', template: 'navigation' }`
88 */
89async function initCompat(projectDir, argsOrName) {
90 const args = Array.isArray(argsOrName) ? argsOrName // argsOrName was e.g. ['AwesomeApp', '--verbose']
91 : [argsOrName].concat(_process().default.argv.slice(4)); // argsOrName was e.g. 'AwesomeApp'
92 // args array is e.g. ['AwesomeApp', '--verbose', '--template', 'navigation']
93
94 if (!args || args.length === 0) {
95 _cliTools().logger.error('react-native init requires a project name.');
96
97 return;
98 }
99
100 const newProjectName = args[0];
101 const options = (0, _minimist().default)(args);
102
103 _cliTools().logger.info(`Setting up new React Native app in ${projectDir}`);
104
105 await generateProject(projectDir, newProjectName, options);
106}
107/**
108 * Generates a new React Native project based on the template.
109 * @param Absolute path at which the project folder should be created.
110 * @param options Command line arguments parsed by minimist.
111 */
112
113
114async function generateProject(destinationRoot, newProjectName, options) {
115 const pkgJson = require('react-native/package.json');
116
117 const reactVersion = pkgJson.peerDependencies.react;
118 await (0, _templates.createProjectFromTemplate)(destinationRoot, newProjectName, options.template);
119
120 _cliTools().logger.info('Adding required dependencies');
121
122 await PackageManager.install([`react@${reactVersion}`], {
123 root: destinationRoot
124 });
125
126 _cliTools().logger.info('Adding required dev dependencies');
127
128 await PackageManager.installDev(['@babel/core', '@babel/runtime', '@react-native-community/eslint-config', 'eslint', 'jest', 'babel-jest', 'metro-react-native-babel-preset', `react-test-renderer@${reactVersion}`], {
129 root: destinationRoot
130 });
131 addJestToPackageJson(destinationRoot);
132
133 if (_process().default.platform === 'darwin') {
134 _cliTools().logger.info('Installing required CocoaPods dependencies');
135
136 await (0, _installPods.default)({
137 directory: destinationRoot
138 });
139 }
140
141 (0, _printRunInstructions.default)(destinationRoot, newProjectName);
142}
143/**
144 * Add Jest-related stuff to package.json, which was created by the react-native-cli.
145 */
146
147
148function addJestToPackageJson(destinationRoot) {
149 const packageJSONPath = _path().default.join(destinationRoot, 'package.json');
150
151 const packageJSON = JSON.parse(_fs().default.readFileSync(packageJSONPath).toString());
152 packageJSON.scripts.test = 'jest';
153 packageJSON.scripts.lint = 'eslint .';
154 packageJSON.jest = {
155 preset: 'react-native'
156 };
157
158 _fs().default.writeFileSync(packageJSONPath, `${JSON.stringify(packageJSON, null, 2)}\n`);
159}
160
161var _default = initCompat;
162exports.default = _default;
163
164//# sourceMappingURL=initCompat.js.map
\No newline at end of file