171 lines
3.5 KiB
TypeScript

import {
addProjectConfiguration,
offsetFromRoot,
ProjectConfiguration,
readWorkspaceConfiguration,
TargetConfiguration,
Tree,
updateWorkspaceConfiguration,
} from '@nrwl/devkit';
import { NormalizedSchema } from './normalize-options';
export function addProject(host: Tree, options: NormalizedSchema) {
const projectConfiguration: ProjectConfiguration = {
root: options.appProjectRoot,
sourceRoot: `${options.appProjectRoot}/src`,
projectType: 'application',
targets: { ...getTargets(options) },
tags: options.parsedTags,
};
addProjectConfiguration(
host,
options.projectName,
projectConfiguration,
options.standaloneConfig
);
}
function getTargets(options: NormalizedSchema) {
const architect: { [key: string]: TargetConfiguration } = {};
architect.start = {
executor: '@nrwl/expo:start',
options: {
port: 8081,
},
};
architect.serve = {
executor: 'nx:run-commands',
options: {
command: `nx start ${options.name}`,
},
};
architect['run-ios'] = {
executor: '@nrwl/expo:run',
options: {
platform: 'ios',
},
};
architect['run-android'] = {
executor: '@nrwl/expo:run',
options: {
platform: 'android',
},
};
architect['build'] = {
executor: '@nrwl/expo:build',
options: {},
};
architect['build-list'] = {
executor: '@nrwl/expo:build-list',
options: {},
};
architect['download'] = {
executor: '@nrwl/expo:download',
options: {
output: `${options.appProjectRoot}/dist`,
},
};
// @deprecated, no longer supported in @expo/cli
architect['build-ios'] = {
executor: '@nrwl/expo:build-ios',
options: {},
};
// @deprecated, no longer supported in @expo/cli
architect['build-android'] = {
executor: '@nrwl/expo:build-android',
options: {},
};
// @deprecated, no longer supported in @expo/cli
architect['build-web'] = {
executor: '@nrwl/expo:build-web',
options: {},
};
// @deprecated, no longer supported in @expo/cli
architect['build-status'] = {
executor: '@nrwl/expo:build-web',
options: {},
};
architect['sync-deps'] = {
executor: '@nrwl/expo:sync-deps',
options: {},
};
architect['ensure-symlink'] = {
executor: '@nrwl/expo:ensure-symlink',
options: {},
};
// @deprecated, no longer supported in @expo/cli
architect['publish'] = {
executor: '@nrwl/expo:publish',
options: {},
};
// @deprecated, no longer supported in @expo/cli
architect['publish-set'] = {
executor: '@nrwl/expo:publish-set',
options: {},
};
// @deprecated, no longer supported in @expo/cli
architect['rollback'] = {
executor: '@nrwl/expo:rollback',
options: {},
};
architect['prebuild'] = {
executor: '@nrwl/expo:prebuild',
options: {},
};
// @deprecated, no longer supported in @expo/cli
architect['eject'] = {
executor: 'nx:run-commands',
options: {
command: `nx prebuild ${options.name}`,
},
};
architect['install'] = {
executor: '@nrwl/expo:install',
options: {},
};
architect['update'] = {
executor: '@nrwl/expo:update',
options: {},
};
architect['export'] = {
executor: '@nrwl/expo:export',
options: {
platform: 'all',
outputDir: `${offsetFromRoot(options.appProjectRoot)}dist/${
options.appProjectRoot
}`,
},
};
architect['export-web'] = {
executor: '@nrwl/expo:export',
options: {
bundler: 'webpack',
},
};
return architect;
}