micro-front-end
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

74 lines
1.9 KiB

const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin')
const mf = require('@angular-architects/module-federation/webpack')
const path = require('path')
const share = mf.share
const sharedMappings = new mf.SharedMappings()
sharedMappings.register(path.join(__dirname, 'tsconfig.json'), [])
module.exports = {
output: {
uniqueName: 'shell',
publicPath: 'http://localhost:3000/',
},
optimization: {
runtimeChunk: false,
},
resolve: {
alias: {
...sharedMappings.getAliases(),
},
},
plugins: [
new ModuleFederationPlugin({
remotes: {
mfe1: 'mfe1@http://localhost:3001/remoteEntry.js',
mfe2: 'mfe2@http://localhost:3002/remoteEntry.js',
mfe3: 'mfe3@http://localhost:3003/remoteEntry.js',
},
shared: share({
'assets/img': { singleton: true },
'@angular/core': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
},
'@angular/common': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
},
'@angular/common/http': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
},
'@angular/router': {
singleton: true,
strictVersion: true,
requiredVersion: 'auto',
},
'my-shared': {
singleton: true,
strictVersion: true,
import: 'my-shared',
requiredVersion: '*',
},
'dynamic-core': {
singleton: true,
strictVersion: true,
import: 'dynamic-core',
requiredVersion: '*',
},
'dynamic-components': {
singleton: true,
strictVersion: true,
import: 'dynamic-components',
requiredVersion: '*',
},
...sharedMappings.getDescriptors(),
}),
}),
sharedMappings.getPlugin(),
],
}