initCompat.js 5.3 KB

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