[
https://issues.apache.org/jira/browse/ARROW-10255?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Krisztian Szucs resolved ARROW-10255.
-------------------------------------
Fix Version/s: 4.0.0
Resolution: Fixed
Issue resolved by pull request 8418
[https://github.com/apache/arrow/pull/8418]
> [JS] Reorganize imports and exports to be more friendly to ESM tree-shaking
> ---------------------------------------------------------------------------
>
> Key: ARROW-10255
> URL: https://issues.apache.org/jira/browse/ARROW-10255
> Project: Apache Arrow
> Issue Type: Improvement
> Components: JavaScript
> Affects Versions: 0.17.1
> Reporter: Paul Taylor
> Assignee: Paul Taylor
> Priority: Major
> Labels: pull-request-available
> Fix For: 4.0.0
>
> Time Spent: 2h 10m
> Remaining Estimate: 0h
>
> Presently most of our public classes can't be easily
> [tree-shaken|https://webpack.js.org/guides/tree-shaking/] by library
> consumers. This is a problem for libraries that only need to use parts of
> Arrow.
> For example, the vis.gl projects have an integration test that imports three
> of our simpler classes and tests the resulting bundle size:
> {code:javascript}
> import {Schema, Field, Float32} from 'apache-arrow';
> // | Bundle Size | Compressed
> // | 202KB (207112) KB | 45KB (46618) KB
> {code}
> We can help solve this with the following changes:
> * Add "sideEffects": false to our ESM package.json
> * Reorganize our imports to only include what's needed
> * Eliminate or move some static/member methods to standalone exported
> functions
> * Wrap the utf8 util's node Buffer detection in eval so Webpack doesn't
> compile in its own Buffer shim
> * Removing flatbuffers namespaces from generated TS because these defeat
> Webpack's tree-shaking ability
> Candidate functions for removal/moving to standalone functions:
> * Schema.new, Schema.from, Schema.prototype.compareTo
> * Field.prototype.compareTo
> * Type.prototype.compareTo
> * Table.new, Table.from
> * Column.new
> * Vector.new, Vector.from
> * RecordBatchReader.from
> After applying a few of the above changes to the Schema and flatbuffers
> files, I was able to reduce the vis.gl's import size 90%:
> {code:javascript}
> // Bundle Size | Compressed
> // 24KB (24942) KB | 6KB (6154) KB
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)