Even if you do not plan to contribute to Apache Arrow itself or Arrow integrations in other projects, we'd be happy to have you involved:
We prefer to receive contributions in the form of GitHub pull requests. Please send pull requests against the github.com/apache/arrow repository.
If you are looking for some ideas on what to contribute, check out the JIRA issues for the Apache Arrow project. Comment on the issue and/or contact dev@arrow.apache.org with your questions and ideas.
If you’d like to report a bug but don’t have time to fix it, you can still post it on JIRA, or email the mailing list dev@arrow.apache.org
We use yarn to install dependencies and run scrips.
yarn clean
- cleans targetsyarn build
- cleans and compiles all targetsyarn test
- executes tests against built targetsThese scripts accept argument lists of targets × modules:
targets
are es5
, es2015
, esnext
, and all
(default: all
)modules
are cjs
, esm
, umd
, and all
(default: all
)Examples:
yarn build
-- builds all ES targets in all module formatsyarn build -t es5 -m all
-- builds the ES5 target in all module formatsyarn build -t all -m cjs
-- builds all ES targets in the CommonJS module formatyarn build -t es5 -t es2015 -m all
-- builds the ES5 and ES2015 targets in all module formatsyarn build -t es5 -m cjs -m esm
-- builds the ES5 target in CommonJS and ESModules module formatsThis argument configuration also applies to clean
and test
scripts.
To run tests on the bundles, you need to build them first. To run tests directly on the sources without bundling, use the src
target (e.g. yarn test -t src
).
yarn deploy
Uses lerna to publish each build target to npm with conventional changelogs.
Once generated, the flatbuffers format code needs to be adjusted for our build scripts (assumes gnu-sed
):
cd $ARROW_HOME # Create a tmpdir to store modified flatbuffers schemas tmp_format_dir=$(mktemp -d) cp ./format/*.fbs $tmp_format_dir # Remove namespaces from the flatbuffers schemas sed -i '+s+namespace org.apache.arrow.flatbuf;++ig' $tmp_format_dir/*.fbs sed -i '+s+org.apache.arrow.flatbuf.++ig' $tmp_format_dir/*.fbs # Generate TS source from the modified Arrow flatbuffers schemas flatc --ts --no-ts-reexport -o ./js/src/fb $tmp_format_dir/{File,Schema,Message}.fbs # Remove the tmpdir rm -rf $tmp_format_dir cd ./js/src/fb # Rename the existing files to <filename>.bak.ts mv File{,.bak}.ts && mv Schema{,.bak}.ts && mv Message{,.bak}.ts # Remove `_generated` from the ES6 imports of the generated files sed -i '+s+_generated\";+\";+ig' *_generated.ts # Fix all the `flatbuffers` imports sed -i '+s+./flatbuffers+flatbuffers+ig' *_generated.ts # Fix the Union createTypeIdsVector typings sed -i -r '+s+static createTypeIdsVector\(builder: flatbuffers.Builder, data: number\[\] \| Uint8Array+static createTypeIdsVector\(builder: flatbuffers.Builder, data: number\[\] \| Int32Array+ig' Schema_generated.ts # Remove "_generated" suffix from TS files mv File{_generated,}.ts && mv Schema{_generated,}.ts && mv Message{_generated,}.ts
Execute yarn lint
from the js
directory to fix the linting errors