Files
react-native-devtools-frontend/devtools_module_entrypoints.gni
T
Jack Franklin b14dbe3426 Fix heuristic for determining external bundles in Release
The current bundling system with Rollup tries to determine when given a
file if it’s an entry point (e.g. ui/ui.js) or not (e.g ui/someFile.js).
If it’s not an entry point, it will bundle that file into the entry
point JS file. So when we go to bundle ui/ui.js, it’ll find files like
ui/someFile.js, and pull them into ui/ui.js, which ends up being a fully
“rolled up” version of the ui folder.

The problem comes when you nest these folders;
ui/components/components.js is an entry point but the logic that the
Rollup bundling code uses incorrectly detects it as a regular file. So
you end up with ui/ui.js including a rolled-up version of
ui/components/components.js, which itself is a rolled-up file. We then
ship ui/ui.js and ui/components/components.js, meaning we’ve shipped
components.js twice - once as a standalone file, and once because it was
rolled up into ui.js.

This CL fixes this by changing how we detect bundles, we now look for
importing files whose parent directory is the same, so:

- components/components.js is a bundle
- but components/foo.js is not a bundle

By making this change we also now correctly detect third_party bundles,
with the exception of Acorn which is a special case, so we can lose the
checks for that in our Rollup config.

The logic here is somewhat duplicated between Rollup's config and the
ESLint rule plugin that we have; I plan on making a follow-up CL that
tries to define this logic in one place so if it changes in the future
we can update the code in one place and have the linting & rollup
update, plus we'll be able to use the ESLint tests as coverage to ensure
we've not broken our bundling.

Fixed: 1144123
Change-Id: Idd82a3ef69a09871867626a0d74266e25801243f
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2534202
Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
Reviewed-by: Tim van der Lippe <tvanderlippe@chromium.org>
2020-11-18 14:19:58 +00:00

188 lines
9.3 KiB
Plaintext

# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("./scripts/build/ninja/vars.gni")
devtools_module_entrypoint_sources = []
front_end_devtools_module_entrypoint_sources = []
generated_devtools_module_entrypoint_sources = []
foreach(module, devtools_module_entrypoint_sources) {
front_end_devtools_module_entrypoint_sources += [ "front_end/$module" ]
generated_devtools_module_entrypoint_sources +=
[ "$resources_out_dir/$module" ]
}
generated_typescript_entrypoint_sources = [
"$resources_out_dir/accessibility/accessibility-legacy.js",
"$resources_out_dir/accessibility/accessibility.js",
"$resources_out_dir/animation/animation-legacy.js",
"$resources_out_dir/animation/animation.js",
"$resources_out_dir/bindings/bindings-legacy.js",
"$resources_out_dir/bindings/bindings.js",
"$resources_out_dir/browser_debugger/browser_debugger-legacy.js",
"$resources_out_dir/browser_debugger/browser_debugger.js",
"$resources_out_dir/browser_sdk/browser_sdk.js",
"$resources_out_dir/changes/changes-legacy.js",
"$resources_out_dir/changes/changes.js",
"$resources_out_dir/client_variations/client_variations.js",
"$resources_out_dir/cm/cm.js",
"$resources_out_dir/cm_headless/cm_headless.js",
"$resources_out_dir/cm_modes/cm_modes.js",
"$resources_out_dir/color_picker/color_picker-legacy.js",
"$resources_out_dir/color_picker/color_picker.js",
"$resources_out_dir/common/common-legacy.js",
"$resources_out_dir/common/common.js",
"$resources_out_dir/component_helpers/component_helpers.js",
"$resources_out_dir/components/components-legacy.js",
"$resources_out_dir/components/components.js",
"$resources_out_dir/console/console-legacy.js",
"$resources_out_dir/console/console.js",
"$resources_out_dir/console_counters/console_counters-legacy.js",
"$resources_out_dir/console_counters/console_counters.js",
"$resources_out_dir/cookie_table/cookie_table-legacy.js",
"$resources_out_dir/cookie_table/cookie_table.js",
"$resources_out_dir/coverage/coverage-legacy.js",
"$resources_out_dir/coverage/coverage.js",
"$resources_out_dir/css_overview/css_overview-legacy.js",
"$resources_out_dir/css_overview/css_overview.js",
"$resources_out_dir/data_grid/data_grid-legacy.js",
"$resources_out_dir/data_grid/data_grid.js",
"$resources_out_dir/developer_resources/developer_resources-legacy.js",
"$resources_out_dir/developer_resources/developer_resources.js",
"$resources_out_dir/devices/devices.js",
"$resources_out_dir/diff/diff-legacy.js",
"$resources_out_dir/diff/diff.js",
"$resources_out_dir/dom_extension/dom_extension.js",
"$resources_out_dir/elements/elements-legacy.js",
"$resources_out_dir/elements/elements.js",
"$resources_out_dir/emulation/emulation-legacy.js",
"$resources_out_dir/emulation/emulation.js",
"$resources_out_dir/event_listeners/event_listeners-legacy.js",
"$resources_out_dir/event_listeners/event_listeners.js",
"$resources_out_dir/extensions/extensions-legacy.js",
"$resources_out_dir/extensions/extensions.js",
"$resources_out_dir/formatter/formatter-legacy.js",
"$resources_out_dir/formatter/formatter.js",
"$resources_out_dir/formatter_worker/formatter_worker.js",
"$resources_out_dir/har_importer/har_importer-legacy.js",
"$resources_out_dir/har_importer/har_importer.js",
"$resources_out_dir/heap_snapshot_model/heap_snapshot_model-legacy.js",
"$resources_out_dir/heap_snapshot_model/heap_snapshot_model.js",
"$resources_out_dir/heap_snapshot_worker/heap_snapshot_worker-legacy.js",
"$resources_out_dir/heap_snapshot_worker/heap_snapshot_worker.js",
"$resources_out_dir/help/help-legacy.js",
"$resources_out_dir/help/help.js",
"$resources_out_dir/host/host-legacy.js",
"$resources_out_dir/host/host.js",
"$resources_out_dir/i18n/i18n.js",
"$resources_out_dir/inline_editor/inline_editor-legacy.js",
"$resources_out_dir/inline_editor/inline_editor.js",
"$resources_out_dir/input/input-legacy.js",
"$resources_out_dir/input/input.js",
"$resources_out_dir/inspector_main/inspector_main-legacy.js",
"$resources_out_dir/inspector_main/inspector_main.js",
"$resources_out_dir/issues/issues-legacy.js",
"$resources_out_dir/issues/issues.js",
"$resources_out_dir/javascript_metadata/javascript_metadata-legacy.js",
"$resources_out_dir/javascript_metadata/javascript_metadata.js",
"$resources_out_dir/js_main/js_main-legacy.js",
"$resources_out_dir/js_main/js_main.js",
"$resources_out_dir/layer_viewer/layer_viewer-legacy.js",
"$resources_out_dir/layer_viewer/layer_viewer.js",
"$resources_out_dir/layers/layers-legacy.js",
"$resources_out_dir/layers/layers.js",
"$resources_out_dir/lighthouse/lighthouse-legacy.js",
"$resources_out_dir/lighthouse/lighthouse.js",
"$resources_out_dir/lighthouse_worker/LighthouseService.js",
"$resources_out_dir/lighthouse_worker/lighthouse_worker.js",
"$resources_out_dir/linear_memory_inspector/linear_memory_inspector-legacy.js",
"$resources_out_dir/linear_memory_inspector/linear_memory_inspector.js",
"$resources_out_dir/main/main-legacy.js",
"$resources_out_dir/main/main.js",
"$resources_out_dir/media/media-legacy.js",
"$resources_out_dir/media/media.js",
"$resources_out_dir/mobile_throttling/mobile_throttling-legacy.js",
"$resources_out_dir/mobile_throttling/mobile_throttling.js",
"$resources_out_dir/network/network-legacy.js",
"$resources_out_dir/network/network.js",
"$resources_out_dir/node_main/node_main-legacy.js",
"$resources_out_dir/node_main/node_main.js",
"$resources_out_dir/object_ui/object_ui-legacy.js",
"$resources_out_dir/object_ui/object_ui.js",
"$resources_out_dir/perf_ui/perf_ui-legacy.js",
"$resources_out_dir/perf_ui/perf_ui.js",
"$resources_out_dir/performance_monitor/performance_monitor-legacy.js",
"$resources_out_dir/performance_monitor/performance_monitor.js",
"$resources_out_dir/persistence/persistence-legacy.js",
"$resources_out_dir/persistence/persistence.js",
"$resources_out_dir/platform/platform.js",
"$resources_out_dir/profiler/profiler-legacy.js",
"$resources_out_dir/profiler/profiler.js",
"$resources_out_dir/protocol_client/protocol_client-legacy.js",
"$resources_out_dir/protocol_client/protocol_client.js",
"$resources_out_dir/protocol_monitor/protocol_monitor-legacy.js",
"$resources_out_dir/protocol_monitor/protocol_monitor.js",
"$resources_out_dir/quick_open/quick_open-legacy.js",
"$resources_out_dir/quick_open/quick_open.js",
"$resources_out_dir/resources/resources-legacy.js",
"$resources_out_dir/resources/resources.js",
"$resources_out_dir/root/root-legacy.js",
"$resources_out_dir/root/root.js",
"$resources_out_dir/screencast/screencast-legacy.js",
"$resources_out_dir/screencast/screencast.js",
"$resources_out_dir/sdk/sdk-legacy.js",
"$resources_out_dir/sdk/sdk.js",
"$resources_out_dir/search/search-legacy.js",
"$resources_out_dir/search/search.js",
"$resources_out_dir/security/security-legacy.js",
"$resources_out_dir/security/security.js",
"$resources_out_dir/services/services-legacy.js",
"$resources_out_dir/services/services.js",
"$resources_out_dir/settings/settings-legacy.js",
"$resources_out_dir/settings/settings.js",
"$resources_out_dir/snippets/snippets-legacy.js",
"$resources_out_dir/snippets/snippets.js",
"$resources_out_dir/source_frame/source_frame-legacy.js",
"$resources_out_dir/source_frame/source_frame.js",
"$resources_out_dir/sources/sources-legacy.js",
"$resources_out_dir/sources/sources.js",
"$resources_out_dir/startup/startup.js",
"$resources_out_dir/test_runner/test_runner.js",
"$resources_out_dir/text_editor/text_editor-legacy.js",
"$resources_out_dir/text_editor/text_editor.js",
"$resources_out_dir/text_utils/text_utils-legacy.js",
"$resources_out_dir/text_utils/text_utils.js",
"$resources_out_dir/theme_support/theme_support.js",
"$resources_out_dir/third_party/acorn/acorn.js",
"$resources_out_dir/third_party/i18n/i18n.js",
"$resources_out_dir/third_party/lighthouse/lighthouse-dt-bundle.js",
"$resources_out_dir/third_party/lit-html/lit-html.js",
"$resources_out_dir/third_party/marked/marked.js",
"$resources_out_dir/third_party/puppeteer/puppeteer.js",
"$resources_out_dir/timeline/timeline-legacy.js",
"$resources_out_dir/timeline/timeline.js",
"$resources_out_dir/timeline_model/timeline_model-legacy.js",
"$resources_out_dir/timeline_model/timeline_model.js",
"$resources_out_dir/toolbox_bootstrap/toolbox_bootstrap.js",
"$resources_out_dir/ui/components/components.js",
"$resources_out_dir/ui/ui-legacy.js",
"$resources_out_dir/ui/ui.js",
"$resources_out_dir/ui/utils/utils.js",
"$resources_out_dir/wasmparser_worker/wasmparser_worker.js",
"$resources_out_dir/web_audio/graph_visualizer/graph_visualizer.js",
"$resources_out_dir/web_audio/web_audio-legacy.js",
"$resources_out_dir/web_audio/web_audio.js",
"$resources_out_dir/webauthn/webauthn-legacy.js",
"$resources_out_dir/webauthn/webauthn.js",
"$resources_out_dir/worker_main/worker_main-legacy.js",
"$resources_out_dir/worker_main/worker_main.js",
"$resources_out_dir/worker_service/worker_service.js",
"$resources_out_dir/workspace/workspace-legacy.js",
"$resources_out_dir/workspace/workspace.js",
"$resources_out_dir/workspace_diff/workspace_diff-legacy.js",
"$resources_out_dir/workspace_diff/workspace_diff.js",
]