duckdb-node
duckdb-node copied to clipboard
Unable to build using rollup
I am trying to build duckdb based nodejs project using rollup but I get unresolved dependencies error for libraries,
mock-aws-s3, aws-sdk, and nock
Same issue described here, mapbox/node-pre-gyp#661
When adding these dependencies in my package.json, I get below error at runtime,
Activating extension 'ducklake.ducklab' failed: ducklab package.json is not node-pre-gyp ready:
package.json must declare these properties:
binary.
Below is my rollup config,
import { RollupOptions } from "rollup";
import typescript from '@rollup/plugin-typescript';
import del from 'rollup-plugin-delete';
import { nodeResolve } from "@rollup/plugin-node-resolve";
import commonjs from '@rollup/plugin-commonjs';
import json from "@rollup/plugin-json";
const config = [
{
plugins: [
del({ targets: 'dist/*' }),
typescript(),
json(),
commonjs(),
nodeResolve(),
],
external: [
"vscode",
],
input: 'src/index.ts',
output: {
file: 'dist/index.cjs',
format: 'cjs',
},
},
] as RollupOptions;
export default config;
Workaround:
Added dependencies even though I hate it,
"aws-sdk": "^2.1685.0",
"mock-aws-s3": "^4.0.2",
"nock": "^13.5.5",
- Add "binary" clause in package.json
"binary": {
"module_name": "duckdb",
"module_path": "./lib/binding/",
"host": "https://npm.duckdb.org/duckdb"
},
- Add pre-build step,
npx node-pre-gyp install --directory ./node_modules/duckdb --target_platform=$platform --target_arch=$arch --update-binary
New-Item -Force -ItemType Directory ./lib/binding
Copy-Item -Force -Recurse ./node_modules/duckdb/lib/binding/duckdb.node ./lib/binding/