From 9c18a98f89d7dc98f5fb3b75f74042729f370bf4 Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Tue, 21 Apr 2020 02:08:55 -0700 Subject: [PATCH] Enable build minification Summary: This shaves another ~6MB of the zipped build. Less than I would have thought, but I haven't looked at the alternative options so far at all. Reviewed By: nikoant Differential Revision: D21131772 fbshipit-source-id: 641515d6f36fdeeffa5be81d64c2c1043a9e4e34 --- desktop/package.json | 1 + desktop/pkg-lib/src/runBuild.ts | 9 ++++++++- desktop/scripts/build-utils.ts | 16 ++++++++++++++-- desktop/yarn.lock | 26 +++++++++++++++++++++++++- 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index d3585941f..4e19ebaac 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -180,6 +180,7 @@ "jest-environment-jsdom-sixteen": "^1.0.3", "jest-fetch-mock": "^3.0.0", "metro": "^0.59.0", + "metro-minify-terser": "^0.59.0", "metro-resolver": "^0.59.0", "p-filter": "^2.1.0", "p-map": "^4.0.0", diff --git a/desktop/pkg-lib/src/runBuild.ts b/desktop/pkg-lib/src/runBuild.ts index be987025d..38872150b 100644 --- a/desktop/pkg-lib/src/runBuild.ts +++ b/desktop/pkg-lib/src/runBuild.ts @@ -77,6 +77,13 @@ export default async function runBuild( transformer: { ...baseConfig.transformer, babelTransformerPath: require.resolve('flipper-babel-transformer'), + minifierPath: 'metro-minify-terser', + minifierConfig: { + // see: https://www.npmjs.com/package/terser + keep_fnames: true, + module: true, + warnings: true, + }, }, resolver: { ...baseConfig.resolver, @@ -87,7 +94,7 @@ export default async function runBuild( }); await Metro.runBuild(config, { dev, - minify: false, + minify: !dev, resetCache: !dev, sourceMap: true, entry, diff --git a/desktop/scripts/build-utils.ts b/desktop/scripts/build-utils.ts index 34d1edd9e..d31df776c 100644 --- a/desktop/scripts/build-utils.ts +++ b/desktop/scripts/build-utils.ts @@ -54,6 +54,16 @@ export async function generatePluginEntryPoints() { console.log('✅ Generated plugin entry points.'); } +const minifierConfig = { + minifierPath: 'metro-minify-terser', + minifierConfig: { + // see: https://www.npmjs.com/package/terser + keep_fnames: true, + module: true, + warnings: true, + }, +}; + async function compile( buildFolder: string, projectRoot: string, @@ -71,6 +81,7 @@ async function compile( babelTransformationsDir, 'transform-app', ), + ...minifierConfig, }, resolver: { resolverMainFields: ['flipperBundlerEntry', 'module', 'main'], @@ -80,7 +91,7 @@ async function compile( }, { dev, - minify: false, + minify: !dev, resetCache: !dev, sourceMap: true, entry, @@ -145,6 +156,7 @@ export async function compileMain() { babelTransformationsDir, 'transform-main', ), + ...minifierConfig, }, resolver: { sourceExts: ['tsx', 'ts', 'js'], @@ -157,7 +169,7 @@ export async function compileMain() { entry: path.join(staticDir, 'main.ts'), out, dev, - minify: false, + minify: !dev, sourceMap: true, resetCache: !dev, }); diff --git a/desktop/yarn.lock b/desktop/yarn.lock index 42e59ddc0..c7f693845 100644 --- a/desktop/yarn.lock +++ b/desktop/yarn.lock @@ -3765,7 +3765,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.3.0: +commander@^2.11.0, commander@^2.20.0, commander@^2.3.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -8331,6 +8331,13 @@ metro-inspector-proxy@0.59.0: ws "^1.1.5" yargs "^14.2.0" +metro-minify-terser@^0.59.0: + version "0.59.0" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.59.0.tgz#57dfd539e3de03b59643f05a63af336deade127c" + integrity sha512-FSIPTL6+0S1Zyqs/wvypyfM6zxkKTXUHBqodoZMICwKnK0Q+/HeaXOagwY9AXf8LP3NvgGIaM3/qCGIVJnnYkQ== + dependencies: + terser "^4.6.3" + metro-minify-uglify@0.59.0: version "0.59.0" resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.59.0.tgz#6491876308d878742f7b894d7fca4af356886dd5" @@ -10964,6 +10971,14 @@ source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@^0.5.9 buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.12: + version "0.5.17" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.17.tgz#29fe1b3c98b9dbd5064ada89052ee8ff070cb46c" + integrity sha512-bwdKOBZ5L0gFRh4KOxNap/J/MpvX9Yxsq9lFDx65s3o7F/NiHy7JRaGIS8MwW6tZPAq9UXE207Il0cfcb5yu/Q== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -11420,6 +11435,15 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" +terser@^4.6.3: + version "4.6.11" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.11.tgz#12ff99fdd62a26de2a82f508515407eb6ccd8a9f" + integrity sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"