@nx/react-native
Version:
114 lines (113 loc) • 3.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.addProject = addProject;
const devkit_1 = require("@nx/devkit");
function addProject(host, options) {
const nxJson = (0, devkit_1.readNxJson)(host);
const hasPlugin = nxJson.plugins?.some((p) => typeof p === 'string'
? p === '@nx/react-native/plugin'
: p.plugin === '@nx/react-native/plugin');
const project = {
root: options.appProjectRoot,
sourceRoot: `${options.appProjectRoot}/src`,
projectType: 'application',
targets: hasPlugin ? {} : getTargets(options),
tags: options.parsedTags,
};
const packageJson = {
name: options.importPath,
version: '0.0.1',
private: true,
};
if (!options.useProjectJson) {
if (options.projectName !== options.importPath) {
packageJson.nx = { name: options.projectName };
}
if (!hasPlugin) {
packageJson.nx ??= {};
packageJson.nx.targets = getTargets(options);
}
if (options.parsedTags?.length) {
packageJson.nx ??= {};
packageJson.nx.tags = options.parsedTags;
}
}
else {
(0, devkit_1.addProjectConfiguration)(host, options.projectName, {
...project,
});
}
if (!options.useProjectJson || options.isTsSolutionSetup) {
(0, devkit_1.writeJson)(host, (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'package.json'), packageJson);
}
}
function getTargets(options) {
const architect = {};
architect.start = {
executor: '@nx/react-native:start',
dependsOn: [],
options: {
port: 8081,
},
};
architect['run-ios'] = {
executor: '@nx/react-native:run-ios',
dependsOn: [],
options: {},
};
architect['bundle-ios'] = {
executor: '@nx/react-native:bundle',
dependsOn: [],
outputs: ['{options.bundleOutput}'],
options: {
entryFile: options.entryFile,
platform: 'ios',
bundleOutput: `dist/${options.appProjectRoot}/ios/main.jsbundle`,
},
};
architect['run-android'] = {
executor: '@nx/react-native:run-android',
dependsOn: [],
options: {},
};
architect['build-android'] = {
executor: '@nx/react-native:build-android',
outputs: [
`{projectRoot}/android/app/build/outputs/bundle`,
`{projectRoot}/android/app/build/outputs/apk`,
],
dependsOn: [],
options: {},
};
architect['build-ios'] = {
executor: '@nx/react-native:build-ios',
outputs: ['{projectRoot}/ios/build/Build'],
dependsOn: [],
options: {},
};
architect['pod-install'] = {
executor: '@nx/react-native:pod-install',
dependsOn: ['sync-deps'],
outputs: ['{projectRoot}/ios/Pods', '{projectRoot}/ios/Podfile.lock'],
options: {},
};
architect.upgrade = {
executor: '@nx/react-native:upgrade',
options: {},
};
architect['bundle-android'] = {
executor: '@nx/react-native:bundle',
dependsOn: [],
outputs: ['{options.bundleOutput}'],
options: {
entryFile: options.entryFile,
platform: 'android',
bundleOutput: `dist/${options.appProjectRoot}/android/main.jsbundle`,
},
};
architect['sync-deps'] = {
executor: '@nx/react-native:sync-deps',
options: {},
};
return architect;
}
;