# webpack-config-github
**Repository Path**: mirrors_github/webpack-config-github
## Basic Information
- **Project Name**: webpack-config-github
- **Description**: An opinionated webpack config for GitHub apps.
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-08
- **Last Updated**: 2026-02-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# webpack-config-github
An opinionated [webpack](https://webpack.js.org/) config for GitHub apps.
## Features
* Single and multiple HTML entry points
* Common chunks bundle when using multiple entry points
* ES6 transpilation via Babel
* Source Maps
* PostCSS
* HTML5 History routing (in development)
* GraphQL proxy (in development)
* [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
* HTML and JS minification (in production)
* Static gzip compression (in production)
* Docker nginx deployment
## Deployment
Currently targets the [Docker nginx](https://hub.docker.com/_/nginx/) deployment environment. Improved gh-pages
deployment is planned in the future.
## Basic Setup
```sh
$ npm install --save-dev webpack-dev-server
$ npm install --save-dev webpack-config-github
```
**webpack.config.js**
```js
module.exports = require('webpack-config-github')
```
**src/index.js**
```js
document.body.innerHTML = '
Hello, World!
'
```
**Start development server**
```sh
$ webpack-dev-server --open
```
## Directory Structure
```
my-app
├── package.json
├── Dockerfile
├── config
│ └── nginx.conf
├── .graphqlconfig
├── data
│ └── schema.graphql
├── node_modules
├── public
│ └── favicon.ico
│ └── robots.txt
└── src
└── index.js
└── components
└── App.js
└── Layout.js
└── Sidebar.js
```
**Dockerfile**
The currently suggested deployment target is the [Docker nginx image](https://hub.docker.com/_/nginx/).
See the [example `Dockerfile`](/examples/docker/Dockerfile).
**config/nginx.conf**
This [example `nginx.conf`](/examples/docker/config/nginx.conf) aligns the static serving with the `webpack-dev-server`.
**.graphqlconfig**
Specifies the location of the GraphQL schema and target endpoints.
Here is an example configuration file when targeting the GitHub GraphQL API.
```json
{
"schemaPath": "data/schema.graphql",
"extensions": {
"endpoints": {
"production": {
"url": "https://api.github.com/graphql",
"headers": {
"Authorization": "Bearer ${env:API_TOKEN}"
}
}
}
}
}
```
See the [GraphQL Configuration Format](https://github.com/graphcool/graphql-config/blob/master/specification.md) for
more information.
**data/schema.graphql**
When using Relay, a copy of the GraphQL schema should be checked in at this location. Checking the schema in ensures
linting and build tools can be consistently ran offline and in CI.
**public/**
The `public/` directory contains static assets that will be exposed as is. This is useful for well known static assets
that need to be served at a specific root path like `favicon.ico` and `robots.txt`.
**src/**
Contains source JavaScript, CSS and other assets that will be compiled via webpack.
**src/index.js**
Is the main entry point for bootstrapping the application.
When using React, this file should render the root application component.
```js
import React from 'react'
import ReactDOM from 'react-dom'
import App from './components/App'
ReactDOM.render(, document.getElementById('root'))
```
## Roadmap
* Add Subresource Integrity support
* Support CSS Modules
* Support hot reloading
* Add gh-pages deployment pattern
## See Also
Many of the directory conventions used here are inspired from
[create-react-app](https://github.com/facebookincubator/create-react-app).