@capsulajs/capsula-hub
v0.0.9
Published
[![Build Status](https://travis-ci.com/capsulajs/capsulahub.svg?branch=develop)](https://travis-ci.com/capsulajs/capsulahub)
Downloads
81
Readme
Capsula Hub
Description
An awesome tool to develop and test your micro-frontend services !
Install
In your project, run $ npm install --save-dev @capsulajs/capsula-hub
or $ yarn add -D @capsulajs/capsula-hub
.
If you want to use capsula-hub
command directly, you can install it globally.
Usage
capsula-hub run [options]
Options:
-l, --local <path-to-file> Run with local configuration file
-p, --port <port> Run on specified port (default 55555)
Configuration
The configuration should be a js
file that exports an object
which
match this API.
Example: config.js
module.exports = {
name: 'my-app',
services: [
{
serviceName: 'myServiceA',
path: 'https://my-cdn/my-service-a',
definition: {
serviceName: 'myServiceA',
methods: {
myMethod1: { asyncModel: 'RequestResponse' },
myMethod2$: { asyncModel: 'RequestStream' },
}
},
config: {}
},
{
serviceName: 'myServiceB',
path: 'https://my-cdn/my-service-b',
definition: {
serviceName: 'myServiceB',
methods: {
myMethod1: { asyncModel: 'RequestResponse' },
myMethod2: { asyncModel: 'RequestResponse' },
}
},
config: {}
},
],
components: {
layouts: {
grid: {
componentName: 'my-grid',
path: 'http://my-cdn/components/Grid.js',
config: { title: 'Base Grid' },
},
},
items: {
myItem: {
componentName: 'my-item',
path: 'http://my-cdn/components/myItem.js',
config: { title: 'Base Item' },
},
}
}
};
Develop your extension
An extension is a service or a web component that is loaded by CapsulaHub. The extension should look like this:
import { Workspace } from '@capsulajs/capsulahub-core-workspace';
export default (workspace: Workspace, config: object): Promise<void> => {
// your code here
};
workspace
and config
are injected by the application in the extension.
workspace
is matching this API
and could be use in particular to allow the service to register itself.
config
contains the configuration for this specific extension that you passed in the configuration file
(e.g: configuration_file.services.['myExtension'].config
for myExtension service).
For more details, take a look at this example file.
License
CapsulaHub is released under MIT License.