[Meta] Webpack master checklist
This issue serves as a somewhat comprehensive overview of the work being done toward implementing webpack as well as the future issues that can be worked on once webpack has been implemented.
Early Groundwork and Backported Changes
Find and correct missing dependency associations which would break under webpack
-
Add eslint – gitlab-ce!5445 gitlab-ce!7156 -
Clean up eslint globals exceptions – gitlab-ce!7642 -
Explicitly declare all javascript globals and all eslint rule violations – gitlab-ce!8043 -
Ensure javascript classes declared outside an IIFE are properties of window - gitlab-ce!8080 -
Backport frontend test fixes for Karma – gitlab-ce!8945
Update JavaScript test and fixtures to support eventual implementation of Karma test runner
-
Replace HAML fixtures by dynamically generated HTML fixtures – gitlab-ce!6059 gitlab-ce#24753 -
Replace static u2f JavaScript fixtures – gitlab-ce!8426 -
Precompile all frontend test fixtures – gitlab-ce!8384 gitlab-ee!1028
Webpack Dependencies
Update Omnibus build process to support webpack
-
Remove absolute URLs from frontend assets – gitlab-ce!8831 gitlab-ce!8869 -
Remove NodeJS as a production dependency – omnibus-gitlab!1264 (merged) -
Include NodeJS 6 on our build images – gitlab-omnibus-builder!23 (merged)
Update the GitLab development kit to support webpack
-
Add webpack to GDK Procfile – gitlab-development-kit!237 (merged) [ ] Add workhorse proxy for webpack dev server – gitlab-workhorse#104 (closed)
Implement Webpack and Karma
-
Integrate webpack for frontend asset compilation – gitlab-ce!7288 gitlab-ce!8939 gitlab-ee!1138
Post-Webpack Options (in no particular order)
-
Update the frontend development guide !9011 (merged) -
Upgrade to Babel 6 gitlab-ce!9072 -
Configure webpack to compile all javascript with Babel and remove *.js.es6
file extension in favor of*.js
gitlab-ce!8988 -
Reduce omnibus package size by compressing sourcemaps in production – gitlab-ce#27538 -
Upgrade webpack to v2.2 gitlab-ce!9078 -
Update rack middleware to utilize webpack-dev-server via unix socket -
Add Yarn support to omnibus and gitlab CI #27613 (closed) -
Use webpack CommonsChunkPlugin to move common javascript files into a single bundle gitlab-ce!9647 -
Replace all polyfills with corejs requires gitlab-ce!9749 -
Include babel transform plugins based on target browsers #28026 (moved) -
Remove any remaining "javascript gems" -
Replace all vendored frontend assets in /vendor/assets/*
with npm modules -
Remove sprockets -
Migrate remaining sprockets bundles to webpack -
ace editor -
cropper gitlab-ce!9647 -
katex -
raphael gitlab-ce!9696 -
u2f gitlab-ce!9755
-
-
Migrate SCSS compilation to webpack (with C library) #29346 (moved) -
Migrate remaining static assets to webpack -
Remove sprockets and all associated gems
-
-
Remove all IIFEs Issue: #29219 (moved) / MR: !9827 (closed) (wip) -
Remove hack to exempt 'use strict'
from inclusion in all bundles !9072 (merged) -
Remove hack to bind this
towindow
in all modules to emulate sprockets behavior !9123 (merged) -
Remove global scope abuse, convert class scripts into export
syntax, and remove all usage ofwindow.gl
-
Use webpack's code splitting features to reduce bundle sizes -
Refactor out all contextual requireAll
statements #28454 (closed) -
Convert vue bundles to use pre-compiled vue templates and remove vue compile runtime #29519 (closed) -
Implement and document hot module replacement for Vue development