vscode/extensions/typescript-language-features/extension-browser.webpack.config.js
Matt Bierner 4d59b19b73
Enable project wide JS/TS intellisense on web by default (#182812)
Fixes #170920

Enables this feature by default but also disables semantic errors. This is needed to avoid lots of annoying false positive errors for external modules. We plan to remove this limitation once type downloading support is enabled
2023-05-18 00:06:00 +02:00

85 lines
2.1 KiB
JavaScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
//@ts-check
'use strict';
const CopyPlugin = require('copy-webpack-plugin');
const path = require('path');
const defaultConfig = require('../shared.webpack.config');
const withBrowserDefaults = defaultConfig.browser;
const browserPlugins = defaultConfig.browserPlugins;
const languages = [
'zh-tw',
'cs',
'de',
'es',
'fr',
'it',
'ja',
'ko',
'pl',
'pt-br',
'ru',
'tr',
'zh-cn',
];
module.exports = [withBrowserDefaults({
context: __dirname,
entry: {
extension: './src/extension.browser.ts',
},
plugins: [
...browserPlugins(__dirname), // add plugins, don't replace inherited
// @ts-ignore
new CopyPlugin({
patterns: [
{
from: '../node_modules/typescript/lib/*.d.ts',
to: 'typescript/[name][ext]',
},
{
from: '../node_modules/typescript/lib/typesMap.json',
to: 'typescript/'
},
...languages.map(lang => ({
from: `../node_modules/typescript/lib/${lang}/**/*`,
to: (pathData) => {
const normalizedFileName = pathData.absoluteFilename.replace(/[\\/]/g, '/');
const match = normalizedFileName.match(/typescript\/lib\/(.*)/);
if (match) {
return `typescript/${match[1]}`;
}
console.log(`Did not find typescript/lib in ${normalizedFileName}`);
return 'typescript/';
}
}))
],
}),
],
}), withBrowserDefaults({
context: __dirname,
entry: {
'typescript/tsserver.web': './web/webServer.ts'
},
module: {
exprContextCritical: false,
},
ignoreWarnings: [/Critical dependency: the request of a dependency is an expression/],
output: {
// all output goes into `dist`.
// packaging depends on that and this must always be like it
filename: '[name].js',
path: path.join(__dirname, 'dist', 'browser'),
libraryTarget: undefined,
},
externals: {
'perf_hooks': 'commonjs perf_hooks',
}
})];