​Hey Guys, ​

In an effort to simplify the JS dependencies of Airflow
​​
,
​I've
 introduce
​d​
 npm and webpack for the package management. For now, it only implements
this in the www_rbac version of the web server.
​

Pull Request: https://github.com/apache/incubator-airflow/pull/3572

The problem with the
​existing ​
frontend (
​JS
) code of Airflow is that most of the custom JS is written
​with​
in the html files, using the Flask's (Jinja) variables in that JS. The next
step of this effort would be to extract that custom
​JS
 code in separate JS files
​,​
use the dependencies in those files using require or import
​ and introduce the JS automated test suite eventually. ​
(At the moment, I'm simply using the CopyWebPackPlugin to copy the required
dependencies for use)
​.

There are also some dependencies which are directly modified in the codebase
​ or are outdated​
. I couldn't found the
​ correct​
npm versions of those libraries. (dagre-d3.js and gantt-chart-d3v2.js).
Apparently dagre-d3.js that we are using is one of the gist or is very old
version
​ not supported with webpack 4​
, while the gantt-chart-d3v2 has been modified according to Airflow's
requirements
​ I believe​
.
​ Used the existing libraries for now. ​

​I am currently working in a separate branch to upgrade the DagreD3
library, and updating the custom JS related to DagreD3 accordingly. ​

This PR also introduces the pypi_push.sh
<https://github.com/apache/incubator-airflow/pull/3572/files#diff-8fae684cdcc8cc8df2232c8df16f64cb>
script that will generate all the JS statics before creating and uploading
the package.
​
​Please let me know if you guys have any questions or suggestions and I'd
be happy to answer that. ​

Best,
*Verdan Mahmood*
(+31) 655 576 560

Reply via email to