Closed caseycesari closed 5 years ago
Consider creating ./scripts/analyze
which would run the command on the main bundle by default and on vendor if the --vendor
parameter was supplied.
:+1: I tried out ./scripts/analyze
in the VM and this is the output:
vagrant@vagrant:/vagrant$ ./scripts/analyze
yarn run v1.13.0
$ source-map-explorer ${FORMAT:-} build/static/js/${BUNDLE_NAME:-main}.*
Unable to map 350 / 7298 bytes (4.80%)
{
"map.actions.js": 73,
"SensorMarker.js": 719,
"map.reducers.js": 260,
"BackToMapButton.js": 318,
"Header.js": 562,
"Footer.js": 566,
"Map.js": 1632,
"app.actions.js": 46,
"Intro.js": 663,
"App.js": 451,
"serviceWorker.js": 307,
"app.reducers.js": 128,
"reducers.js": 29,
"store.js": 36,
"index.js": 244,
"img/de_river_basin.svg": 77,
"img/fish_marker_icon.svg": 79,
"img/feed.svg": 758,
"<unmapped>": 350
}
Done in 0.32s.
vagrant@vagrant:/vagrant$ ./scripts/analyze --vendor
yarn run v1.13.0
$ source-map-explorer ${FORMAT:-} build/static/js/${BUNDLE_NAME:-main}.*
Unable to map 117 / 999982 bytes (0.01%)
{
"prop-types/index.js": 48,
"react/index.js": 46,
"@babel/runtime/helpers/esm/assertThisInitialized.js": 185,
"@babel/runtime/helpers/esm/defineProperty.js": 182,
"@babel/runtime/helpers/esm/createClass.js": 285,
"@babel/runtime/helpers/esm/classCallCheck.js": 156,
"history/node_modules/warning/browser.js": 53,
"invariant/browser.js": 374,
"redux-act/lib/index.js": 1216,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js": 156,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js": 285,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js": 191,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js": 452,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js": 133,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js": 121,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": 92,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js": 291,
"warning/warning.js": 62,
"react-map-gl/dist/esm/utils/globals.js": 245,
"redux/es/redux.js": 6157,
"mjolnir.js/dist/esm/utils/globals.js": 441,
"webpack/buildin/global.js": 175,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js": 182,
"@babel/runtime/helpers/esm/inheritsLoose.js": 131,
"react-redux/es/components/Context.js": 26,
"react-redux/es/components/Provider.js": 1018,
"@babel/runtime/helpers/esm/extends.js": 207,
"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js": 177,
"react-redux/es/components/connectAdvanced.js": 2821,
"react-redux/es/utils/shallowEqual.js": 379,
"react-redux/es/connect/wrapMapToProps.js": 552,
"react-redux/es/connect/mapDispatchToProps.js": 215,
"react-redux/es/connect/mapStateToProps.js": 114,
"react-redux/es/connect/mergeProps.js": 317,
"react-redux/es/connect/selectorFactory.js": 735,
"react-redux/es/connect/connect.js": 1187,
"react-redux/es/index.js": 105,
"@babel/runtime/helpers/esm/typeof.js": 463,
"@babel/runtime/helpers/esm/possibleConstructorReturn.js": 82,
"@babel/runtime/helpers/esm/getPrototypeOf.js": 140,
"@babel/runtime/helpers/esm/setPrototypeOf.js": 92,
"@babel/runtime/helpers/esm/inherits.js": 263,
"react-map-gl/dist/esm/utils/style-utils.js": 651,
"@babel/runtime/helpers/esm/slicedToArray.js": 38,
"@babel/runtime/helpers/esm/arrayWithHoles.js": 41,
"@babel/runtime/helpers/esm/iterableToArrayLimit.js": 236,
"@babel/runtime/helpers/esm/nonIterableRest.js": 87,
"viewport-mercator-project/node_modules/gl-matrix/esm/common.js": 87,
"viewport-mercator-project/node_modules/gl-matrix/esm/vec4.js": 360,
"viewport-mercator-project/dist/esm/math-utils.js": 273,
"viewport-mercator-project/node_modules/gl-matrix/esm/mat4.js": 3974,
"viewport-mercator-project/node_modules/gl-matrix/esm/vec2.js": 433,
"viewport-mercator-project/node_modules/gl-matrix/esm/vec3.js": 140,
"viewport-mercator-project/dist/esm/assert.js": 84,
"viewport-mercator-project/dist/esm/web-mercator-utils.js": 2024,
"viewport-mercator-project/dist/esm/viewport.js": 2277,
"viewport-mercator-project/dist/esm/web-mercator-viewport.js": 1752,
"viewport-mercator-project/dist/esm/fit-bounds.js": 776,
"viewport-mercator-project/dist/esm/normalize-viewport-props.js": 604,
"react-map-gl/dist/esm/utils/math-utils.js": 384,
"react-map-gl/dist/esm/utils/assert.js": 77,
"react-map-gl/dist/esm/utils/transition/transition-interpolator.js": 557,
"viewport-mercator-project/dist/esm/fly-to-viewport.js": 685,
"react-map-gl/dist/esm/utils/transition/transition-utils.js": 189,
"react-map-gl/dist/esm/utils/transition/viewport-fly-to-interpolator.js": 843,
"react-map-gl/dist/esm/utils/transition/linear-interpolator.js": 1379,
"react-map-gl/dist/esm/utils/map-state.js": 4493,
"react-map-gl/dist/esm/components/static-map.js": 4575,
"react-map-gl/dist/esm/utils/map-constraints.js": 233,
"react-map-gl/dist/esm/utils/transition-manager.js": 3619,
"mjolnir.js/dist/esm/utils/hammer-overrides.js": 557,
"mjolnir.js/dist/esm/utils/hammer.browser.js": 99,
"mjolnir.js/dist/esm/constants.js": 1278,
"mjolnir.js/dist/esm/inputs/wheel-input.js": 1159,
"mjolnir.js/dist/esm/inputs/move-input.js": 1882,
"mjolnir.js/dist/esm/inputs/key-input.js": 1105,
"mjolnir.js/dist/esm/inputs/contextmenu-input.js": 675,
"mjolnir.js/dist/esm/utils/event-utils.js": 771,
"mjolnir.js/dist/esm/utils/event-registrar.js": 1379,
"mjolnir.js/dist/esm/event-manager.js": 3250,
"mjolnir.js/dist/esm/utils/hammer-manager-mock.js": 128,
"react-map-gl/dist/esm/utils/map-controller.js": 6805,
"react-map-gl/dist/esm/utils/deprecate-warn.js": 569,
"react-map-gl/dist/esm/components/interactive-map.js": 6824,
"react-map-gl/dist/esm/components/base-control.js": 1937,
"@babel/runtime/helpers/esm/get.js": 208,
"@babel/runtime/helpers/esm/superPropBase.js": 90,
"react-map-gl/dist/esm/components/draggable-control.js": 2411,
"react-map-gl/dist/esm/components/marker.js": 1013,
"react-map-gl/dist/esm/utils/dynamic-position.js": 625,
"react-map-gl/dist/esm/components/popup.js": 2723,
"react-map-gl/dist/esm/components/navigation-control.js": 1897,
"react-map-gl/dist/esm/overlays/canvas-overlay.js": 1085,
"react-map-gl/dist/esm/overlays/html-overlay.js": 716,
"react-map-gl/dist/esm/overlays/svg-overlay.js": 715,
"react-map-gl/dist/esm/index.js": 163,
"redux-act/lib/batch.js": 275,
"core-js/library/modules/_core.js": 81,
"core-js/library/modules/_descriptors.js": 129,
"redux-map-gl/dist/index.js": 305,
"immutability-helper/index.js": 3679,
"react-map-gl/dist/esm/mapbox/mapbox.js": 5598,
"core-js/library/modules/_global.js": 187,
"core-js/library/modules/_is-object.js": 95,
"core-js/library/modules/_fails.js": 88,
"hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js": 978,
"symbol-observable/es/index.js": 208,
"object-assign/index.js": 946,
"redux-act/lib/createAction.js": 1414,
"redux-act/lib/types.js": 485,
"react-is/index.js": 33,
"mapbox-gl/dist/mapbox-gl.js": 655949,
"core-js/library/modules/_export.js": 752,
"core-js/library/modules/_object-dp.js": 275,
"core-js/library/modules/_has.js": 85,
"core-js/library/modules/_to-iobject.js": 75,
"core-js/library/modules/_iobject.js": 137,
"core-js/library/modules/_defined.js": 104,
"core-js/library/modules/_to-integer.js": 116,
"redux-map-gl/dist/types.js": 130,
"react-dom/index.js": 252,
"symbol-observable/es/ponyfill.js": 204,
"react-virtualized-auto-sizer/dist/index.esm.js": 6577,
"babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js": 414,
"redux-thunk/es/index.js": 201,
"path-to-regexp/index.js": 3166,
"react/cjs/react.production.min.js": 5899,
"react-dom/cjs/react-dom.production.min.js": 98797,
"scheduler/index.js": 47,
"scheduler/cjs/scheduler.production.min.js": 4462,
"redux-act/lib/createReducer.js": 1170,
"redux-act/lib/assignAll.js": 542,
"redux-act/lib/bindAll.js": 538,
"redux-act/lib/disbatch.js": 856,
"redux-act/lib/loggers/index.js": 270,
"redux-act/lib/loggers/reduxLogger.js": 590,
"redux-act/lib/asError.js": 399,
"prop-types/factoryWithThrowingShims.js": 583,
"prop-types/lib/ReactPropTypesSecret.js": 87,
"react-is/cjs/react-is.production.min.js": 1911,
"webpack/buildin/harmony-module.js": 345,
"process/browser.js": 1679,
"hammerjs/hammer.js": 20362,
"redux-map-gl/dist/reducer.js": 800,
"babel-runtime/helpers/defineProperty.js": 204,
"babel-runtime/core-js/object/define-property.js": 57,
"core-js/library/fn/object/define-property.js": 100,
"core-js/library/modules/es6.object.define-property.js": 81,
"core-js/library/modules/_ctx.js": 289,
"core-js/library/modules/_a-function.js": 114,
"core-js/library/modules/_hide.js": 126,
"core-js/library/modules/_an-object.js": 110,
"core-js/library/modules/_ie8-dom-define.js": 134,
"core-js/library/modules/_dom-create.js": 127,
"core-js/library/modules/_to-primitive.js": 329,
"core-js/library/modules/_property-desc.js": 125,
"babel-runtime/helpers/extends.js": 251,
"babel-runtime/core-js/object/assign.js": 57,
"core-js/library/fn/object/assign.js": 53,
"core-js/library/modules/es6.object.assign.js": 77,
"core-js/library/modules/_object-assign.js": 456,
"core-js/library/modules/_object-keys.js": 88,
"core-js/library/modules/_object-keys-internal.js": 213,
"core-js/library/modules/_cof.js": 87,
"core-js/library/modules/_array-includes.js": 249,
"core-js/library/modules/_to-length.js": 101,
"core-js/library/modules/_to-absolute-index.js": 109,
"core-js/library/modules/_shared-key.js": 95,
"core-js/library/modules/_shared.js": 275,
"core-js/library/modules/_library.js": 28,
"core-js/library/modules/_uid.js": 128,
"core-js/library/modules/_enum-bug-keys.js": 132,
"core-js/library/modules/_object-gops.js": 48,
"core-js/library/modules/_object-pie.js": 45,
"core-js/library/modules/_to-object.js": 72,
"immutable/dist/immutable.js": 56639,
"redux-map-gl/dist/actions.js": 207,
"redux-logger/dist/redux-logger.js": 10331,
"path-to-regexp/node_modules/isarray/index.js": 213,
"resolve-pathname/index.js": 655,
"value-equal/index.js": 48,
"history/es/PathUtils.js": 599,
"history/es/LocationUtils.js": 803,
"history/es/createTransitionManager.js": 713,
"history/es/DOMUtils.js": 707,
"history/es/createBrowserHistory.js": 3392,
"react-router/es/Router.js": 1977,
"history/es/createHashHistory.js": 14,
"history/es/createMemoryHistory.js": 58,
"react-router-dom/es/Router.js": 2,
"react-router-dom/es/BrowserRouter.js": 1366,
"react-router/es/matchPath.js": 645,
"react-router/es/Route.js": 3364,
"react-router-dom/es/Route.js": 10,
"<unmapped>": 117
}
Done in 3.95s.
Thanks for the review and suggestion!
Overview
This tool will help us find sources of bloat in the app bundles.
Connects #36
Demo
Main bundle
Vendor bundle
Testing Instructions
./scripts/update
to install the new dependency.src/app
dir, runnpm run build
followed bynpm run analyze
.