META: Library Updates and Webpack bundle optimisations
This is a META issue which is collecting our different tasks concerning libraries and webpack bundling according to our OKR's.
Transfer old used libraries to being Yarn managed
We currently have different legacy libraries which are simply used on a copied version (see \vendor\assets\javascripts
). The idea is to use instead their current Yarn managed Version.
Status | Issue | Library | Version | Latest | URL |
---|---|---|---|---|---|
|
#39616 (closed) | autosize.js | 3.0.14 | 4.0.0 | http://www.jacklmoore.com/autosize/ |
Chart.js | 1.0.2 | 2.7.1 | http://chartjs.org/ | ||
!15531 (merged) | clipboard.js | 1.4.2 | 1.7.1 | https://zenorocha.github.io/clipboard.js | |
gitlab-org/gitlab-ce!20195 | date.format.js | 1.2.3 | |||
#39633 (closed) | fuzzaldrin-plus.js | 0.3.1 | 0.5.0 | https://github.com/jeancroy/fuzz-aldrin-plus | |
jquery.atwho.js | 1.5.1 | 1.5.4 | https://github.com/ichord/At.js/blob/master/package.json | ||
jquery.caret.js | |||||
jquery.endless-scroll.js | 1.4.8 | 1.8.0 | https://github.com/fredwu/jquery-endless-scroll/blob/master/js/jquery.endless-scroll.js | ||
gitlab-org/gitlab-ce!15098 | jquery.scrollTo.js | 2.1.2 | 2.1.2 | https://github.com/flesler/jquery.scrollTo | |
!17004 (merged) | jquery.waitforimages.js | 1.4 | 2.2.0 | https://github.com/alexanderdickson/waitForImages | |
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15864 | katex.js | Special GL Version | |||
latinise.js | Only Function (Move to Utils) | ||||
pdf.js | Special GL Webpack | ||||
pdf.min.js | |||||
pdf.worker.js | |||||
pdf.worker.min.js | |||||
peek.js | Special GL ? | ||||
peek.performance_bar.js | Performance Bar | ||||
!19274 (merged) | Sortable.js | 1.4.2 | 1.6.1 | https://github.com/RubaXa/Sortable | |
u2f.js | Google Special | ||||
https://gitlab.com/gitlab-org/gitlab-ce/issues/49741 | xterm (Directory) | 2.1.0 | 2.9.1 | https://github.com/sourcelair/xterm.js |
Updating existing libraries
The background is to update our currently used libraries to their latest version (based on yarn outdated
). We have 3 types of libraries (Client packaged, Libraries Used for building etc., pure dev dependencies). We will try to group them in logic groups and update them per issue individually.
Status | Issue | Type | Package | Current | Wanted | Latest | Package Type | URL |
---|---|---|---|---|---|---|---|---|
#40444 (closed) | C | axios | 0.16.2 | 0.16.2. | 0.17.0 | dependencies | https://github.com/axios/axios | |
#40445 (closed) | B | babel-core | 6.23.1 | 6.26.0 | 6.26.0 | dependencies | https://babeljs.io/ | |
#40445 (closed) | B | babel-eslint | 7.2.1 | 7.2.3 | 8.0.1 | dependencies | https://github.com/babel/babel-eslint | |
#40445 (closed) | B | babel-loader | 7.1.1 | 7.1.2 | 7.1.2 | dependencies | https://github.com/babel/babel-loader | |
#40445 (closed) | B | babel-plugin-istanbul | 4.0.0 | 4.1.5 | 4.1.5 | devDependencies | https://github.com/istanbuljs/babel-plugin-istanbul#readme | |
#40445 (closed) | B | babel-plugin-transform-define | 1.2.0 | 1.3.0 | 1.3.0 | dependencies | https://github.com/FormidableLabs/babel-plugin-transform-define | |
#40445 (closed) | B | babel-preset-latest | 6.24.0 | 6.24.1 | 6.24.1 | dependencies | https://babeljs.io/ | |
#40445 (closed) | B | babel-preset-stage-2 | 6.22.0 | 6.24.1 | 6.24.1 | dependencies | https://babeljs.io/ | |
(removed) | !18232 (merged) | bootstrap-sass | 3.3.6 | 3.3.7 | 3.3.7 | dependencies | https://github.com/twbs/bootstrap-sass#readme | |
!17246 (merged) | compression-webpack-plugin | 1.0.0 | 1.0.1 | 1.0.1 | dependencies | https://webpack.js.org/plugins/compression-webpack-plugin/ | ||
!17246 (merged) | copy-webpack-plugin | 4.0.1 | 4.2.0 | 4.2.0 | dependencies | https://github.com/webpack-contrib/copy-webpack-plugin | ||
core-js | 2.4.1 | 2.5.1 | 2.5.1 | dependencies | https://github.com/zloirock/core-js#readme | |||
cropper | 2.3.0 | 2.3.4 | 3.1.3 | dependencies | https://fengyuanchen.github.io/cropper | |||
!17246 (merged) | css-loader | 0.28.0 | 0.28.7 | 0.28.7 | dependencies | https://github.com/webpack/css-loader#readme | ||
#37013 (closed) | d3 | 3.5.11 | 3.5.17 | 4.11.0 | dependencies | https://d3js.org | ||
!22646 (closed) (to 1.12.0) | document-register-element | 1.3.0 | 1.3.0. | 1.7.0 | dependencies | https://github.com/WebReflection/document-register-element | ||
dropzone | 4.2.0 | 4.3.0 | 5.2.0 | dependencies | http://www.dropzonejs.com | |||
#40476 (closed) | B | eslint | 3.19.0 | 3.19.0. | 4.10.0 | devDependencies | https://eslint.org | |
#40476 (closed) | B | eslint-config-airbnb-base | 10.0.1 | 10.0.1. | 12.1.0 | devDependencies | https://github.com/airbnb/javascript | |
#40476 (closed) | B | eslint-plugin-filenames | 1.1.0 | 1.2.0 | 1.2.0 | devDependencies | https://github.com/selaux/eslint-plugin-filenames | |
#40476 (closed) | B | eslint-plugin-html | 2.0.1 | 2.0.3 | 3.2.2 | dependencies | https://github.com/BenoitZugmeyer/eslint-plugin-html | |
#40476 (closed) | B | eslint-plugin-import | 2.2.0 | 2.8.0 | 2.8.0 | devDependencies | https://github.com/benmosher/eslint-plugin-import | |
#40476 (closed) | B | eslint-plugin-jasmine | 2.2.0 | 2.9.1 | 2.9.1 | devDependencies | https://github.com/tlvince/eslint-plugin-jasmine | |
#40476 (closed) | B | eslint-plugin-promise | 3.5.0 | 3.6.0 | 3.6.0 | devDependencies | https://github.com/xjamundx/eslint-plugin-promise#readme | |
!17246 (merged) | file-loader | 0.11.1 | 0.11.2 | 1.1.5 | dependencies | https://github.com/webpack/file-loader | ||
!16573 (merged) (to 2.9.0) | jasmine-core | 2.6.3 | 2.8.0 | 2.8.0 | devDependencies | http://jasmine.github.io | ||
jquery | 2.2.1 | 2.2.4 | 3.2.1 | dependencies | https://jquery.com | |||
!15570 (merged) | jquery-ujs | 1.2.1 | 1.2.2 | 1.2.2 | dependencies | https://github.com/rails/jquery-ujs#readme | ||
js-cookie | 2.1.3 | 2.2.0 | 2.2.0 | dependencies | https://github.com/js-cookie/js-cookie#readme | |||
jszip | 3.1.3 | 3.1.4 | 3.1.4 | dependencies | https://github.com/Stuk/jszip#readme | |||
!16402 (merged) | karma | 1.7.0 | 1.7.1 | 1.7.1 | devDependencies | http://karma-runner.github.io/ | ||
!16402 (merged) | karma-chrome-launcher | 2.1.1 | 2.2.0 | 2.2.0 | devDependencies | https://github.com/karma-runner/karma-chrome-launcher#readme | ||
!16402 (merged) | karma-coverage-istanbul-reporter | 0.2.0 | 0.2.3 | 1.3.0 | devDependencies | https://github.com/mattlewis92/karma-coverage-istanbul-reporter#readme | ||
!16402 (merged) | karma-mocha-reporter | 2.2.2 | 2.2.5 | 2.2.5 | devDependencies | http://www.litixsoft.de/index.php?lang=en#modules | ||
!16402 (merged) | karma-webpack | 2.0.4 | 2.0.5 | 2.0.5 | devDependencies | http://github.com/webpack/karma-webpack | ||
!21526 (merged) (to 0.14.3) | monaco-editor | 0.10.0 | 0.10.0. | 0.10.1 | dependencies | https://github.com/Microsoft/monaco-editor#readme | ||
mousetrap | 1.4.6 | 1.6.1 | 1.6.1 | dependencies | https://github.com/ccampbell/mousetrap#readme | |||
!17246 (merged) | nodemon | 1.11.0 | 1.12.1 | 1.12.1 | devDependencies | http://nodemon.io | ||
prismjs | 1.6.0 | 1.8.3 | 1.8.3 | dependencies | https://github.com/LeaVerou/prism#readme | |||
!16573 (merged) | raven-js | 3.14.0 | 3.19.1 | 3.19.1 | dependencies | https://github.com/getsentry/raven-js | ||
!17246 (merged) | react-dev-utils | 0.5.2 | 0.5.2. | 4.1.0 | dependencies | https://github.com/facebookincubator/create-react-app#readme | ||
select2 | 3.5.2-browserify | 3.5.2-browserify. | 4.0.6-rc.0 | dependencies | https://select2.org | |||
three | 0.84.0 | 0.84.0. | 0.87.1 | dependencies | http://threejs.org/ | |||
three-stl-loader | 1.0.4 | 1.0.6 | 1.0.6 | dependencies | https://github.com/enspiral-cherubi/three-stl-loader#readme | |||
#40465 (closed) | timeago.js | 2.0.5 | 2.0.5. | 3.0.2 | dependencies | https://github.com/hustcc/timeago.js#readme | ||
!17246 (merged) | url-loader | 0.5.8 | 0.5.9 | 0.6.2 | dependencies | https://github.com/webpack-contrib/url-loader | ||
visibilityjs | 1.2.4 | 1.2.5 | 1.2.5 | dependencies | https://github.com/ai/visibilityjs#readme | |||
!14874 (merged) | vue | 2.2.6 | 2.5.2 | 2.5.2 | dependencies | https://github.com/vuejs/vue#readme | ||
!17246 (merged) | vue-loader | 11.3.4 | 11.3.4. | 13.3.0 | dependencies | https://github.com/vuejs/vue-loader | ||
!14874 (merged) | vue-template-compiler | 2.2.6 | 2.5.2 | 2.5.2 | dependencies | https://github.com/vuejs/vue/tree/dev/packages/vue-template-compiler#readme | ||
!17246 (merged) | webpack | 3.5.5 | 3.8.1 | 3.8.1 | dependencies | https://github.com/webpack/webpack | ||
!17246 (merged) | webpack-bundle-analyzer | 2.8.2 | 2.9.0 | 2.9.0 | dependencies | https://github.com/th0r/webpack-bundle-analyzer | ||
!17246 (merged) | webpack-dev-server | 2.7.1 | 2.9.3 | 2.9.3 | devDependencies | http://github.com/webpack/webpack-dev-server |
Remove unnecessary libraries
The idea is to get rid of old libraries/unnecessary libraries.
Improve Webpack bundled libraries
Sometimes due to different setup we end up with not optimised loading/importing of different libraries.
- Check that all external libraries are only included once in the bundles
- Currently loading some JS files multiple times due to duplicate
webpack_bundle_tag
's (Investigation needed)
Improve Webpack bundles
- Emoji digest.json is imported into the package and not loaded async this results in a huge bundle (gitlab-org/gitlab-ce#39614)