@react-native-community/cli-config 7.0.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/build/assign.d.ts +9 -0
- package/build/assign.d.ts.map +1 -0
- package/build/assign.js +39 -0
- package/build/assign.js.map +1 -0
- package/build/commands/config.d.ts +8 -0
- package/build/commands/config.d.ts.map +1 -0
- package/build/commands/config.js +32 -0
- package/build/commands/config.js.map +1 -0
- package/build/errors.d.ts +6 -0
- package/build/errors.d.ts.map +1 -0
- package/build/errors.js +49 -0
- package/build/errors.js.map +1 -0
- package/build/findAssets.d.ts +8 -0
- package/build/findAssets.d.ts.map +1 -0
- package/build/findAssets.js +53 -0
- package/build/findAssets.js.map +1 -0
- package/build/findDependencies.d.ts +5 -0
- package/build/findDependencies.d.ts.map +1 -0
- package/build/findDependencies.js +46 -0
- package/build/findDependencies.js.map +1 -0
- package/build/index.d.ts +7 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +23 -0
- package/build/index.js.map +1 -0
- package/build/loadConfig.d.ts +7 -0
- package/build/loadConfig.d.ts.map +1 -0
- package/build/loadConfig.js +149 -0
- package/build/loadConfig.js.map +1 -0
- package/build/merge.d.ts +6 -0
- package/build/merge.d.ts.map +1 -0
- package/build/merge.js +30 -0
- package/build/merge.js.map +1 -0
- package/build/readConfigFromDisk.d.ts +12 -0
- package/build/readConfigFromDisk.d.ts.map +1 -0
- package/build/readConfigFromDisk.js +86 -0
- package/build/readConfigFromDisk.js.map +1 -0
- package/build/resolveReactNativePath.d.ts +6 -0
- package/build/resolveReactNativePath.d.ts.map +1 -0
- package/build/resolveReactNativePath.js +39 -0
- package/build/resolveReactNativePath.js.map +1 -0
- package/build/schema.d.ts +10 -0
- package/build/schema.d.ts.map +1 -0
- package/build/schema.js +177 -0
- package/build/schema.js.map +1 -0
- package/package.json +33 -0
- package/src/__tests__/__snapshots__/index-test.ts.snap +185 -0
- package/src/__tests__/findAssets-test.ts +51 -0
- package/src/__tests__/findDependencies-test.ts +23 -0
- package/src/__tests__/index-test.ts +350 -0
- package/src/assign.ts +27 -0
- package/src/commands/config.ts +30 -0
- package/src/errors.ts +31 -0
- package/src/findAssets.ts +28 -0
- package/src/findDependencies.ts +24 -0
- package/src/index.ts +5 -0
- package/src/loadConfig.ts +157 -0
- package/src/merge.ts +12 -0
- package/src/readConfigFromDisk.ts +68 -0
- package/src/resolveReactNativePath.ts +25 -0
- package/src/schema.ts +201 -0
- package/tsconfig.json +8 -0
- package/tsconfig.tsbuildinfo +1957 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.readConfigFromDisk = readConfigFromDisk;
|
|
7
|
+
exports.readDependencyConfigFromDisk = readDependencyConfigFromDisk;
|
|
8
|
+
|
|
9
|
+
function _cosmiconfig() {
|
|
10
|
+
const data = _interopRequireDefault(require("cosmiconfig"));
|
|
11
|
+
|
|
12
|
+
_cosmiconfig = function () {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
return data;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var _errors = require("./errors");
|
|
20
|
+
|
|
21
|
+
var schema = _interopRequireWildcard(require("./schema"));
|
|
22
|
+
|
|
23
|
+
function _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); }
|
|
24
|
+
|
|
25
|
+
function _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; }
|
|
26
|
+
|
|
27
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Places to look for the configuration file.
|
|
31
|
+
*/
|
|
32
|
+
const searchPlaces = ['react-native.config.js'];
|
|
33
|
+
/**
|
|
34
|
+
* Reads a project configuration as defined by the user in the current
|
|
35
|
+
* workspace.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
function readConfigFromDisk(rootFolder) {
|
|
39
|
+
const explorer = (0, _cosmiconfig().default)('react-native', {
|
|
40
|
+
searchPlaces,
|
|
41
|
+
stopDir: rootFolder
|
|
42
|
+
});
|
|
43
|
+
const searchResult = explorer.searchSync(rootFolder);
|
|
44
|
+
const config = searchResult ? searchResult.config : undefined;
|
|
45
|
+
const result = schema.projectConfig.validate(config);
|
|
46
|
+
|
|
47
|
+
if (result.error) {
|
|
48
|
+
throw new _errors.JoiError(result.error);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return result.value;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reads a dependency configuration as defined by the developer
|
|
55
|
+
* inside `node_modules`.
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
function readDependencyConfigFromDisk(rootFolder) {
|
|
60
|
+
const explorer = (0, _cosmiconfig().default)('react-native', {
|
|
61
|
+
stopDir: rootFolder,
|
|
62
|
+
searchPlaces
|
|
63
|
+
});
|
|
64
|
+
const searchResult = explorer.searchSync(rootFolder);
|
|
65
|
+
const config = searchResult ? searchResult.config : emptyDependencyConfig;
|
|
66
|
+
const result = schema.dependencyConfig.validate(config);
|
|
67
|
+
|
|
68
|
+
if (result.error) {
|
|
69
|
+
throw new _errors.JoiError(result.error);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return result.value;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const emptyDependencyConfig = {
|
|
76
|
+
dependency: {
|
|
77
|
+
platforms: {},
|
|
78
|
+
assets: [],
|
|
79
|
+
hooks: {},
|
|
80
|
+
params: []
|
|
81
|
+
},
|
|
82
|
+
commands: [],
|
|
83
|
+
platforms: {}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=readConfigFromDisk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/readConfigFromDisk.ts"],"names":["searchPlaces","readConfigFromDisk","rootFolder","explorer","stopDir","searchResult","searchSync","config","undefined","result","schema","projectConfig","validate","error","JoiError","value","readDependencyConfigFromDisk","emptyDependencyConfig","dependencyConfig","dependency","platforms","assets","hooks","params","commands"],"mappings":";;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;;;;;;;;AAMA;AACA;AACA;AACA,MAAMA,YAAY,GAAG,CAAC,wBAAD,CAArB;AAEA;AACA;AACA;AACA;;AACO,SAASC,kBAAT,CAA4BC,UAA5B,EAA4D;AACjE,QAAMC,QAAQ,GAAG,4BAAY,cAAZ,EAA4B;AAC3CH,IAAAA,YAD2C;AAE3CI,IAAAA,OAAO,EAAEF;AAFkC,GAA5B,CAAjB;AAKA,QAAMG,YAAY,GAAGF,QAAQ,CAACG,UAAT,CAAoBJ,UAApB,CAArB;AACA,QAAMK,MAAM,GAAGF,YAAY,GAAGA,YAAY,CAACE,MAAhB,GAAyBC,SAApD;AACA,QAAMC,MAAM,GAAGC,MAAM,CAACC,aAAP,CAAqBC,QAArB,CAA8BL,MAA9B,CAAf;;AAEA,MAAIE,MAAM,CAACI,KAAX,EAAkB;AAChB,UAAM,IAAIC,gBAAJ,CAAaL,MAAM,CAACI,KAApB,CAAN;AACD;;AAED,SAAOJ,MAAM,CAACM,KAAd;AACD;AAED;AACA;AACA;AACA;;;AACO,SAASC,4BAAT,CACLd,UADK,EAEiB;AACtB,QAAMC,QAAQ,GAAG,4BAAY,cAAZ,EAA4B;AAC3CC,IAAAA,OAAO,EAAEF,UADkC;AAE3CF,IAAAA;AAF2C,GAA5B,CAAjB;AAKA,QAAMK,YAAY,GAAGF,QAAQ,CAACG,UAAT,CAAoBJ,UAApB,CAArB;AACA,QAAMK,MAAM,GAAGF,YAAY,GAAGA,YAAY,CAACE,MAAhB,GAAyBU,qBAApD;AAEA,QAAMR,MAAM,GAAGC,MAAM,CAACQ,gBAAP,CAAwBN,QAAxB,CAAiCL,MAAjC,CAAf;;AAEA,MAAIE,MAAM,CAACI,KAAX,EAAkB;AAChB,UAAM,IAAIC,gBAAJ,CAAaL,MAAM,CAACI,KAApB,CAAN;AACD;;AAED,SAAOJ,MAAM,CAACM,KAAd;AACD;;AAED,MAAME,qBAAqB,GAAG;AAC5BE,EAAAA,UAAU,EAAE;AACVC,IAAAA,SAAS,EAAE,EADD;AAEVC,IAAAA,MAAM,EAAE,EAFE;AAGVC,IAAAA,KAAK,EAAE,EAHG;AAIVC,IAAAA,MAAM,EAAE;AAJE,GADgB;AAO5BC,EAAAA,QAAQ,EAAE,EAPkB;AAQ5BJ,EAAAA,SAAS,EAAE;AARiB,CAA9B","sourcesContent":["import cosmiconfig from 'cosmiconfig';\nimport {JoiError} from './errors';\nimport * as schema from './schema';\nimport {\n UserConfig,\n UserDependencyConfig,\n} from '@react-native-community/cli-types';\n\n/**\n * Places to look for the configuration file.\n */\nconst searchPlaces = ['react-native.config.js'];\n\n/**\n * Reads a project configuration as defined by the user in the current\n * workspace.\n */\nexport function readConfigFromDisk(rootFolder: string): UserConfig {\n const explorer = cosmiconfig('react-native', {\n searchPlaces,\n stopDir: rootFolder,\n });\n\n const searchResult = explorer.searchSync(rootFolder);\n const config = searchResult ? searchResult.config : undefined;\n const result = schema.projectConfig.validate(config);\n\n if (result.error) {\n throw new JoiError(result.error);\n }\n\n return result.value as UserConfig;\n}\n\n/**\n * Reads a dependency configuration as defined by the developer\n * inside `node_modules`.\n */\nexport function readDependencyConfigFromDisk(\n rootFolder: string,\n): UserDependencyConfig {\n const explorer = cosmiconfig('react-native', {\n stopDir: rootFolder,\n searchPlaces,\n });\n\n const searchResult = explorer.searchSync(rootFolder);\n const config = searchResult ? searchResult.config : emptyDependencyConfig;\n\n const result = schema.dependencyConfig.validate(config);\n\n if (result.error) {\n throw new JoiError(result.error);\n }\n\n return result.value as UserDependencyConfig;\n}\n\nconst emptyDependencyConfig = {\n dependency: {\n platforms: {},\n assets: [],\n hooks: {},\n params: [],\n },\n commands: [],\n platforms: {},\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveReactNativePath.d.ts","sourceRoot":"","sources":["../src/resolveReactNativePath.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAe1D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = resolveReactNativePath;
|
|
7
|
+
|
|
8
|
+
function _cliTools() {
|
|
9
|
+
const data = require("@react-native-community/cli-tools");
|
|
10
|
+
|
|
11
|
+
_cliTools = function () {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Finds path to React Native inside `node_modules` or throws
|
|
20
|
+
* an error otherwise.
|
|
21
|
+
*/
|
|
22
|
+
function resolveReactNativePath(root) {
|
|
23
|
+
try {
|
|
24
|
+
return (0, _cliTools().resolveNodeModuleDir)(root, 'react-native');
|
|
25
|
+
} catch (_ignored) {
|
|
26
|
+
throw new (_cliTools().CLIError)(`
|
|
27
|
+
Unable to find React Native files looking up from ${root}. Make sure "react-native" module is installed
|
|
28
|
+
in your project dependencies.
|
|
29
|
+
|
|
30
|
+
If you are using React Native from a non-standard location, consider setting:
|
|
31
|
+
{
|
|
32
|
+
reactNativePath: "./path/to/react-native"
|
|
33
|
+
}
|
|
34
|
+
in your \`react-native.config.js\`.
|
|
35
|
+
`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=resolveReactNativePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resolveReactNativePath.ts"],"names":["resolveReactNativePath","root","_ignored","CLIError"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKA;AACA;AACA;AACA;AACe,SAASA,sBAAT,CAAgCC,IAAhC,EAA8C;AAC3D,MAAI;AACF,WAAO,sCAAqBA,IAArB,EAA2B,cAA3B,CAAP;AACD,GAFD,CAEE,OAAOC,QAAP,EAAiB;AACjB,UAAM,KAAIC,oBAAJ,EAAc;AACxB,0DAA0DF,IAAK;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KATU,CAAN;AAUD;AACF","sourcesContent":["import {\n CLIError,\n resolveNodeModuleDir,\n} from '@react-native-community/cli-tools';\n\n/**\n * Finds path to React Native inside `node_modules` or throws\n * an error otherwise.\n */\nexport default function resolveReactNativePath(root: string) {\n try {\n return resolveNodeModuleDir(root, 'react-native');\n } catch (_ignored) {\n throw new CLIError(`\n Unable to find React Native files looking up from ${root}. Make sure \"react-native\" module is installed\n in your project dependencies.\n\n If you are using React Native from a non-standard location, consider setting:\n {\n reactNativePath: \"./path/to/react-native\"\n }\n in your \\`react-native.config.js\\`.\n `);\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import t from 'joi';
|
|
2
|
+
/**
|
|
3
|
+
* Schema for UserDependencyConfigT
|
|
4
|
+
*/
|
|
5
|
+
export declare const dependencyConfig: t.ObjectSchema<any>;
|
|
6
|
+
/**
|
|
7
|
+
* Schema for ProjectConfigT
|
|
8
|
+
*/
|
|
9
|
+
export declare const projectConfig: t.ObjectSchema<any>;
|
|
10
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAe,MAAM,KAAK,CAAC;AAoDlC;;GAEG;AACH,eAAO,MAAM,gBAAgB,qBAuDjB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,aAAa,qBAqFd,CAAC"}
|
package/build/schema.js
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.projectConfig = exports.dependencyConfig = void 0;
|
|
7
|
+
|
|
8
|
+
function _joi() {
|
|
9
|
+
const data = _interopRequireDefault(require("joi"));
|
|
10
|
+
|
|
11
|
+
_joi = function () {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
const map = (key, value) => _joi().default.object().unknown(true).pattern(key, value);
|
|
21
|
+
/**
|
|
22
|
+
* Schema for CommandT
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
const command = _joi().default.object({
|
|
27
|
+
name: _joi().default.string().required(),
|
|
28
|
+
description: _joi().default.string(),
|
|
29
|
+
usage: _joi().default.string(),
|
|
30
|
+
func: _joi().default.func().required(),
|
|
31
|
+
options: _joi().default.array().items(_joi().default.object({
|
|
32
|
+
name: _joi().default.string().required(),
|
|
33
|
+
description: _joi().default.string(),
|
|
34
|
+
parse: _joi().default.func(),
|
|
35
|
+
default: _joi().default.alternatives().try(_joi().default.bool(), _joi().default.number(), _joi().default.string().allow(''), _joi().default.func())
|
|
36
|
+
}).rename('command', 'name', {
|
|
37
|
+
ignoreUndefined: true
|
|
38
|
+
})),
|
|
39
|
+
examples: _joi().default.array().items(_joi().default.object({
|
|
40
|
+
desc: _joi().default.string().required(),
|
|
41
|
+
cmd: _joi().default.string().required()
|
|
42
|
+
}))
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Schema for HealthChecksT
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
const healthCheck = _joi().default.object({
|
|
50
|
+
label: _joi().default.string().required(),
|
|
51
|
+
healthchecks: _joi().default.array().items(_joi().default.object({
|
|
52
|
+
label: _joi().default.string().required(),
|
|
53
|
+
isRequired: _joi().default.bool(),
|
|
54
|
+
description: _joi().default.string(),
|
|
55
|
+
getDiagnostics: _joi().default.func(),
|
|
56
|
+
win32AutomaticFix: _joi().default.func(),
|
|
57
|
+
darwinAutomaticFix: _joi().default.func(),
|
|
58
|
+
linuxAutomaticFix: _joi().default.func(),
|
|
59
|
+
runAutomaticFix: _joi().default.func().required()
|
|
60
|
+
}))
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Schema for UserDependencyConfigT
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
const dependencyConfig = _joi().default.object({
|
|
68
|
+
dependency: _joi().default.object({
|
|
69
|
+
platforms: map(_joi().default.string(), _joi().default.any()).keys({
|
|
70
|
+
ios: _joi().default.object({
|
|
71
|
+
project: _joi().default.string(),
|
|
72
|
+
podspecPath: _joi().default.string(),
|
|
73
|
+
sharedLibraries: _joi().default.array().items(_joi().default.string()),
|
|
74
|
+
libraryFolder: _joi().default.string(),
|
|
75
|
+
scriptPhases: _joi().default.array().items(_joi().default.object()),
|
|
76
|
+
configurations: _joi().default.array().items(_joi().default.string()).default([])
|
|
77
|
+
}).default({}),
|
|
78
|
+
android: _joi().default.object({
|
|
79
|
+
sourceDir: _joi().default.string(),
|
|
80
|
+
manifestPath: _joi().default.string(),
|
|
81
|
+
packageImportPath: _joi().default.string(),
|
|
82
|
+
packageInstance: _joi().default.string(),
|
|
83
|
+
dependencyConfiguration: _joi().default.string(),
|
|
84
|
+
buildTypes: _joi().default.array().items(_joi().default.string()).default([])
|
|
85
|
+
}).default({})
|
|
86
|
+
}).default(),
|
|
87
|
+
assets: _joi().default.array().items(_joi().default.string()).default([]),
|
|
88
|
+
hooks: map(_joi().default.string(), _joi().default.string()).default({}),
|
|
89
|
+
params: _joi().default.array().items(_joi().default.object({
|
|
90
|
+
name: _joi().default.string(),
|
|
91
|
+
type: _joi().default.string(),
|
|
92
|
+
message: _joi().default.string()
|
|
93
|
+
})).default([])
|
|
94
|
+
}).default(),
|
|
95
|
+
platforms: map(_joi().default.string(), _joi().default.object({
|
|
96
|
+
npmPackageName: _joi().default.string().optional(),
|
|
97
|
+
dependencyConfig: _joi().default.func(),
|
|
98
|
+
projectConfig: _joi().default.func(),
|
|
99
|
+
linkConfig: _joi().default.func()
|
|
100
|
+
})).default({}),
|
|
101
|
+
commands: _joi().default.array().items(command).default([]),
|
|
102
|
+
healthChecks: _joi().default.array().items(healthCheck).default([])
|
|
103
|
+
}).unknown(true).default();
|
|
104
|
+
/**
|
|
105
|
+
* Schema for ProjectConfigT
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
exports.dependencyConfig = dependencyConfig;
|
|
110
|
+
|
|
111
|
+
const projectConfig = _joi().default.object({
|
|
112
|
+
dependencies: map(_joi().default.string(), _joi().default.object({
|
|
113
|
+
root: _joi().default.string(),
|
|
114
|
+
platforms: map(_joi().default.string(), _joi().default.any()).keys({
|
|
115
|
+
ios: _joi().default.object({
|
|
116
|
+
sourceDir: _joi().default.string(),
|
|
117
|
+
folder: _joi().default.string(),
|
|
118
|
+
pbxprojPath: _joi().default.string(),
|
|
119
|
+
podfile: _joi().default.string(),
|
|
120
|
+
podspecPath: _joi().default.string(),
|
|
121
|
+
projectPath: _joi().default.string(),
|
|
122
|
+
projectName: _joi().default.string(),
|
|
123
|
+
libraryFolder: _joi().default.string(),
|
|
124
|
+
sharedLibraries: _joi().default.array().items(_joi().default.string()),
|
|
125
|
+
configurations: _joi().default.array().items(_joi().default.string()).default([])
|
|
126
|
+
}).allow(null),
|
|
127
|
+
android: _joi().default.object({
|
|
128
|
+
sourceDir: _joi().default.string(),
|
|
129
|
+
folder: _joi().default.string(),
|
|
130
|
+
packageImportPath: _joi().default.string(),
|
|
131
|
+
packageInstance: _joi().default.string(),
|
|
132
|
+
dependencyConfiguration: _joi().default.string(),
|
|
133
|
+
buildTypes: _joi().default.array().items(_joi().default.string()).default([])
|
|
134
|
+
}).allow(null)
|
|
135
|
+
}),
|
|
136
|
+
assets: _joi().default.array().items(_joi().default.string()),
|
|
137
|
+
hooks: map(_joi().default.string(), _joi().default.string()),
|
|
138
|
+
params: _joi().default.array().items(_joi().default.object({
|
|
139
|
+
name: _joi().default.string(),
|
|
140
|
+
type: _joi().default.string(),
|
|
141
|
+
message: _joi().default.string()
|
|
142
|
+
}))
|
|
143
|
+
}).allow(null)).default({}),
|
|
144
|
+
reactNativePath: _joi().default.string(),
|
|
145
|
+
project: map(_joi().default.string(), _joi().default.any()).keys({
|
|
146
|
+
ios: _joi().default.object({
|
|
147
|
+
project: _joi().default.string(),
|
|
148
|
+
sharedLibraries: _joi().default.array().items(_joi().default.string()),
|
|
149
|
+
libraryFolder: _joi().default.string()
|
|
150
|
+
}).default({}),
|
|
151
|
+
android: _joi().default.object({
|
|
152
|
+
sourceDir: _joi().default.string(),
|
|
153
|
+
manifestPath: _joi().default.string(),
|
|
154
|
+
packageName: _joi().default.string(),
|
|
155
|
+
packageFolder: _joi().default.string(),
|
|
156
|
+
mainFilePath: _joi().default.string(),
|
|
157
|
+
stringsPath: _joi().default.string(),
|
|
158
|
+
settingsGradlePath: _joi().default.string(),
|
|
159
|
+
assetsPath: _joi().default.string(),
|
|
160
|
+
buildGradlePath: _joi().default.string(),
|
|
161
|
+
appName: _joi().default.string(),
|
|
162
|
+
dependencyConfiguration: _joi().default.string()
|
|
163
|
+
}).default({})
|
|
164
|
+
}).default(),
|
|
165
|
+
assets: _joi().default.array().items(_joi().default.string()).default([]),
|
|
166
|
+
commands: _joi().default.array().items(command).default([]),
|
|
167
|
+
platforms: map(_joi().default.string(), _joi().default.object({
|
|
168
|
+
npmPackageName: _joi().default.string().optional(),
|
|
169
|
+
dependencyConfig: _joi().default.func(),
|
|
170
|
+
projectConfig: _joi().default.func(),
|
|
171
|
+
linkConfig: _joi().default.func()
|
|
172
|
+
})).default({})
|
|
173
|
+
}).unknown(true).default();
|
|
174
|
+
|
|
175
|
+
exports.projectConfig = projectConfig;
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema.ts"],"names":["map","key","value","t","object","unknown","pattern","command","name","string","required","description","usage","func","options","array","items","parse","default","alternatives","try","bool","number","allow","rename","ignoreUndefined","examples","desc","cmd","healthCheck","label","healthchecks","isRequired","getDiagnostics","win32AutomaticFix","darwinAutomaticFix","linuxAutomaticFix","runAutomaticFix","dependencyConfig","dependency","platforms","any","keys","ios","project","podspecPath","sharedLibraries","libraryFolder","scriptPhases","configurations","android","sourceDir","manifestPath","packageImportPath","packageInstance","dependencyConfiguration","buildTypes","assets","hooks","params","type","message","npmPackageName","optional","projectConfig","linkConfig","commands","healthChecks","dependencies","root","folder","pbxprojPath","podfile","projectPath","projectName","reactNativePath","packageName","packageFolder","mainFilePath","stringsPath","settingsGradlePath","assetsPath","buildGradlePath","appName"],"mappings":"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","sourcesContent":["import t, {SchemaLike} from 'joi';\n\nconst map = (key: RegExp | SchemaLike, value: SchemaLike) =>\n t.object().unknown(true).pattern(key, value);\n\n/**\n * Schema for CommandT\n */\nconst command = t.object({\n name: t.string().required(),\n description: t.string(),\n usage: t.string(),\n func: t.func().required(),\n options: t.array().items(\n t\n .object({\n name: t.string().required(),\n description: t.string(),\n parse: t.func(),\n default: t\n .alternatives()\n .try(t.bool(), t.number(), t.string().allow(''), t.func()),\n })\n .rename('command', 'name', {ignoreUndefined: true}),\n ),\n examples: t.array().items(\n t.object({\n desc: t.string().required(),\n cmd: t.string().required(),\n }),\n ),\n});\n\n/**\n * Schema for HealthChecksT\n */\nconst healthCheck = t.object({\n label: t.string().required(),\n healthchecks: t.array().items(\n t.object({\n label: t.string().required(),\n isRequired: t.bool(),\n description: t.string(),\n getDiagnostics: t.func(),\n win32AutomaticFix: t.func(),\n darwinAutomaticFix: t.func(),\n linuxAutomaticFix: t.func(),\n runAutomaticFix: t.func().required(),\n }),\n ),\n});\n\n/**\n * Schema for UserDependencyConfigT\n */\nexport const dependencyConfig = t\n .object({\n dependency: t\n .object({\n platforms: map(t.string(), t.any())\n .keys({\n ios: t\n .object({\n project: t.string(),\n podspecPath: t.string(),\n sharedLibraries: t.array().items(t.string()),\n libraryFolder: t.string(),\n scriptPhases: t.array().items(t.object()),\n configurations: t.array().items(t.string()).default([]),\n })\n .default({}),\n android: t\n .object({\n sourceDir: t.string(),\n manifestPath: t.string(),\n packageImportPath: t.string(),\n packageInstance: t.string(),\n dependencyConfiguration: t.string(),\n buildTypes: t.array().items(t.string()).default([]),\n })\n .default({}),\n })\n .default(),\n assets: t.array().items(t.string()).default([]),\n hooks: map(t.string(), t.string()).default({}),\n params: t\n .array()\n .items(\n t.object({\n name: t.string(),\n type: t.string(),\n message: t.string(),\n }),\n )\n .default([]),\n })\n .default(),\n platforms: map(\n t.string(),\n t.object({\n npmPackageName: t.string().optional(),\n dependencyConfig: t.func(),\n projectConfig: t.func(),\n linkConfig: t.func(),\n }),\n ).default({}),\n commands: t.array().items(command).default([]),\n healthChecks: t.array().items(healthCheck).default([]),\n })\n .unknown(true)\n .default();\n\n/**\n * Schema for ProjectConfigT\n */\nexport const projectConfig = t\n .object({\n dependencies: map(\n t.string(),\n t\n .object({\n root: t.string(),\n platforms: map(t.string(), t.any()).keys({\n ios: t\n .object({\n sourceDir: t.string(),\n folder: t.string(),\n pbxprojPath: t.string(),\n podfile: t.string(),\n podspecPath: t.string(),\n projectPath: t.string(),\n projectName: t.string(),\n libraryFolder: t.string(),\n sharedLibraries: t.array().items(t.string()),\n configurations: t.array().items(t.string()).default([]),\n })\n .allow(null),\n android: t\n .object({\n sourceDir: t.string(),\n folder: t.string(),\n packageImportPath: t.string(),\n packageInstance: t.string(),\n dependencyConfiguration: t.string(),\n buildTypes: t.array().items(t.string()).default([]),\n })\n .allow(null),\n }),\n assets: t.array().items(t.string()),\n hooks: map(t.string(), t.string()),\n params: t.array().items(\n t.object({\n name: t.string(),\n type: t.string(),\n message: t.string(),\n }),\n ),\n })\n .allow(null),\n ).default({}),\n reactNativePath: t.string(),\n project: map(t.string(), t.any())\n .keys({\n ios: t\n .object({\n project: t.string(),\n sharedLibraries: t.array().items(t.string()),\n libraryFolder: t.string(),\n })\n .default({}),\n android: t\n .object({\n sourceDir: t.string(),\n manifestPath: t.string(),\n packageName: t.string(),\n packageFolder: t.string(),\n mainFilePath: t.string(),\n stringsPath: t.string(),\n settingsGradlePath: t.string(),\n assetsPath: t.string(),\n buildGradlePath: t.string(),\n appName: t.string(),\n dependencyConfiguration: t.string(),\n })\n .default({}),\n })\n .default(),\n assets: t.array().items(t.string()).default([]),\n commands: t.array().items(command).default([]),\n platforms: map(\n t.string(),\n t.object({\n npmPackageName: t.string().optional(),\n dependencyConfig: t.func(),\n projectConfig: t.func(),\n linkConfig: t.func(),\n }),\n ).default({}),\n })\n .unknown(true)\n .default();\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@react-native-community/cli-config",
|
|
3
|
+
"version": "7.0.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"types": "build/index.d.ts",
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"cosmiconfig": "^5.1.0",
|
|
12
|
+
"deepmerge": "^3.2.0",
|
|
13
|
+
"@react-native-community/cli-tools": "^7.0.1",
|
|
14
|
+
"joi": "^17.2.1",
|
|
15
|
+
"glob": "^7.1.3"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"build",
|
|
19
|
+
"!*.d.ts",
|
|
20
|
+
"!*.map"
|
|
21
|
+
],
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/cosmiconfig": "^5.0.3",
|
|
24
|
+
"@react-native-community/cli-types": "^7.0.1",
|
|
25
|
+
"@types/glob": "^7.1.1"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://github.com/react-native-community/cli/tree/master/packages/cli-config",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/react-native-community/cli.git",
|
|
31
|
+
"directory": "packages/cli-config"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`should apply build types from dependency config 1`] = `
|
|
4
|
+
Object {
|
|
5
|
+
"assets": Array [],
|
|
6
|
+
"hooks": Object {},
|
|
7
|
+
"name": "react-native-test",
|
|
8
|
+
"params": Array [],
|
|
9
|
+
"platforms": Object {
|
|
10
|
+
"android": null,
|
|
11
|
+
"ios": Object {
|
|
12
|
+
"configurations": Array [
|
|
13
|
+
"debug",
|
|
14
|
+
],
|
|
15
|
+
"folder": "<<REPLACED>>/node_modules/react-native-test",
|
|
16
|
+
"libraryFolder": "Libraries",
|
|
17
|
+
"pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
|
|
18
|
+
"plist": Array [],
|
|
19
|
+
"podfile": null,
|
|
20
|
+
"podspecPath": null,
|
|
21
|
+
"projectName": "HelloWorld.xcodeproj",
|
|
22
|
+
"projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
|
|
23
|
+
"scriptPhases": Array [],
|
|
24
|
+
"sharedLibraries": Array [],
|
|
25
|
+
"sourceDir": "<<REPLACED>>/node_modules/react-native-test/ios",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
"root": "<<REPLACED>>/node_modules/react-native-test",
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
31
|
+
|
|
32
|
+
exports[`should have a valid structure by default 1`] = `
|
|
33
|
+
Object {
|
|
34
|
+
"assets": Array [],
|
|
35
|
+
"commands": Array [],
|
|
36
|
+
"dependencies": Object {},
|
|
37
|
+
"healthChecks": Array [],
|
|
38
|
+
"platforms": Object {},
|
|
39
|
+
"project": Object {},
|
|
40
|
+
"reactNativePath": "<<REPLACED>>",
|
|
41
|
+
"root": "<<REPLACED>>",
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
|
|
45
|
+
exports[`should load commands from "react-native-foo" and "react-native-bar" packages 1`] = `
|
|
46
|
+
Array [
|
|
47
|
+
Object {
|
|
48
|
+
"func": [Function],
|
|
49
|
+
"name": "foo-command",
|
|
50
|
+
},
|
|
51
|
+
Object {
|
|
52
|
+
"func": [Function],
|
|
53
|
+
"name": "bar-command",
|
|
54
|
+
},
|
|
55
|
+
]
|
|
56
|
+
`;
|
|
57
|
+
|
|
58
|
+
exports[`should merge project configuration with default values: snapshoting \`react-native-test\` config 1`] = `
|
|
59
|
+
Object {
|
|
60
|
+
"assets": Array [
|
|
61
|
+
"foo",
|
|
62
|
+
],
|
|
63
|
+
"hooks": Object {},
|
|
64
|
+
"name": "react-native-test",
|
|
65
|
+
"params": Array [],
|
|
66
|
+
"platforms": Object {
|
|
67
|
+
"android": null,
|
|
68
|
+
"ios": Object {
|
|
69
|
+
"configurations": Array [],
|
|
70
|
+
"folder": "<<REPLACED>>/node_modules/react-native-test",
|
|
71
|
+
"libraryFolder": "Libraries",
|
|
72
|
+
"pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
|
|
73
|
+
"plist": Array [],
|
|
74
|
+
"podfile": null,
|
|
75
|
+
"podspecPath": null,
|
|
76
|
+
"projectName": "HelloWorld.xcodeproj",
|
|
77
|
+
"projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
|
|
78
|
+
"scriptPhases": Array [],
|
|
79
|
+
"sharedLibraries": Array [],
|
|
80
|
+
"sourceDir": "./abc",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
"root": "<<REPLACED>>/node_modules/react-native-test",
|
|
84
|
+
}
|
|
85
|
+
`;
|
|
86
|
+
|
|
87
|
+
exports[`should read a config of a dependency and use it to load other settings 1`] = `
|
|
88
|
+
Object {
|
|
89
|
+
"assets": Array [],
|
|
90
|
+
"hooks": Object {},
|
|
91
|
+
"name": "react-native-test",
|
|
92
|
+
"params": Array [],
|
|
93
|
+
"platforms": Object {
|
|
94
|
+
"android": null,
|
|
95
|
+
"ios": Object {
|
|
96
|
+
"configurations": Array [],
|
|
97
|
+
"folder": "<<REPLACED>>/node_modules/react-native-test",
|
|
98
|
+
"libraryFolder": "Libraries",
|
|
99
|
+
"pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/customLocation/customProject.xcodeproj/project.pbxproj",
|
|
100
|
+
"plist": Array [],
|
|
101
|
+
"podfile": null,
|
|
102
|
+
"podspecPath": "<<REPLACED>>/node_modules/react-native-test/ReactNativeTest.podspec",
|
|
103
|
+
"projectName": "customProject.xcodeproj",
|
|
104
|
+
"projectPath": "<<REPLACED>>/node_modules/react-native-test/customLocation/customProject.xcodeproj",
|
|
105
|
+
"scriptPhases": Array [],
|
|
106
|
+
"sharedLibraries": Array [],
|
|
107
|
+
"sourceDir": "<<REPLACED>>/node_modules/react-native-test/customLocation",
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
"root": "<<REPLACED>>/node_modules/react-native-test",
|
|
111
|
+
}
|
|
112
|
+
`;
|
|
113
|
+
|
|
114
|
+
exports[`should return dependencies from package.json 1`] = `
|
|
115
|
+
Object {
|
|
116
|
+
"react-native": Object {
|
|
117
|
+
"assets": Array [],
|
|
118
|
+
"hooks": Object {},
|
|
119
|
+
"name": "react-native",
|
|
120
|
+
"params": Array [],
|
|
121
|
+
"platforms": Object {
|
|
122
|
+
"android": null,
|
|
123
|
+
"ios": null,
|
|
124
|
+
},
|
|
125
|
+
"root": "<<REPLACED>>/node_modules/react-native",
|
|
126
|
+
},
|
|
127
|
+
"react-native-test": Object {
|
|
128
|
+
"assets": Array [],
|
|
129
|
+
"hooks": Object {},
|
|
130
|
+
"name": "react-native-test",
|
|
131
|
+
"params": Array [],
|
|
132
|
+
"platforms": Object {
|
|
133
|
+
"android": null,
|
|
134
|
+
"ios": Object {
|
|
135
|
+
"configurations": Array [],
|
|
136
|
+
"folder": "<<REPLACED>>/node_modules/react-native-test",
|
|
137
|
+
"libraryFolder": "Libraries",
|
|
138
|
+
"pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
|
|
139
|
+
"plist": Array [],
|
|
140
|
+
"podfile": null,
|
|
141
|
+
"podspecPath": null,
|
|
142
|
+
"projectName": "HelloWorld.xcodeproj",
|
|
143
|
+
"projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
|
|
144
|
+
"scriptPhases": Array [],
|
|
145
|
+
"sharedLibraries": Array [],
|
|
146
|
+
"sourceDir": "<<REPLACED>>/node_modules/react-native-test/ios",
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
"root": "<<REPLACED>>/node_modules/react-native-test",
|
|
150
|
+
},
|
|
151
|
+
}
|
|
152
|
+
`;
|
|
153
|
+
|
|
154
|
+
exports[`should skip packages that have invalid configuration: dependencies config 1`] = `Object {}`;
|
|
155
|
+
|
|
156
|
+
exports[`should skip packages that have invalid configuration: logged warning 1`] = `"warn Package react-native has been ignored because it contains invalid configuration. Reason: \\"dependency.invalidProperty\\" is not allowed"`;
|
|
157
|
+
|
|
158
|
+
exports[`supports dependencies from user configuration with custom build type 1`] = `
|
|
159
|
+
Object {
|
|
160
|
+
"assets": Array [],
|
|
161
|
+
"hooks": Object {},
|
|
162
|
+
"name": "react-native-test",
|
|
163
|
+
"params": Array [],
|
|
164
|
+
"platforms": Object {
|
|
165
|
+
"android": null,
|
|
166
|
+
"ios": Object {
|
|
167
|
+
"configurations": Array [
|
|
168
|
+
"custom_build_type",
|
|
169
|
+
],
|
|
170
|
+
"folder": "<<REPLACED>>/node_modules/react-native-test",
|
|
171
|
+
"libraryFolder": "Libraries",
|
|
172
|
+
"pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
|
|
173
|
+
"plist": Array [],
|
|
174
|
+
"podfile": null,
|
|
175
|
+
"podspecPath": null,
|
|
176
|
+
"projectName": "HelloWorld.xcodeproj",
|
|
177
|
+
"projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
|
|
178
|
+
"scriptPhases": Array [],
|
|
179
|
+
"sharedLibraries": Array [],
|
|
180
|
+
"sourceDir": "<<REPLACED>>/node_modules/react-native-test/ios",
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
"root": "<<REPLACED>>/node_modules/react-native-test",
|
|
184
|
+
}
|
|
185
|
+
`;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
* @emails oncall+javascript_foundation
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import findAssets from '../findAssets';
|
|
12
|
+
|
|
13
|
+
jest.mock('path');
|
|
14
|
+
jest.mock('fs');
|
|
15
|
+
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
|
|
18
|
+
describe('findAssets', () => {
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
fs.__setMockFilesystem({
|
|
21
|
+
testDir: {
|
|
22
|
+
fonts: {
|
|
23
|
+
'A.ttf': '',
|
|
24
|
+
'B.ttf': '',
|
|
25
|
+
},
|
|
26
|
+
images: {
|
|
27
|
+
'C.jpg': '',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('returns an array of all files in given folders', () => {
|
|
34
|
+
const assets = findAssets('/testDir', ['fonts', 'images']);
|
|
35
|
+
|
|
36
|
+
expect(Array.isArray(assets)).toBeTruthy();
|
|
37
|
+
expect(assets).toHaveLength(3);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('prepends assets paths with the folder path', () => {
|
|
41
|
+
const assets = findAssets('/testDir', ['fonts', 'images']);
|
|
42
|
+
|
|
43
|
+
assets.forEach((assetPath) => {
|
|
44
|
+
expect(assetPath).toContain('testDir');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('returns an empty array if given assets are null', () => {
|
|
49
|
+
expect(findAssets('/testDir', null)).toHaveLength(0);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import findDependencies from '../findDependencies';
|
|
2
|
+
import {cleanup, writeFiles, getTempDirectory} from '../../../../jest/helpers';
|
|
3
|
+
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
await cleanup(DIR);
|
|
6
|
+
jest.resetModules();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
afterEach(async () => await cleanup(DIR));
|
|
10
|
+
|
|
11
|
+
const DIR = getTempDirectory('find_dependencies_test');
|
|
12
|
+
|
|
13
|
+
test('returns plugins from both dependencies and dev dependencies', () => {
|
|
14
|
+
writeFiles(DIR, {
|
|
15
|
+
'package.json': `
|
|
16
|
+
{
|
|
17
|
+
"dependencies": {"rnpm-plugin-test": "*"},
|
|
18
|
+
"devDependencies": {"rnpm-plugin-test-2": "*"}
|
|
19
|
+
}
|
|
20
|
+
`,
|
|
21
|
+
});
|
|
22
|
+
expect(findDependencies(DIR)).toHaveLength(2);
|
|
23
|
+
});
|