# 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).