Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/streaver/redhead
Dynamically setup headers and redirects for you static deployments
https://github.com/streaver/redhead
deployment dynamic headers netlify redirects static
Last synced: 3 months ago
JSON representation
Dynamically setup headers and redirects for you static deployments
- Host: GitHub
- URL: https://github.com/streaver/redhead
- Owner: streaver
- License: mit
- Created: 2019-02-03T18:19:41.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-08-05T09:56:16.000Z (over 5 years ago)
- Last Synced: 2024-11-06T06:49:54.424Z (3 months ago)
- Topics: deployment, dynamic, headers, netlify, redirects, static
- Language: JavaScript
- Size: 363 KB
- Stars: 6
- Watchers: 4
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
RedHead
===============
Dynamically setup headers and redirects for you static deployments.
WARNING: This is still in active development, make sure you lock your versions!
## Motivation
When deploying our [website](https://www.streaver.com) we realized we wanted to have a very subtle difference in the redirects if the environment was `staging` or `production`, we could have gone for the ENV variable option, but the [netlify.toml](https://www.netlify.com/docs/netlify-toml-reference/) file does not allow environment variable interpolation, so you end up having to use a `sed` command (or multiple) to do the replacement, something like:
```sh-session
sed -i s/REDIRECT_1_PLACEHOLDER/${REDIRECT_1_VALUE}/g netlify.toml
sed -i s/REDIRECT_2_PLACEHOLDER/${REDIRECT_2_VALUE}/g netlify.toml
yarn build
```After that, we noticed that many static deployment sites have similar limitations, that lead us to creating [RedHead](https://github.com/streaver/redhead), and now you can simply do:
```sh-session
redhead build && yarn build
```## Table of content
* [Installation](#installation)
* [Supported Platforms](#supported-platforms)
* [Usage](#usage)
* [Commands](#commands)
* [init](#redhead-init)
* [build](#redhead-build)
* [help](#redhead-help-command)
* [Examples](#examples)
* [Contributing](#contributing)
* [Credits](#credits)## Installation
```bash
yarn global add redhead
```Or you can add it to your `package.json`
```bash
yarn add redhead --dev
``````sh-session
$ npm install -g redhead
$ redhead COMMAND
running command...
$ redhead (-v|--version|version)
redhead/0.4.0 darwin-x64 node-v11.9.0
$ redhead --help [COMMAND]
USAGE
$ redhead COMMAND
...
```## Supported Platforms
We currently two static deployments, but we plan on adding more (contributions are welcome):
### Currently supported
* [Netlify](https://www.netlify.com/)
* [Firebase Hosting](https://firebase.google.com/docs/hosting/)### Plan on supporting
* [Heroku](https://elements.heroku.com/buildpacks/heroku/heroku-buildpack-static)
## Commands
* [`redhead build`](#redhead-build)
* [`redhead help [COMMAND]`](#redhead-help-command)
* [`redhead init`](#redhead-init)## `redhead build`
Generate the platform specific files based on the configuration
```
USAGE
$ redhead buildOPTIONS
-o, --output=output [default: .] Folder where the generated files should be saved.
-p, --platform=netlify|firebase [default: netlify] The target platform for the generated files
```_See code: [src/commands/build.js](https://github.com/streaver/redhead/blob/v0.4.0/src/commands/build.js)_
## `redhead help [COMMAND]`
display help for redhead
```
USAGE
$ redhead help [COMMAND]ARGUMENTS
COMMAND command to show help forOPTIONS
--all see all commands in CLI
```_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v2.1.6/src/commands/help.ts)_
## `redhead init`
Initialize the required files
```
USAGE
$ redhead initOPTIONS
-h, --no-headers Whether or not to handle headers with redhead
-r, --no-redirects Whether or not to handle redirects with redheadDESCRIPTION
Generates files for handling your headers and/or redirects configuration.
```_See code: [src/commands/init.js](https://github.com/streaver/redhead/blob/v0.4.0/src/commands/init.js)_
## Examples
### Different config based on environment
For example, if you want to have different headers based on the environment you just need to customize the `headers.js` file for your needs and make sure you ENV variables are set for each case, for Netlify this could be done via the `netlify.toml` file.
```js
// .redhead/headers.jsconst headers = [];
if (process.env.NODE_ENV === 'production') {
headers.push({
path: '/cool',
headers: [
'X-Cool: 123'
],
});
}module.exports = headers;
```
### Redirecting one path to the latest post
Let's say you have a blog and want to have a `/latest` path that always takes users to the latest post that has been published, this could be easily achieved with RedHead.
```js
// .redhead/redirects.js// use your DB library here;
const db = require('db').config(process.env.CONNECTION_URL);
const lastPost = db.posts.last();module.exports = [{
from: '/latest',
to: `${lastPost.permalink}`,
status: '302',
options: '',
}];```
## Contributing
All contributions or issue reporting are welcomed. If you are filing a bug please include information to help debug it!
If you plan to contribute, please make sure you test the code.
## Credits
-