UNPKG

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