73 lines
2.1 KiB
TypeScript
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);
|