Reorganize internal dependencies
See original GitHub issueThe actual code base doesn’t import features but fully relies on Chart.* (e.g. Chart.helpers, Chart.defaults, etc…). Files are imported in chart.js in the order they are supposed to depend from each other. As far as I tried, this makes very complicated to safely and properly import a subset of the library.
We could reorganize the library to use require('path/to/features') instead of Chart.{feature} and so remove all function export and Chart.* references.
var helpers = require('../helpers'); // instead of = Chart.helpers
var defaults = require('../defaults'); // instead of = Chart.defaults
//...
The Chart namespace would be fully populated in chart.js:
// chart.js
var Chart = require('./core/core.controller');
Chart.defaults = require('./core/core.defaults');
Chart.helpers = require('./helpers/index');
Chart.controllers = require('./controllers/index');
// ...
Removing the “function export” impacts a lot of lines (remove one tab almost everywhere), so we could do that step by step to avoid huge and painful reviews and limit conflicts with open PRs. I would sequentially split the work as follows:
-
#4479 exportChart.helpers.*, importsrc/helpers/index -
#4512 exportChart.defaults.*, importsrc/core/core.defaults - #5114, #5382, #5969 export
Chart.*from core classes -
#4540 exportChart.elements.*, importsrc/elements/index -
#5871 exportChart.controllers.*, importsrc/controllers/index -
#5953 exportChart.scales.*, importsrc/scales/index -
#4509 exportChart.platform.*, importsrc/platform/platform -
#5114 exportChart.plugins.*, importsrc/plugins/index -
#5868 deprecateChart.*(from `src/charts/*.js)
This is a preliminary work in order to migrate to ES6 modules (discussed in #2466, #4461, #4303, etc.). Awesome work as been done by @salzhrani but I believe that trying to do everything in one step (including ES6 new features) will take time, be hard or even impossible to review / handle conflicts with incoming contributions and finally takes forever to land in master.
Thoughts?
Issue Analytics
- State:
- Created 6 years ago
- Reactions:10
- Comments:6 (3 by maintainers)

Top Related StackOverflow Question
Any progress on this?
The code uses
importeverywhere now, so I’m going to consider this done. https://github.com/chartjs/Chart.js/pull/6935