vscode/extensions/microsoft-authentication/extension.webpack.config.js
Tyler James Leonhardt 4c96903608
Support brokering from Linux x64 and Intel Macs (#278689)
* Support Linux & Intel Macs

This grabs the native files directly since the ones at the root are not expected to work in our cases, namely Intel Mac where we use arm machines to build the x64 build.

* actually include macOS intel bits
2025-11-21 01:42:11 +00:00

70 lines
2.0 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
import withDefaults, { nodePlugins } from '../shared.webpack.config.mjs';
import CopyWebpackPlugin from 'copy-webpack-plugin';
import path from 'path';
const isWindows = process.platform === 'win32';
const isMacOS = process.platform === 'darwin';
const isLinux = !isWindows && !isMacOS;
const windowsArches = ['x64'];
const linuxArches = ['x64'];
let platformFolder;
switch (process.platform) {
case 'win32':
platformFolder = 'windows';
break;
case 'darwin':
platformFolder = 'macos';
break;
case 'linux':
platformFolder = 'linux';
break;
default:
throw new Error(`Unsupported platform: ${process.platform}`);
}
const arch = process.env.VSCODE_ARCH || process.arch;
console.log(`Building Microsoft Authentication Extension for ${process.platform} (${arch})`);
const plugins = [...nodePlugins(import.meta.dirname)];
if (
(isWindows && windowsArches.includes(arch)) ||
isMacOS ||
(isLinux && linuxArches.includes(arch))
) {
plugins.push(new CopyWebpackPlugin({
patterns: [
{
// The native files we need to ship with the extension
from: `**/dist/${platformFolder}/${arch}/(lib|)msal*.(node|dll|dylib|so)`,
to: '[name][ext]'
}
]
}));
}
export default withDefaults({
context: import.meta.dirname,
entry: {
extension: './src/extension.ts'
},
externals: {
// The @azure/msal-node-runtime package requires this native node module (.node).
// It is currently only included on Windows, but the package handles unsupported platforms
// gracefully.
'./msal-node-runtime': 'commonjs ./msal-node-runtime'
},
resolve: {
alias: {
'keytar': path.resolve(import.meta.dirname, 'packageMocks', 'keytar', 'index.js')
}
},
plugins
});