Skip to content

Commit 6b016b3

Browse files
authored
fix(pg-cloudflare): use conditional export to support bundlers that don't know about cloudflare:sockets (#3482)
1 parent 0ada72e commit 6b016b3

14 files changed

+1061
-16
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import * as esbuild from 'esbuild'
2+
3+
await esbuild.build({
4+
entryPoints: ['./src/index.mjs'],
5+
bundle: true,
6+
outfile: './dist/esbuild-cloudflare.js',
7+
conditions: ['import', 'cloudflare'],
8+
})
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import * as esbuild from 'esbuild'
2+
3+
await esbuild.build({
4+
entryPoints: ['./src/index.mjs'],
5+
bundle: true,
6+
outfile: './dist/esbuild-empty.js',
7+
})

packages/pg-bundler-test/package.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"name": "pg-bundler-test",
3+
"version": "0.0.0",
4+
"description": "Test bundlers with pg-cloudflare, https://github.com/brianc/node-postgres/issues/3452",
5+
"license": "MIT",
6+
"private": true,
7+
"type": "module",
8+
"devDependencies": {
9+
"pg-cloudflare": "^1.2.5",
10+
"webpack": "^5.99.9",
11+
"webpack-cli": "^6.0.1",
12+
"rollup": "^4.41.1",
13+
"@rollup/plugin-node-resolve": "^16.0.1",
14+
"@rollup/plugin-commonjs": "^28.0.3",
15+
"vite": "^6.3.5",
16+
"esbuild": "^0.25.5"
17+
},
18+
"scripts": {
19+
"test": "yarn webpack && yarn rollup && yarn vite && yarn esbuild",
20+
"webpack": "webpack --config webpack-empty.config.mjs && webpack --config webpack-cloudflare.config.mjs",
21+
"rollup": "rollup --config rollup-empty.config.mjs --failAfterWarnings && rollup --config rollup-cloudflare.config.mjs --failAfterWarnings",
22+
"vite": "[ $(node --version | sed 's/v//' | cut -d'.' -f1) -ge 18 ] && vite build --config vite-empty.config.mjs && vite build --config vite-cloudflare.config.mjs || echo 'Skip Vite test'",
23+
"esbuild": "node esbuild-empty.config.mjs && node esbuild-cloudflare.config.mjs"
24+
}
25+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { defineConfig } from 'rollup'
2+
import { nodeResolve } from '@rollup/plugin-node-resolve'
3+
import commonjs from '@rollup/plugin-commonjs'
4+
5+
export default defineConfig({
6+
input: './src/index.mjs',
7+
output: {
8+
file: 'dist/rollup-cloudflare.js',
9+
format: 'es',
10+
},
11+
plugins: [nodeResolve({ exportConditions: ['import', 'cloudflare'], preferBuiltins: true }), commonjs()],
12+
external: ['cloudflare:sockets'],
13+
})
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { defineConfig } from 'rollup'
2+
import { nodeResolve } from '@rollup/plugin-node-resolve'
3+
import commonjs from '@rollup/plugin-commonjs'
4+
5+
export default defineConfig({
6+
input: './src/index.mjs',
7+
output: {
8+
file: 'dist/rollup-empty.js',
9+
format: 'es',
10+
},
11+
plugins: [nodeResolve(), commonjs()],
12+
})
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import 'pg-cloudflare'
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { defineConfig } from 'vite'
2+
import commonjs from '@rollup/plugin-commonjs'
3+
4+
export default defineConfig({
5+
build: {
6+
emptyOutDir: false,
7+
lib: {
8+
entry: './src/index.mjs',
9+
fileName: 'vite-cloudflare',
10+
formats: ['es'],
11+
},
12+
rollupOptions: {
13+
external: ['cloudflare:sockets'],
14+
},
15+
},
16+
resolve: {
17+
conditions: ['import', 'cloudflare'],
18+
},
19+
plugins: [commonjs()],
20+
})
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { defineConfig } from 'vite'
2+
3+
export default defineConfig({
4+
build: {
5+
emptyOutDir: false,
6+
lib: {
7+
entry: './src/index.mjs',
8+
fileName: 'vite-empty',
9+
formats: ['es'],
10+
},
11+
},
12+
})
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import webpack from 'webpack'
2+
3+
export default {
4+
mode: 'production',
5+
entry: './src/index.mjs',
6+
output: {
7+
filename: 'webpack-cloudflare.js',
8+
},
9+
resolve: { conditionNames: ['import', 'cloudflare'] },
10+
plugins: [
11+
// ignore cloudflare:sockets imports
12+
new webpack.IgnorePlugin({
13+
resourceRegExp: /^cloudflare:sockets$/,
14+
}),
15+
],
16+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default {
2+
mode: 'production',
3+
entry: './src/index.mjs',
4+
output: {
5+
filename: 'webpack-empty.js',
6+
},
7+
}

0 commit comments

Comments
 (0)