171 lines
3.5 KiB
TypeScript
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;
|
|
}
|