link.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = exports.func = void 0;
  6. function _chalk() {
  7. const data = _interopRequireDefault(require("chalk"));
  8. _chalk = function () {
  9. return data;
  10. };
  11. return data;
  12. }
  13. function _lodash() {
  14. const data = require("lodash");
  15. _lodash = function () {
  16. return data;
  17. };
  18. return data;
  19. }
  20. function _cliTools() {
  21. const data = require("@react-native-community/cli-tools");
  22. _cliTools = function () {
  23. return data;
  24. };
  25. return data;
  26. }
  27. var _getPlatformName = _interopRequireDefault(require("./getPlatformName"));
  28. var _linkDependency = _interopRequireDefault(require("./linkDependency"));
  29. var _linkAssets = _interopRequireDefault(require("./linkAssets"));
  30. var _linkAll = _interopRequireDefault(require("./linkAll"));
  31. var _makeHook = _interopRequireDefault(require("./makeHook"));
  32. var _printDeprecationWarning = _interopRequireDefault(require("./printDeprecationWarning"));
  33. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  34. /**
  35. * Copyright (c) Facebook, Inc. and its affiliates.
  36. *
  37. * This source code is licensed under the MIT license found in the
  38. * LICENSE file in the root directory of this source tree.
  39. *
  40. */
  41. /**
  42. * Updates project and links all dependencies to it.
  43. *
  44. * @param args If optional argument [packageName] is provided,
  45. * only that package is processed.
  46. */
  47. async function link([rawPackageName], ctx, opts) {
  48. let platforms = ctx.platforms;
  49. let project = ctx.project;
  50. if (opts.platforms) {
  51. // @ts-ignore
  52. platforms = (0, _lodash().pick)(platforms, opts.platforms);
  53. _cliTools().logger.debug('Skipping selected platforms');
  54. }
  55. _cliTools().logger.debug('Available platforms: ' + `${Object.keys(platforms).map(_getPlatformName.default).join(', ')}`);
  56. if (rawPackageName === undefined) {
  57. _cliTools().logger.debug('No package name provided, will link all possible assets.');
  58. return (0, _linkAll.default)(ctx, {
  59. linkDeps: opts.all,
  60. linkAssets: true
  61. });
  62. }
  63. (0, _printDeprecationWarning.default)('react-native link [packageName]'); // Trim the version / tag out of the package name (eg. package@latest)
  64. const packageName = rawPackageName.replace(/^(.+?)(@.+?)$/gi, '$1');
  65. if (!Object.keys(ctx.dependencies).includes(packageName)) {
  66. throw new (_cliTools().CLIError)(`
  67. Unknown dependency. Make sure that the package you are trying to link is
  68. already installed in your "node_modules" and present in your "package.json" dependencies.
  69. `);
  70. }
  71. const {
  72. [packageName]: dependency
  73. } = ctx.dependencies;
  74. _cliTools().logger.debug(`Package to link: ${rawPackageName}`);
  75. try {
  76. if (dependency.hooks.prelink) {
  77. await (0, _makeHook.default)(dependency.hooks.prelink)();
  78. }
  79. await (0, _linkDependency.default)(platforms, project, dependency);
  80. if (dependency.hooks.postlink) {
  81. await (0, _makeHook.default)(dependency.hooks.postlink)();
  82. }
  83. await (0, _linkAssets.default)(platforms, project, dependency.assets);
  84. } catch (error) {
  85. throw new (_cliTools().CLIError)(`Linking "${_chalk().default.bold(dependency.name)}" failed.`, error);
  86. }
  87. }
  88. const func = link;
  89. exports.func = func;
  90. var _default = {
  91. func: link,
  92. description: 'links assets and optionally native modules',
  93. name: 'link [packageName]',
  94. options: [{
  95. name: '--platforms [list]',
  96. description: 'Scope linking to specified platforms',
  97. parse: val => val.toLowerCase().split(',')
  98. }, {
  99. name: '--all [boolean]',
  100. description: 'Link all native modules and assets',
  101. parse: val => val.toLowerCase().split(',')
  102. }]
  103. };
  104. exports.default = _default;
  105. //# sourceMappingURL=link.js.map