Michael Bromley 3 месяцев назад
Родитель
Сommit
ca5df44304

+ 4 - 2
packages/cli/src/commands/schema/generate-schema/generate-schema.ts

@@ -7,6 +7,7 @@ import {
     runPluginConfigurations,
     runPluginConfigurations,
     setConfig,
     setConfig,
     VENDURE_ADMIN_API_TYPE_PATHS,
     VENDURE_ADMIN_API_TYPE_PATHS,
+    VENDURE_SHOP_API_TYPE_PATHS,
 } from '@vendure/core';
 } from '@vendure/core';
 import { writeFileSync } from 'fs-extra';
 import { writeFileSync } from 'fs-extra';
 import { getIntrospectionQuery, graphqlSync, printSchema } from 'graphql';
 import { getIntrospectionQuery, graphqlSync, printSchema } from 'graphql';
@@ -29,12 +30,13 @@ export async function generateSchema(options: SchemaOptions) {
         await setConfig(config);
         await setConfig(config);
 
 
         const apiType = options.api === 'shop' ? 'shop' : 'admin';
         const apiType = options.api === 'shop' ? 'shop' : 'admin';
+        const typePaths = apiType === 'shop' ? VENDURE_SHOP_API_TYPE_PATHS : VENDURE_ADMIN_API_TYPE_PATHS;
 
 
         const runtimeConfig = await runPluginConfigurations(getConfig() as any);
         const runtimeConfig = await runPluginConfigurations(getConfig() as any);
         const typesLoader = new GraphQLTypesLoader();
         const typesLoader = new GraphQLTypesLoader();
         const schema = await getFinalVendureSchema({
         const schema = await getFinalVendureSchema({
             config: runtimeConfig,
             config: runtimeConfig,
-            typePaths: VENDURE_ADMIN_API_TYPE_PATHS,
+            typePaths,
             typesLoader,
             typesLoader,
             apiType,
             apiType,
         });
         });
@@ -54,6 +56,6 @@ export async function generateSchema(options: SchemaOptions) {
         log.info(`Generated schema: ${outFile}`);
         log.info(`Generated schema: ${outFile}`);
     } catch (e) {
     } catch (e) {
         log.error(e instanceof Error ? e.message : String(e));
         log.error(e instanceof Error ? e.message : String(e));
-        process.exit(0);
+        process.exit(1);
     }
     }
 }
 }

+ 20 - 13
packages/cli/src/shared/package-json-ref.ts

@@ -28,11 +28,14 @@ export class PackageJson {
 
 
     determineVendureVersion(): string | undefined {
     determineVendureVersion(): string | undefined {
         const packageJson = this.getPackageJsonContent();
         const packageJson = this.getPackageJsonContent();
-        return packageJson.dependencies['@vendure/core'];
+        return packageJson && packageJson.dependencies['@vendure/core'];
     }
     }
 
 
     async installPackages(requiredPackages: PackageToInstall[]) {
     async installPackages(requiredPackages: PackageToInstall[]) {
         const packageJson = this.getPackageJsonContent();
         const packageJson = this.getPackageJsonContent();
+        if (!packageJson) {
+            return;
+        }
         const packagesToInstall = requiredPackages.filter(({ pkg, version, isDevDependency }) => {
         const packagesToInstall = requiredPackages.filter(({ pkg, version, isDevDependency }) => {
             const hasDependency = isDevDependency
             const hasDependency = isDevDependency
                 ? packageJson.devDependencies[pkg]
                 ? packageJson.devDependencies[pkg]
@@ -54,7 +57,7 @@ export class PackageJson {
         }
         }
     }
     }
 
 
-    getPackageJsonContent() {
+    getPackageJsonContent(): Record<string, any> | false {
         const packageJsonPath = this.locatePackageJsonWithVendureDependency();
         const packageJsonPath = this.locatePackageJsonWithVendureDependency();
         if (!packageJsonPath || !fs.existsSync(packageJsonPath)) {
         if (!packageJsonPath || !fs.existsSync(packageJsonPath)) {
             note(
             note(
@@ -70,7 +73,7 @@ export class PackageJson {
      * The Root package json can be different from the "vendure" package json when in a monorepo
      * The Root package json can be different from the "vendure" package json when in a monorepo
      * setup.
      * setup.
      */
      */
-    getRootPackageJsonContent() {
+    getRootPackageJsonContent(): Record<string, any> | false {
         const packageJsonPath = this.locateRootPackageJson();
         const packageJsonPath = this.locateRootPackageJson();
         if (!packageJsonPath || !fs.existsSync(packageJsonPath)) {
         if (!packageJsonPath || !fs.existsSync(packageJsonPath)) {
             note(
             note(
@@ -104,11 +107,13 @@ export class PackageJson {
      */
      */
     addScriptToVendurePackageJson(scriptName: string, script: string) {
     addScriptToVendurePackageJson(scriptName: string, script: string) {
         const packageJson = this.getPackageJsonContent();
         const packageJson = this.getPackageJsonContent();
-        packageJson.scripts = packageJson.scripts || {};
-        packageJson.scripts[scriptName] = script;
-        const packageJsonPath = this.vendurePackageJsonPath;
-        if (packageJsonPath) {
-            fs.writeJsonSync(packageJsonPath, packageJson, { spaces: 2 });
+        if (packageJson) {
+            packageJson.scripts = packageJson.scripts || {};
+            packageJson.scripts[scriptName] = script;
+            const packageJsonPath = this.vendurePackageJsonPath;
+            if (packageJsonPath) {
+                fs.writeJsonSync(packageJsonPath, packageJson, { spaces: 2 });
+            }
         }
         }
     }
     }
 
 
@@ -119,11 +124,13 @@ export class PackageJson {
      */
      */
     addScriptToRootPackageJson(scriptName: string, script: string) {
     addScriptToRootPackageJson(scriptName: string, script: string) {
         const packageJson = this.getRootPackageJsonContent();
         const packageJson = this.getRootPackageJsonContent();
-        packageJson.scripts = packageJson.scripts || {};
-        packageJson.scripts[scriptName] = script;
-        const packageJsonPath = this.rootPackageJsonPath;
-        if (packageJsonPath) {
-            fs.writeJsonSync(packageJsonPath, packageJson, { spaces: 2 });
+        if (packageJson) {
+            packageJson.scripts = packageJson.scripts || {};
+            packageJson.scripts[scriptName] = script;
+            const packageJsonPath = this.rootPackageJsonPath;
+            if (packageJsonPath) {
+                fs.writeJsonSync(packageJsonPath, packageJson, { spaces: 2 });
+            }
         }
         }
     }
     }