There previously were two special files that were handled by `build_release_applications`: root.js and RuntimeInstantiator.js. Both files are explicitly part of the startup process of DevTools and its various entrypoints. To remove the copying from `build_release_applications`, we have to move these to the relevant `devtools_entrypoint`. Since a `devtools_entrypoints` bundles all subdirectories, we can't keep these files in `front_end/` directly. Instead, we move these files to `startup/` to denote their special-casing in the startup process. Next to that, we have to fix all usages of these files in the entrypoints. For all JavaScript entrypoint files, all side-effect legacy files that are loaded by `startup.js` (previously known as `root.js` and renamed to prevent confusion with the `root/` module) are removed. All "additional" legacy files that a particular entrypoint requires are still loaded as-is. The RuntimeInstantiator is moved to become an implementation detail of `startup/`. Therefore, all of the usages that were previously importing from `RuntimeInstantiator` now import via `startup.js`. In the end, the special-casing of these files are removed and renamed for clarity. In the future, we want to remove the complicated entrypoints startup process, but we are not ready for that yet. That will require additional cleanups with `resources` in `module.json` before that change can happen. R=aerotwist@chromium.org Bug: 1131500 Change-Id: I198d5a62d2aab70f842c68d9b4c0871fde1587a4 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2485072 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Paul Lewis <aerotwist@chromium.org>
DevTools Scripts
Development workflow scripts
These are scripts that can be useful to run independently as you're working on Chrome DevTools front-end.
The newer scripts such as for testing and hosted mode are written in Node.js, which has become the standard toolchain for web apps. The older scripts such as building (e.g. bundling and minifying) are written in Python, which has first-class support in Chromium's infrastructure.
Overview
Folders
- build - Python package for generating DevTools debug and release mode
- chrome_debug_launcher - automagically finds Chrome Canary and launches it with debugging flags (e.g. remote debugging port)
- closure - see section on Closure Compiler below
- gulp - experimental build process written in node.js & gulp to remove the dependency on Chromium-specific build tools (i.e. gn and ninja)
- hosted_mode - run DevTools on a localhost development server
- jsdoc_validator - enforces the use of Closure type annotations
Python Scripts
- compile_frontend.py - runs closure compiler to do static type analysis
- Note: the compiled outputs are not actually used to run DevTools
- lint_javascript.py - run eslint
- optimize_svg_images.py - manually run when changing svg images
Node.js scripts
The easiest way to run the node.js scripts is to use npm run which displays all the commands. For more information on the specific npm run commands, take a look at the primary devtools front-end readme (../readme.md).
Closure
DevTools manually rolls the closure compiler to ./closure. If you manually roll closure compiler, you will need to re-generate the closure_runner (in ./closure) and jsdoc_validator custom jars using the python scripts in their respective directory.