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 GitHub Comments
Any progress on this?
The code uses
import
everywhere now, so I’m going to consider this done. https://github.com/chartjs/Chart.js/pull/6935