pats / microservices-webpack-plugin

Prevent loading scripts which are already loaded in another micro-app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

microservices-webpack-plugin

This plugin solves problem with repeating packages from node_modules in microservices' chunks. It uses unpkg to load npm packages.

Installation

npm install -D microservices-webpack-plugin

Let's try with react. Modify your microservice's webpack.config:

  • Add to externals react: 'react'
  • output.libraryTarget must be amd
  • add to plugins
new MicroservicesWebpackPlugin([
  { name: 'react', path: `umd/react.production.min.js` },
])

Scenario

You're using microservices with solutions such as Tailor.

You have many microservices which relays on the same version of some node_modules dependency.

You wonder how to don't load some node_modules dependency in every chunk.

Problem

Tailor sends client application to browser via headers (more specifically via Link). And later it uses require.js to execute in browser. It expects that some node_modules dependency is inside client application or was loaded earlier. To solve that you could:

add required libraries to tailor's template.

create microservice which should gather common libraries into its chunk.

It's not the best approach because it makes invisible relation between microservices

  • write in some node_modules dependency into Header.Link

Your chunk has required dependency some node_modules dependency and first of all it will try load some node_modules dependency from tailor's host

Inspiration Webpack CDN Plugin

About

Prevent loading scripts which are already loaded in another micro-app


Languages

Language:JavaScript 100.0%