diff --git a/extensions/mangle-loader.js b/extensions/mangle-loader.js index 0bd1ad81376..6c110396d47 100644 --- a/extensions/mangle-loader.js +++ b/extensions/mangle-loader.js @@ -7,17 +7,26 @@ const webpack = require('webpack'); const { Mangler } = require('../build/lib/mangleTypeScript'); -let map; +/** + * Map of project paths to mangled file contents + * + * @type {Map>} + */ +const mangleMap = new Map(); + /** * @param {string} projectPath */ function getMangledFileContents(projectPath) { - if (!map) { + let entry = mangleMap.get(projectPath); + if (!entry) { + console.log(`Mangling ${projectPath}`); const ts2tsMangler = new Mangler(projectPath, console.log); - map = ts2tsMangler.computeNewFileContents(); + entry = ts2tsMangler.computeNewFileContents(); + mangleMap.set(projectPath, entry); } - return map; + return entry; } /** diff --git a/extensions/shared.webpack.config.js b/extensions/shared.webpack.config.js index 6b70079224d..1ad14eca57d 100644 --- a/extensions/shared.webpack.config.js +++ b/extensions/shared.webpack.config.js @@ -15,6 +15,13 @@ const CopyWebpackPlugin = require('copy-webpack-plugin'); const { NLSBundlePlugin } = require('vscode-nls-dev/lib/webpack-bundler'); const { DefinePlugin, optimize } = require('webpack'); +const tsLoaderOptions = { + compilerOptions: { + 'sourceMap': true, + }, + onlyCompileBundledFiles: true, +}; + function withNodeDefaults(/**@type WebpackConfig*/extConfig) { /** @type WebpackConfig */ const defaultConfig = { @@ -42,11 +49,7 @@ function withNodeDefaults(/**@type WebpackConfig*/extConfig) { // configure TypeScript loader: // * enable sources maps for end-to-end source maps loader: 'ts-loader', - options: { - compilerOptions: { - 'sourceMap': true, - } - } + options: tsLoaderOptions }, { loader: path.resolve(__dirname, 'mangle-loader.js'), options: { @@ -125,11 +128,8 @@ function withBrowserDefaults(/**@type WebpackConfig*/extConfig, /** @type Additi // * enable sources maps for end-to-end source maps loader: 'ts-loader', options: { - compilerOptions: { - 'sourceMap': true, - }, + ...tsLoaderOptions, ...(additionalOptions ? {} : { configFile: additionalOptions.configFile }), - onlyCompileBundledFiles: true, } }, {