1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| const { ModuleFederationPlugin } = require('webpack').container const { VueLoaderPlugin } = require('vue-loader') const HtmlWebpackPlugin = require('html-webpack-plugin') const path = require('path')
module.exports = { mode: 'development', entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), publicPath: 'http://localhost:3001/', clean: true }, devServer: { port: 3001, hot: true, headers: { 'Access-Control-Allow-Origin': '*' } }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }, { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] }, plugins: [ new VueLoaderPlugin(), new HtmlWebpackPlugin({ template: './public/index.html' }), new ModuleFederationPlugin({ name: 'remoteApp1', filename: 'remoteEntry.js', exposes: { './Button': './src/components/Button.vue', './Header': './src/components/Header.vue', './utils': './src/utils/index.js', './store': './src/store/index.js' }, shared: { vue: { singleton: true, requiredVersion: '^3.3.0', eager: false }, 'vue-router': { singleton: true, requiredVersion: '^4.2.0' }, axios: { singleton: true, requiredVersion: '^1.5.0' } } }) ], resolve: { extensions: ['.js', '.vue', '.json'], alias: { '@': path.resolve(__dirname, 'src'), 'vue': '@vue/runtime-dom' } } }
|