Browse Source

fix(cli): Load .env files automatically for migrations

Fixes #2802
Michael Bromley 1 year ago
parent
commit
777a5a50c4

+ 3 - 1
package-lock.json

@@ -14994,7 +14994,8 @@
     },
     "node_modules/dotenv": {
       "version": "16.4.5",
-      "license": "BSD-2-Clause",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
+      "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
       "engines": {
         "node": ">=12"
       },
@@ -31915,6 +31916,7 @@
         "@vendure/common": "^2.2.0",
         "change-case": "^4.1.2",
         "commander": "^11.0.0",
+        "dotenv": "^16.4.5",
         "fs-extra": "^11.2.0",
         "picocolors": "^1.0.0",
         "ts-morph": "^21.0.1",

+ 1 - 0
packages/cli/package.json

@@ -38,6 +38,7 @@
         "@vendure/common": "^2.2.0",
         "change-case": "^4.1.2",
         "commander": "^11.0.0",
+        "dotenv": "^16.4.5",
         "fs-extra": "^11.2.0",
         "picocolors": "^1.0.0",
         "ts-morph": "^21.0.1",

+ 1 - 1
packages/cli/src/commands/migrate/generate-migration/generate-migration.ts

@@ -34,7 +34,7 @@ async function runGenerateMigration(): Promise<CliCommandReturnVal> {
         cancel(cancelledMessage);
         process.exit(0);
     }
-    const config = loadVendureConfigFile(vendureConfig);
+    const config = await loadVendureConfigFile(vendureConfig);
     const migrationSpinner = spinner();
     migrationSpinner.start('Generating migration...');
     const migrationName = await generateMigration(config, { name, outputDir: './src/migrations' });

+ 2 - 1
packages/cli/src/commands/migrate/load-vendure-config-file.ts

@@ -4,7 +4,8 @@ import { register } from 'ts-node';
 import { VendureConfigRef } from '../../shared/vendure-config-ref';
 import { isRunningInTsNode } from '../../utilities/utils';
 
-export function loadVendureConfigFile(vendureConfig: VendureConfigRef) {
+export async function loadVendureConfigFile(vendureConfig: VendureConfigRef) {
+    await import('dotenv/config');
     if (!isRunningInTsNode()) {
         const tsConfigPath = path.join(process.cwd(), 'tsconfig.json');
         // eslint-disable-next-line @typescript-eslint/no-var-requires

+ 1 - 1
packages/cli/src/commands/migrate/revert-migration/revert-migration.ts

@@ -19,7 +19,7 @@ async function runRevertMigration(): Promise<CliCommandReturnVal> {
     const project = await analyzeProject({ cancelledMessage });
     const vendureConfig = new VendureConfigRef(project);
     log.info('Using VendureConfig from ' + vendureConfig.getPathRelativeToProjectRoot());
-    const config = loadVendureConfigFile(vendureConfig);
+    const config = await loadVendureConfigFile(vendureConfig);
 
     const runSpinner = spinner();
     runSpinner.start('Reverting last migration...');

+ 1 - 1
packages/cli/src/commands/migrate/run-migration/run-migration.ts

@@ -19,7 +19,7 @@ async function runRunMigration(): Promise<CliCommandReturnVal> {
     const project = await analyzeProject({ cancelledMessage });
     const vendureConfig = new VendureConfigRef(project);
     log.info('Using VendureConfig from ' + vendureConfig.getPathRelativeToProjectRoot());
-    const config = loadVendureConfigFile(vendureConfig);
+    const config = await loadVendureConfigFile(vendureConfig);
 
     const runSpinner = spinner();
     runSpinner.start('Running migrations...');