create-cen-app
Version:
create an client-engineering-style app
34 lines (28 loc) • 977 B
text/typescript
import fs from "fs-extra";
import path from "path";
import sortPackageJson from "sort-package-json";
import { type PackageJson } from "type-fest";
import {
dependencyVersionMap,
type AvailableDependencies,
} from "~/installers/dependencyVersionMap.js";
export const addPackageDependency = (opts: {
dependencies: AvailableDependencies[];
devMode: boolean;
frontendDir: string;
}) => {
const { dependencies, devMode, frontendDir } = opts;
const pkgJson = fs.readJSONSync(path.join(frontendDir, "package.json")) as PackageJson;
dependencies.forEach((pkgName) => {
const version = dependencyVersionMap[pkgName];
if (devMode && pkgJson.devDependencies) {
pkgJson.devDependencies[pkgName] = version;
} else if (pkgJson.dependencies) {
pkgJson.dependencies[pkgName] = version;
}
});
const sortedPkgJson = sortPackageJson(pkgJson);
fs.writeJSONSync(path.join(frontendDir, "package.json"), sortedPkgJson, {
spaces: 2,
});
};