Skip to content

[Meta] Webpack master checklist

webpack-logo

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
Update the GitLab development kit to support webpack

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 (closed)
  • 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 to window in all modules to emulate sprockets behavior !9123 (merged)
  • Remove global scope abuse, convert class scripts into export syntax, and remove all usage of window.gl: https://gitlab.com/gitlab-org/gitlab-ce/issues/38869, https://gitlab.com/gitlab-org/gitlab-ce/issues/20983
  • 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
Edited by Inactive Account