@nx/detox
Version:
67 lines (66 loc) • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addProject = addProject;
const devkit_1 = require("@nx/devkit");
const get_targets_1 = require("./get-targets");
function addProject(host, options) {
const nxJson = (0, devkit_1.readNxJson)(host);
const hasPlugin = nxJson.plugins?.some((p) => typeof p === 'string'
? p === '@nx/detox/plugin'
: p.plugin === '@nx/detox/plugin');
const packageJson = {
name: options.importPath,
version: '0.0.1',
private: true,
};
if (!options.useProjectJson) {
packageJson.nx = {
name: options.e2eProjectName !== options.importPath
? options.e2eProjectName
: undefined,
targets: hasPlugin ? undefined : getTargets(options),
implicitDependencies: [options.appProject],
};
}
else {
(0, devkit_1.addProjectConfiguration)(host, options.e2eProjectName, {
root: options.e2eProjectRoot,
sourceRoot: `${options.e2eProjectRoot}/src`,
projectType: 'application',
targets: hasPlugin ? {} : getTargets(options),
tags: [],
implicitDependencies: [options.appProject],
});
}
if (!options.useProjectJson || options.isUsingTsSolutionConfig) {
(0, devkit_1.writeJson)(host, (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'package.json'), packageJson);
}
}
function getTargets(options) {
const targets = {};
targets['build-ios'] = {
executor: '@nx/detox:build',
...(options.framework === 'react-native'
? (0, get_targets_1.reactNativeBuildTarget)('ios.sim')
: (0, get_targets_1.expoBuildTarget)('ios.sim')),
};
targets['test-ios'] = {
executor: '@nx/detox:test',
...(options.framework === 'react-native'
? (0, get_targets_1.reactNativeTestTarget)('ios.sim', options.e2eProjectName)
: (0, get_targets_1.expoTestTarget)('ios.sim', options.e2eProjectName)),
};
targets['build-android'] = {
executor: '@nx/detox:build',
...(options.framework === 'react-native'
? (0, get_targets_1.reactNativeBuildTarget)('android.emu')
: (0, get_targets_1.expoBuildTarget)('android.emu')),
};
targets['test-android'] = {
executor: '@nx/detox:test',
...(options.framework === 'react-native'
? (0, get_targets_1.reactNativeTestTarget)('android.emu', options.e2eProjectName)
: (0, get_targets_1.expoTestTarget)('android.emu', options.e2eProjectName)),
};
return targets;
}