@tobiastengler/create-relay-app
Version:
Easy configuration of Relay for existing projects
42 lines (41 loc) • 1.75 kB
JavaScript
import { TaskBase } from "./TaskBase.js";
import { bold } from "../utils/cli.js";
export class ConfigureRelayCompilerTask extends TaskBase {
constructor(context) {
super();
this.context = context;
this.message = `Configure ${bold("relay-compiler")}`;
}
isEnabled() {
return true;
}
async run() {
this.updateMessage(this.message + ` in ${bold(this.context.relayConfigFile.rel)}`);
let relayConfig;
try {
const relayConfigContent = await this.context.fs.readFromFile(this.context.relayConfigFile.abs);
relayConfig = JSON.parse(relayConfigContent) || {};
}
catch (_a) {
relayConfig = {};
}
relayConfig["src"] = this.context.srcPath.rel;
relayConfig["language"] = this.context.compilerLanguage;
relayConfig["schema"] = this.context.schemaPath.rel;
if (!relayConfig["excludes"]) {
// We only want to add this, if the user hasn't already specified it.
relayConfig["excludes"] = ["**/node_modules/**", "**/__mocks__/**", "**/__generated__/**"];
}
if (this.context.is("vite")) {
// When generating without eagerEsModules artifacts contain
// module.exports, which Vite can not handle correctly.
// eagerEsModules will output export default.
relayConfig["eagerEsModules"] = true;
}
if (this.context.artifactPath) {
relayConfig["artifactDirectory"] = this.context.artifactPath.rel;
}
const relayConfigWriteContent = JSON.stringify(relayConfig, null, 2);
await this.context.fs.writeToFile(this.context.relayConfigFile.abs, relayConfigWriteContent);
}
}