@nx/expo
Version:
74 lines (73 loc) • 3.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.expoInitGenerator = expoInitGenerator;
exports.expoInitGeneratorInternal = expoInitGeneratorInternal;
exports.updateDependencies = updateDependencies;
const devkit_1 = require("@nx/devkit");
const add_plugin_1 = require("@nx/devkit/src/utils/add-plugin");
const plugin_1 = require("../../../plugins/plugin");
const versions_1 = require("../../utils/versions");
const add_git_ignore_entry_1 = require("./lib/add-git-ignore-entry");
function expoInitGenerator(tree, schema) {
return expoInitGeneratorInternal(tree, { addPlugin: false, ...schema });
}
async function expoInitGeneratorInternal(host, schema) {
const nxJson = (0, devkit_1.readNxJson)(host);
const addPluginDefault = process.env.NX_ADD_PLUGINS !== 'false' &&
nxJson.useInferencePlugins !== false;
schema.addPlugin ??= addPluginDefault;
(0, add_git_ignore_entry_1.addGitIgnoreEntry)(host);
if (schema.addPlugin) {
await (0, add_plugin_1.addPlugin)(host, await (0, devkit_1.createProjectGraphAsync)(), '@nx/expo/plugin', plugin_1.createNodesV2, {
startTargetName: ['start', 'expo:start', 'expo-start'],
buildTargetName: ['build', 'expo:build', 'expo-build'],
prebuildTargetName: ['prebuild', 'expo:prebuild', 'expo-prebuild'],
serveTargetName: ['serve', 'expo:serve', 'expo-serve'],
installTargetName: ['install', 'expo:install', 'expo-install'],
exportTargetName: ['export', 'expo:export', 'expo-export'],
submitTargetName: ['submit', 'expo:submit', 'expo-submit'],
runIosTargetName: ['run-ios', 'expo:run-ios', 'expo-run-ios'],
runAndroidTargetName: [
'run-android',
'expo:run-android',
'expo-run-android',
],
buildDepsTargetName: [
'build-deps',
'expo:build-deps',
'expo-build-deps',
],
watchDepsTargetName: [
'watch-deps',
'expo:watch-deps',
'expo-watch-deps',
],
}, schema.updatePackageScripts);
}
const tasks = [];
if (!schema.skipPackageJson) {
tasks.push(moveDependency(host));
tasks.push(updateDependencies(host, schema));
}
if (!schema.skipFormat) {
await (0, devkit_1.formatFiles)(host);
}
return (0, devkit_1.runTasksInSerial)(...tasks);
}
function updateDependencies(host, schema) {
return (0, devkit_1.addDependenciesToPackageJson)(host, {
react: versions_1.reactVersion,
'react-dom': versions_1.reactDomVersion,
'react-native': versions_1.reactNativeVersion,
expo: versions_1.expoVersion,
}, {
'@nx/expo': versions_1.nxVersion,
'@expo/cli': versions_1.expoCliVersion,
'metro-config': versions_1.metroVersion,
'metro-resolver': versions_1.metroVersion,
}, undefined, schema.keepExistingVersions);
}
function moveDependency(host) {
return (0, devkit_1.removeDependenciesFromPackageJson)(host, ['@nx/react-native'], []);
}
exports.default = expoInitGenerator;