https://github.com/americanexpress/one-app-dev-cdn
โจ Load remote modules for local development
https://github.com/americanexpress/one-app-dev-cdn
one-app
Last synced: 6 months ago
JSON representation
โจ Load remote modules for local development
- Host: GitHub
- URL: https://github.com/americanexpress/one-app-dev-cdn
- Owner: americanexpress
- License: apache-2.0
- Created: 2019-11-22T17:57:50.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2024-04-11T14:19:03.000Z (over 1 year ago)
- Last Synced: 2024-04-14T11:30:32.823Z (over 1 year ago)
- Topics: one-app
- Language: JavaScript
- Homepage:
- Size: 2.36 MB
- Stars: 7
- Watchers: 18
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
[One App is now InnerSource](https://github.com/americanexpress/one-app/issues/1393)
![]()
[](https://www.npmjs.com/package/@americanexpress/one-app-dev-cdn)
> Building a local module and you want to load it? This supports loading of your remote and local modules together for local development.
## ๐ Table of Contents
* [Features](#-features)
* [Usage](#-usage)
* [API](#-api)
* [Contributing](#-contributing)## โจ Features
* Loads and serves local module map.
* Loads, serves, and merges remote module map with local module map.
* Acts as a proxy to modules defined in the remote module map.## ๐คนโ Usage
### Installation
```bash
npm i @americanexpress/one-app-dev-cdn -D
```Look at the different `options` you can use under the [API](#API) section.
```js
import oneAppDevCdn from '@americanexpress/one-app-dev-cdn';const app = express();
app.use('/static', oneAppDevCdn({
localDevPublicPath: path.join(__dirname, '../../static'),
remoteModuleMapUrl: 'https://my-domain.com/map/module-map.json',
useLocalModules: true,
appPort: 3000,
}));
```## ๐๏ธ API
### `oneAppDevCdn( [options] )`
Loads the local module map and remote module map for local development.
#### options
Type: `object`
provide the options below to load module map, with `localDevPublicPath` and `appPort` being required parameters.
##### `localDevPublicPath`
Type: `string`
location on the local filesystem where `module-map.json` and `modules` (created by One App's `serve-module`) are. **REQUIRED**
##### `appPort`
Type: `number`
Port on which One App is running. Used in order to set up CORS headers. (i.e. `3000`) **REQUIRED**
##### `remoteModuleMapUrl`
Type: `string`
location where the remote module map is located (i.e. `https://my-domain.com/map/module-map.json`), if this is not provided the local module map will be loaded.
##### `useLocalModules`
Type: `boolean`
Default: `false`
Whether to use modules from `localDevPublicPath`. Passed as `true` or `false`, defaults to `false`.**Note**: Either `remoteModuleMapUrl` OR `useLocalModules` is required. If both are provided then
the remote module map will be merged with modules from `localDevPublicPath` with the local modules
taking precedence.##### `useHost`
Type: `boolean`
Default: `false`
Whether to use `req.headers.host` or `localhost`. Passed as `true` or `false`, defaults to `false` (`localhost`).**Note**: The `req.headers.host` is useful if your tests use the `one-app-dev-cdn` on a CI environment or containers that
that require it to be accessible in the network by other containers or servers.### Proxy Support
`one-app-dev-cdn` respects the `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` environment variables.
Make use of these environment variables if the remote module map or modules you want to use are
inaccessible without the use of a proxy server.## ๐ Contributing
We welcome Your interest in the American Express Open Source Community on Github.
Any Contributor to any Open Source Project managed by the American Express Open
Source Community must accept and sign an Agreement indicating agreement to the
terms below. Except for the rights granted in this Agreement to American Express
and to recipients of software distributed by American Express, You reserve all
right, title, and interest, if any, in and to Your Contributions. Please [fill
out the Agreement](https://cla-assistant.io/americanexpress/one-app-dev-cdn).Please feel free to open pull requests and see [CONTRIBUTING.md](./CONTRIBUTING.md) to learn how to get started contributing.
## ๐๏ธ License
Any contributions made under this project will be governed by the [Apache License
2.0](https://github.com/americanexpress/one-app-dev-cdn/blob/main/LICENSE.txt).## ๐ฃ๏ธ Code of Conduct
This project adheres to the [American Express Community Guidelines](./CODE_OF_CONDUCT.md).
By participating, you are expected to honor these guidelines.