blob: 1f7d81e289259f5e6ad9cc2da1c9e7a9d761fd67 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const webpack = require('webpack');
const path = require('path');
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
const mf = require('@angular-architects/module-federation/webpack');
const share = mf.share;
const sharedMappings = new mf.SharedMappings();
sharedMappings.register(path.join(__dirname, 'tsconfig.json'), [
/* mapped paths to share */
]);
module.exports = {
module: {
rules: [{ test: /\.html$/, loader: 'raw-loader' }],
},
experiments: {
outputModule: true,
},
resolve: {
alias: {
npm: path.join(__dirname, 'node_modules'),
legacy: path.join(__dirname, 'src', 'assets', 'lib'),
},
fallback: {
assert: false,
stream: require.resolve('stream-browserify'),
},
},
plugins: [
new webpack.ProvidePlugin({
process: 'process/browser',
}),
new ModuleFederationPlugin({
library: { type: 'module' },
name: 'sp',
filename: 'remoteEntry.js',
exposes: {},
shared: share({
'@angular/core': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/common': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/common/http': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/forms': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/router': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/cdk': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/cdk/overlay': {
singleton: true,
strictVersion: false,
requiredVersion: 'auto',
eager: true,
},
'@angular/cdk/portal': {
singleton: true,
strictVersion: false,
requiredVersion: 'auto',
eager: true,
},
'@angular/material': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/material/core': {
singleton: true,
strictVersion: false,
requiredVersion: 'auto',
eager: true,
},
'@angular/material/menu': {
singleton: true,
strictVersion: false,
requiredVersion: 'auto',
eager: true,
},
'@angular/material/tooltip': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/material/dialog': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/material/select': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@angular/material/form-field': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
eager: true,
},
'@streampipes/shared-ui': {
singleton: true,
strictVersion: true,
eager: true,
},
'@streampipes/platform-services': {
singleton: true,
strictVersion: true,
eager: true,
},
'ngx-echarts': {
singleton: true,
strictVersion: true,
eager: true,
},
'echarts': {
singleton: true,
strictVersion: true,
eager: true,
},
...sharedMappings.getDescriptors(),
}),
}),
sharedMappings.getPlugin(),
],
};