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