@nx/react
Version:
45 lines (44 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.installCommonDependencies = installCommonDependencies;
const devkit_1 = require("@nx/devkit");
const internal_1 = require("@nx/js/internal");
const version_utils_1 = require("../../../utils/version-utils");
const versions_1 = require("../../../utils/versions");
async function installCommonDependencies(host, options) {
const tasks = [];
const reactVersions = await (0, version_utils_1.getReactDependenciesVersionsToInstall)(host);
const dependencies = {};
const devDependencies = {
'@types/node': versions_1.typesNodeVersion,
'@types/react': reactVersions['@types/react'],
'@types/react-dom': reactVersions['@types/react-dom'],
};
if (options.bundler !== 'vite') {
dependencies['tslib'] = versions_1.tsLibVersion;
}
// Vite requires style preprocessors to be installed manually.
// `@nx/webpack` installs them automatically for now.
// TODO(jack): Once we clean up webpack we can remove this check
if (options.bundler === 'vite' || options.unitTestRunner === 'vitest') {
if (options.style === 'scss') {
devDependencies['sass'] = versions_1.sassVersion;
}
}
if (options.unitTestRunner && options.unitTestRunner !== 'none') {
devDependencies['@testing-library/react'] = versions_1.testingLibraryReactVersion;
devDependencies['@testing-library/dom'] = versions_1.testingLibraryDomVersion;
}
const baseInstallTask = (0, devkit_1.addDependenciesToPackageJson)(host, dependencies, devDependencies, undefined, true);
tasks.push(baseInstallTask);
if (options.compiler === 'swc') {
tasks.push((0, internal_1.addSwcDependencies)(host));
}
else if (options.compiler === 'babel') {
tasks.push((0, devkit_1.addDependenciesToPackageJson)(host, {}, {
'@babel/preset-react': versions_1.babelPresetReactVersion,
'@babel/core': versions_1.babelCoreVersion,
}, undefined, true));
}
return (0, devkit_1.runTasksInSerial)(...tasks);
}