create-react-native-library
Version:
CLI to scaffold React Native libraries
35 lines (34 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.alignDependencyVersionsWithExampleApp = alignDependencyVersionsWithExampleApp;
var _path = _interopRequireDefault(require("path"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _sortObjectKeys = _interopRequireDefault(require("../utils/sortObjectKeys"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
async function alignDependencyVersionsWithExampleApp(pkg, folder, config) {
const examplePackageJson = await _fsExtra.default.readJSON(_path.default.join(folder, 'example', 'package.json'));
const PACKAGES_TO_COPY = ['react', 'react-native', '@types/react'];
if (config.example === 'vanilla' && (config.project.moduleConfig === 'turbo-modules' || config.project.viewConfig === 'fabric-view')) {
// React Native doesn't provide the community CLI as a dependency.
// We have to read the version from the example app and put to the root package json
PACKAGES_TO_COPY.push('@react-native-community/cli');
}
const devDependencies = {};
PACKAGES_TO_COPY.forEach(name => {
if (name) {
const version = examplePackageJson.dependencies?.[name] ?? examplePackageJson.devDependencies?.[name];
if (version != null) {
devDependencies[name] = version;
} else if (pkg.devDependencies?.[name] == null) {
throw new Error(`Couldn't find the package "${name}" in the example app.`);
}
}
});
pkg['devDependencies'] = (0, _sortObjectKeys.default)({
...pkg['devDependencies'],
...devDependencies
});
}
//# sourceMappingURL=dependencies.js.map