From 5b9fd525fa1210f8a2fe72650e235f4cccb985f6 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 22 Jul 2020 14:44:13 -0700 Subject: [PATCH] Minimize shipped tsserver This takes the shipped size from 9Mb to 2.9mb --- .../extension-browser.webpack.config.js | 19 +++++++++++++++- .../typescript-language-features/package.json | 1 + .../src/extension.browser.ts | 2 +- .../typescript-language-features/yarn.lock | 22 +++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/extensions/typescript-language-features/extension-browser.webpack.config.js b/extensions/typescript-language-features/extension-browser.webpack.config.js index 0662fd46d5e..560a4bb021e 100644 --- a/extensions/typescript-language-features/extension-browser.webpack.config.js +++ b/extensions/typescript-language-features/extension-browser.webpack.config.js @@ -7,6 +7,8 @@ 'use strict'; const CopyPlugin = require('copy-webpack-plugin'); +const { lchmod } = require('graceful-fs'); +const Terser = require('terser'); const withBrowserDefaults = require('../shared.webpack.config').browser; @@ -19,7 +21,22 @@ module.exports = withBrowserDefaults({ // @ts-ignore new CopyPlugin({ patterns: [ - { from: 'node_modules/typescript-web-server', to: 'typescript-web' } + { + from: 'node_modules/typescript-web-server', + to: 'typescript-web', + transform: (content, absoluteFrom) => { + if (absoluteFrom.endsWith('tsserver.js')) { + return Terser.minify(content.toString()).code; + } + return content; + }, + transformPath: (targetPath) => { + if (targetPath.endsWith('tsserver.js')) { + return targetPath.replace('tsserver.js', 'tsserver.web.js'); + } + return targetPath; + } + } ], }), ], diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index f7266e34480..595dbaea0c0 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -28,6 +28,7 @@ "@types/rimraf": "2.0.2", "@types/semver": "^5.5.0", "copy-webpack-plugin": "^6.0.3", + "terser": "^4.8.0", "typescript-web-server": "git://github.com/mjbvz/ts-server-web-build", "vscode": "^1.1.36" }, diff --git a/extensions/typescript-language-features/src/extension.browser.ts b/extensions/typescript-language-features/src/extension.browser.ts index 8ad9afe9346..f48f2b5071d 100644 --- a/extensions/typescript-language-features/src/extension.browser.ts +++ b/extensions/typescript-language-features/src/extension.browser.ts @@ -52,7 +52,7 @@ export function activate( const versionProvider = new StaticVersionProvider( new TypeScriptVersion( TypeScriptVersionSource.Bundled, - '/builtin-extension/typescript-language-features/dist/browser/typescript-web/tsserver.js', + '/builtin-extension/typescript-language-features/dist/browser/typescript-web/tsserver.web.js', API.v400)); const lazyClientHost = createLazyClientHost(context, false, { diff --git a/extensions/typescript-language-features/yarn.lock b/extensions/typescript-language-features/yarn.lock index ba0a9a2b12b..29b49a2e2e8 100644 --- a/extensions/typescript-language-features/yarn.lock +++ b/extensions/typescript-language-features/yarn.lock @@ -250,6 +250,11 @@ commander@2.15.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== +commander@^2.20.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== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1051,6 +1056,14 @@ source-map-support@^0.5.0: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -1097,6 +1110,15 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" +terser@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"