Convert your CRA project into a single-spa application without ejecting and losing update support of react-scripts
This plugins depends on CRACO so make sure to follow the installation instructions before installing and setting up this plugin. https://github.com/gsoft-inc/craco/blob/master/packages/craco/README.md#installation
npm install craco-plugin-single-spa-app-aot --save-dev
- Open the
craco.config.js
file and apply the following changes:
const SingleSpaAppcracoPlugin = require('craco-plugin-single-spa-app-aot');
const singleSpaAppPlugin = {
plugin: SingleSpaAppcracoPlugin,
options: {
orgName: "my-org",
projectName: "my-app",
entry: "src/single-spa-index.tsx", //defaults to src/index.js,
orgPackagesAsExternal: false, // defaults to false. marks packages that has @my-org prefix as external so they are not included in the bundle
reactPackagesAsExternal: true, // defaults to true. marks react and react-dom as external so they are not included in the bundle
minimize: false, // defaults to false, sets optimization.minimize value
outputFilename: "single-spa-build.js" // defaults to the values set for the "orgName" and "projectName" properties, in this case "my-org-my-app.js"
},
}
// Keep any other configuration you are exporting from CRACO and add the plugin to the plugins array
module.exports = {
plugins: [singleSpaAppPlugin]
}
- Run
npm run craco:build
to generate your microfrontend app bundle. The output will be located under build folder and named asmy-org-my-app.js
or using the name defined inoutputFilename
option.