Skip to content

Commit 1ed93e2

Browse files
fix(esm): dont depend on __dirname (salsita#1208)
1 parent 9b784e3 commit 1ed93e2

File tree

3 files changed

+8
-22
lines changed

3 files changed

+8
-22
lines changed

bin/node-pg-migrate.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ process.on('uncaughtException', (err) => {
2121
process.exit(1);
2222
});
2323

24-
const crossRequire = createRequire(
25-
// @ts-expect-error: ignore until esm only
26-
import.meta.url || __dirname
27-
);
24+
const crossRequire = createRequire(resolve('_'));
2825

2926
function tryRequire<TModule = unknown>(moduleName: string): TModule | null {
3027
try {

src/migration.ts

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88

99
import { createReadStream, createWriteStream } from 'node:fs';
1010
import { mkdir, readdir } from 'node:fs/promises';
11-
import { createRequire } from 'node:module';
12-
import { basename, dirname, extname, join, resolve } from 'node:path';
11+
import { basename, extname, resolve } from 'node:path';
1312
import type { QueryResult } from 'pg';
1413
import type { DBConnection } from './db';
1514
import MigrationBuilder from './migrationBuilder';
@@ -135,23 +134,12 @@ export class Migration implements RunMigration {
135134
? now.toISOString().replace(/\D/g, '')
136135
: now.valueOf();
137136

138-
const crossRequire = createRequire(
139-
// @ts-expect-error: ignore until esm only
140-
import.meta.url || __dirname
141-
);
142-
const moduleDir = dirname(
143-
crossRequire.resolve('node-pg-migrate/package.json')
144-
);
145-
146137
const templateFileName =
147138
'templateFileName' in options
148139
? resolve(process.cwd(), options.templateFileName)
149140
: resolve(
150-
moduleDir,
151-
join(
152-
'templates',
153-
`migration-template.${await resolveSuffix(directory, options)}`
154-
)
141+
'node_modules/node-pg-migrate/templates',
142+
`migration-template.${await resolveSuffix(directory, options)}`
155143
);
156144
const suffix = getSuffixFromFileName(templateFileName);
157145

src/runner.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { extname, relative } from 'node:path';
1+
import { createRequire } from 'node:module';
2+
import { extname, resolve } from 'node:path';
23
import type { DBConnection } from './db';
34
import Db from './db';
45
import type { RunMigration } from './migration';
@@ -35,11 +36,11 @@ async function loadMigrations(
3536

3637
const migrations = await Promise.all(
3738
files.map(async (file) => {
38-
const filePath = `${options.dir}/${file}`;
39+
const filePath = resolve(options.dir, file);
3940
const actions: MigrationBuilderActions =
4041
extname(filePath) === '.sql'
4142
? await migrateSqlFile(filePath)
42-
: require(relative(__dirname, filePath));
43+
: createRequire(resolve('_'))(filePath);
4344
shorthands = { ...shorthands, ...actions.shorthands };
4445

4546
return new Migration(

0 commit comments

Comments
 (0)