@tobiastengler/create-relay-app
Version:
Easy configuration of Relay for existing projects
38 lines (37 loc) • 1.31 kB
JavaScript
import { TaskBase } from "./TaskBase.js";
import { BABEL_RELAY_PACKAGE, VITE_RELAY_PACKAGE } from "../consts.js";
import { bold } from "../utils/cli.js";
export class InstallNpmDevDependenciesTask extends TaskBase {
constructor(context) {
super();
this.context = context;
this.message = "Add Relay devDependencies";
}
isEnabled() {
return true;
}
async run() {
if (this.context.args.skipInstall) {
this.skip();
return;
}
const packages = this.getPackages();
this.updateMessage(this.message + " " + packages.map((p) => bold(p)).join(" "));
const latestPackages = packages.map((p) => (p.substring(1).includes("@") ? p : p + "@latest"));
await this.context.manager.addDevDependency(latestPackages);
}
getPackages() {
const relayDevDep = ["relay-compiler"];
if (this.context.args.typescript) {
relayDevDep.push("@types/react-relay");
relayDevDep.push("@types/relay-runtime");
}
if (this.context.is("cra") || this.context.is("vite")) {
relayDevDep.push(BABEL_RELAY_PACKAGE);
}
if (this.context.is("vite")) {
relayDevDep.push(VITE_RELAY_PACKAGE);
}
return relayDevDep;
}
}