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
This commit is contained in:
Pascal Hartig
2020-04-21 02:08:55 -07:00
committed by Facebook GitHub Bot
parent 2cf9eeb224
commit 9c18a98f89
4 changed files with 48 additions and 4 deletions

View File

@@ -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",

View File

@@ -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,

View File

@@ -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,
});

View File

@@ -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"