2022-11-14 14:33:09 -05:00

73 lines
2.1 KiB
TypeScript

import {
addDependenciesToPackageJson,
convertNxGenerator,
readJson,
Tree,
updateJson,
} from '@nrwl/devkit';
import {
nxVersion,
vitePluginEslintVersion,
vitePluginReactVersion,
viteVersion,
vitestUiVersion,
vitestVersion,
viteTsConfigPathsVersion,
} from '../../utils/versions';
import { Schema } from './schema';
function checkDependenciesInstalled(host: Tree, schema: Schema) {
const packageJson = readJson(host, 'package.json');
const devDependencies = {};
const dependencies = {};
packageJson.dependencies = packageJson.dependencies || {};
packageJson.devDependencices = packageJson.devDependencices || {};
// base deps
devDependencies['@nrwl/vite'] = nxVersion;
devDependencies['vite'] = viteVersion;
devDependencies['vite-plugin-eslint'] = vitePluginEslintVersion;
devDependencies['vite-tsconfig-paths'] = viteTsConfigPathsVersion;
devDependencies['vitest'] = vitestVersion;
devDependencies['@vitest/ui'] = vitestUiVersion;
if (schema.uiFramework === 'react') {
devDependencies['@vitejs/plugin-react'] = vitePluginReactVersion;
}
if (schema.uiFramework === 'vue3') {
devDependencies['@vitejs/plugin-vue'] = vitePluginReactVersion;
}
if (schema.uiFramework === 'vue3-jsx') {
devDependencies['@vitejs/plugin-vue-jsx'] = vitePluginReactVersion;
}
return addDependenciesToPackageJson(host, dependencies, devDependencies);
}
function moveToDevDependencies(tree: Tree) {
updateJson(tree, 'package.json', (packageJson) => {
packageJson.dependencies = packageJson.dependencies || {};
packageJson.devDependencies = packageJson.devDependencies || {};
if (packageJson.dependencies['@nrwl/vite']) {
packageJson.devDependencies['@nrwl/vite'] =
packageJson.dependencies['@nrwl/vite'];
delete packageJson.dependencies['@nrwl/vite'];
}
return packageJson;
});
}
export function initGenerator(tree: Tree, schema: Schema) {
const installTask = checkDependenciesInstalled(tree, schema);
moveToDevDependencies(tree);
return installTask;
}
export default initGenerator;
export const initSchematic = convertNxGenerator(initGenerator);