Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revise process of making bundles and simplify making partial bundles #5508

Merged
merged 15 commits into from
Feb 22, 2021
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 2 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,34 +75,9 @@ Starting in `v1.15.0`, plotly.js ships with several _partial_ bundles (more info

Starting in `v1.39.0`, plotly.js publishes _distributed_ npm packages with no dependencies. For example, run `npm install plotly.js-geo-dist` and add `import Plotly from 'plotly.js-geo-dist';` to your code to start using the plotly.js geo package.

If none of the distributed npm packages meet your needs, and you would like to manually pick which plotly.js modules to include, you'll first need to run `npm install plotly.js` and then create a *custom* bundle by using `plotly.js/lib/core`, and loading only the trace types that you need (e.g. `pie` or `choropleth`). The recommended way to do this is by creating a *bundling file*. For example, in CommonJS:
If none of the distributed npm packages meet your needs, you create custom bundle of desired trace modules e.g. `pie` and `sunburst` using
`npm run partial-bundle pie sunburst name=custom`

```javascript
// in custom-plotly.js
var Plotly = require('plotly.js/lib/core');

// Load in the trace types for pie, and choropleth
Plotly.register([
require('plotly.js/lib/pie'),
require('plotly.js/lib/choropleth')
]);

module.exports = Plotly;
```

Then elsewhere in your code:

```javascript
var Plotly = require('./path/to/custom-plotly');
```

#### Non-ascii characters

Important: the plotly.js code base contains some non-ascii characters. Therefore, please make sure to set the `charset` attribute to `"utf-8"` in the script tag that imports your plotly.js bundle. For example:

```html
<script src="my-plotly-bundle.js" charset="utf-8"></script>
```

## Building plotly.js

Expand Down
2 changes: 1 addition & 1 deletion lib/aggregate.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/transforms/aggregate instead of lib/aggregate
module.exports = require('../src/transforms/aggregate');
2 changes: 1 addition & 1 deletion lib/bar.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/bar instead of lib/bar
module.exports = require('../src/traces/bar');
2 changes: 1 addition & 1 deletion lib/barpolar.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/barpolar instead of lib/barpolar
module.exports = require('../src/traces/barpolar');
2 changes: 1 addition & 1 deletion lib/box.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/box instead of lib/box
module.exports = require('../src/traces/box');
2 changes: 1 addition & 1 deletion lib/calendars.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/components/calendars instead of lib/calendars
module.exports = require('../src/components/calendars');
2 changes: 1 addition & 1 deletion lib/candlestick.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/candlestick instead of lib/candlestick
module.exports = require('../src/traces/candlestick');
2 changes: 1 addition & 1 deletion lib/carpet.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/carpet instead of lib/carpet
module.exports = require('../src/traces/carpet');
2 changes: 1 addition & 1 deletion lib/choropleth.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/choropleth instead of lib/choropleth
module.exports = require('../src/traces/choropleth');
2 changes: 1 addition & 1 deletion lib/choroplethmapbox.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/choroplethmapbox instead of lib/choroplethmapbox
module.exports = require('../src/traces/choroplethmapbox');
2 changes: 1 addition & 1 deletion lib/cone.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/cone instead of lib/cone
module.exports = require('../src/traces/cone');
2 changes: 1 addition & 1 deletion lib/contour.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/contour instead of lib/contour
module.exports = require('../src/traces/contour');
2 changes: 1 addition & 1 deletion lib/contourcarpet.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/contourcarpet instead of lib/contourcarpet
module.exports = require('../src/traces/contourcarpet');
3 changes: 0 additions & 3 deletions lib/core.js

This file was deleted.

2 changes: 1 addition & 1 deletion lib/densitymapbox.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/densitymapbox instead of lib/densitymapbox
module.exports = require('../src/traces/densitymapbox');
2 changes: 1 addition & 1 deletion lib/filter.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/transforms/filter instead of lib/filter
module.exports = require('../src/transforms/filter');
2 changes: 1 addition & 1 deletion lib/funnel.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/funnel instead of lib/funnel
module.exports = require('../src/traces/funnel');
2 changes: 1 addition & 1 deletion lib/funnelarea.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/funnelarea instead of lib/funnelarea
module.exports = require('../src/traces/funnelarea');
2 changes: 1 addition & 1 deletion lib/groupby.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/transforms/groupby instead of lib/groupby
module.exports = require('../src/transforms/groupby');
2 changes: 1 addition & 1 deletion lib/heatmap.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/heatmap instead of lib/heatmap
module.exports = require('../src/traces/heatmap');
2 changes: 1 addition & 1 deletion lib/heatmapgl.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/heatmapgl instead of lib/heatmapgl
module.exports = require('../src/traces/heatmapgl');
2 changes: 1 addition & 1 deletion lib/histogram.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/histogram instead of lib/histogram
module.exports = require('../src/traces/histogram');
2 changes: 1 addition & 1 deletion lib/histogram2d.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/histogram2d instead of lib/histogram2d
module.exports = require('../src/traces/histogram2d');
2 changes: 1 addition & 1 deletion lib/histogram2dcontour.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/histogram2dcontour instead of lib/histogram2dcontour
module.exports = require('../src/traces/histogram2dcontour');
2 changes: 1 addition & 1 deletion lib/image.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';

// deprecated in plotly.js v2 - one may use src/traces/image instead of lib/image
module.exports = require('../src/traces/image');
16 changes: 11 additions & 5 deletions lib/index-basic.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
'use strict';

var Plotly = require('./core');
var core = require('../src/core');

Plotly.register([
require('./bar'),
require('./pie')
core.register([
require('../src/traces/bar'),
require('../src/traces/pie'),

require('../src/transforms/aggregate'),
require('../src/transforms/filter'),
require('../src/transforms/groupby'),
require('../src/transforms/sort'),
require('../src/components/calendars')
]);

module.exports = require('./register_extra')(Plotly);
module.exports = (function(Plotly) { return Plotly; })(core);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally it feels to me like this indirection makes things more confusing than the previous pattern - which with register_extra removed becomes just:

var Plotly = require('../src/core');

Plotly.register([...]);

module.exports = Plotly;

Is there another reason for it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

register_extra file is not documented and confusing.
Until we could bump d3 (cc: #5112) or possibly release a @plotly/d3-v3 patch to fix unexpected characters at build time we need a function to the return correct result.

34 changes: 20 additions & 14 deletions lib/index-cartesian.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
'use strict';

var Plotly = require('./core');
var core = require('../src/core');

Plotly.register([
require('./bar'),
require('./box'),
require('./heatmap'),
require('./histogram'),
require('./histogram2d'),
require('./histogram2dcontour'),
require('./image'),
require('./pie'),
require('./contour'),
require('./scatterternary'),
require('./violin')
core.register([
require('../src/traces/bar'),
require('../src/traces/box'),
require('../src/traces/heatmap'),
require('../src/traces/histogram'),
require('../src/traces/histogram2d'),
require('../src/traces/histogram2dcontour'),
require('../src/traces/contour'),
require('../src/traces/scatterternary'),
require('../src/traces/violin'),
require('../src/traces/image'),
require('../src/traces/pie'),

Copy link
Contributor Author

@archmoj archmoj Feb 22, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As you can see, image and pie used to be registered in a different order in cartesian bundles.

require('../src/transforms/aggregate'),
require('../src/transforms/filter'),
require('../src/transforms/groupby'),
require('../src/transforms/sort'),
require('../src/components/calendars')
]);

module.exports = require('./register_extra')(Plotly);
module.exports = (function(Plotly) { return Plotly; })(core);
30 changes: 18 additions & 12 deletions lib/index-finance.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
'use strict';

var Plotly = require('./core');
var core = require('../src/core');

Plotly.register([
require('./bar'),
require('./histogram'),
require('./pie'),
require('./funnelarea'),
require('./ohlc'),
require('./candlestick'),
require('./funnel'),
require('./waterfall'),
require('./indicator')
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As you can see, funnel and waterfall and indicator used to be registered in a different order in finance bundles.

core.register([
require('../src/traces/bar'),
require('../src/traces/histogram'),
require('../src/traces/funnel'),
require('../src/traces/waterfall'),
require('../src/traces/pie'),
require('../src/traces/funnelarea'),
require('../src/traces/indicator'),
require('../src/traces/ohlc'),
require('../src/traces/candlestick'),

require('../src/transforms/aggregate'),
require('../src/transforms/filter'),
require('../src/transforms/groupby'),
require('../src/transforms/sort'),
require('../src/components/calendars')
]);

module.exports = require('./register_extra')(Plotly);
module.exports = (function(Plotly) { return Plotly; })(core);
16 changes: 11 additions & 5 deletions lib/index-geo.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
'use strict';

var Plotly = require('./core');
var core = require('../src/core');

Plotly.register([
require('./scattergeo'),
require('./choropleth')
core.register([
require('../src/traces/scattergeo'),
require('../src/traces/choropleth'),

require('../src/transforms/aggregate'),
require('../src/transforms/filter'),
require('../src/transforms/groupby'),
require('../src/transforms/sort'),
require('../src/components/calendars')
]);

module.exports = require('./register_extra')(Plotly);
module.exports = (function(Plotly) { return Plotly; })(core);
24 changes: 15 additions & 9 deletions lib/index-gl2d.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
'use strict';

var Plotly = require('./core');

Plotly.register([
require('./scattergl'),
require('./splom'),
require('./pointcloud'),
require('./heatmapgl'),
require('./parcoords')
var core = require('../src/core');

core.register([
require('../src/traces/scattergl'),
require('../src/traces/splom'),
require('../src/traces/pointcloud'),
require('../src/traces/heatmapgl'),
require('../src/traces/parcoords'),

require('../src/transforms/aggregate'),
require('../src/transforms/filter'),
require('../src/transforms/groupby'),
require('../src/transforms/sort'),
require('../src/components/calendars')
]);

module.exports = require('./register_extra')(Plotly);
module.exports = (function(Plotly) { return Plotly; })(core);
28 changes: 17 additions & 11 deletions lib/index-gl3d.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
'use strict';

var Plotly = require('./core');

Plotly.register([
require('./scatter3d'),
require('./surface'),
require('./mesh3d'),
require('./isosurface'),
require('./volume'),
require('./cone'),
require('./streamtube')
var core = require('../src/core');

core.register([
require('../src/traces/scatter3d'),
require('../src/traces/surface'),
require('../src/traces/isosurface'),
require('../src/traces/volume'),
require('../src/traces/mesh3d'),
require('../src/traces/cone'),
require('../src/traces/streamtube'),

require('../src/transforms/aggregate'),
require('../src/transforms/filter'),
require('../src/transforms/groupby'),
require('../src/transforms/sort'),
require('../src/components/calendars')
]);

module.exports = require('./register_extra')(Plotly);
module.exports = (function(Plotly) { return Plotly; })(core);
18 changes: 12 additions & 6 deletions lib/index-mapbox.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
'use strict';

var Plotly = require('./core');
var core = require('../src/core');

Plotly.register([
require('./scattermapbox'),
require('./choroplethmapbox'),
require('./densitymapbox')
core.register([
require('../src/traces/scattermapbox'),
require('../src/traces/choroplethmapbox'),
require('../src/traces/densitymapbox'),

require('../src/transforms/aggregate'),
require('../src/transforms/filter'),
require('../src/transforms/groupby'),
require('../src/transforms/sort'),
require('../src/components/calendars')
]);

module.exports = require('./register_extra')(Plotly);
module.exports = (function(Plotly) { return Plotly; })(core);
Loading