mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-29 03:44:25 -05:00
41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
|
Webpack
|
||
|
===
|
||
|
|
||
|
Webpack is a JavaScript build system for frontend code. You can find out all
|
||
|
about it on [the webpack website](https://webpack.js.org/).
|
||
|
|
||
|
Here's how we're using it:
|
||
|
|
||
|
## `webpack.common.js`
|
||
|
This file contains all common definitions for chunks and plugins that are needed by the whole app.
|
||
|
|
||
|
The various entrypoints under the `entry` key define groups of files (npm packages or .css/.js files directly from this project) that need to be included together to be useful.
|
||
|
The `index` group for example bundles all javascript files and libraries used for the note editor.
|
||
|
|
||
|
Entrypoints are referenced in the `plugins` section.
|
||
|
The `HtmlWebpackPlugin` uses templates in `public/views/includes` to include the path to the generated resources in new templates under `public/views/build`. These templates are then used by the backend to serve HTML to the browser.
|
||
|
|
||
|
|
||
|
**TODO:** Document which entry points are used for what.
|
||
|
|
||
|
## `webpack.htmlexport.js`
|
||
|
Separate config for the "save as html" feature.
|
||
|
Packs all CSS from `public/js/htmlExport.js` to `build/html.min.css`.
|
||
|
This file is then downloaded by client-side JS and used to create the HTML.
|
||
|
See `exportToHTML()` in `public/js/extra.js`.
|
||
|
|
||
|
|
||
|
## `webpack.dev.js`
|
||
|
The development config uses both common configs, enables development mode and enables "cheap" source maps (lines only).
|
||
|
If you need more detailed source maps while developing, you might want to use the `source-maps` option.
|
||
|
See https://webpack.js.org/configuration/devtool/ for details.
|
||
|
|
||
|
## `webpack.prod.js`
|
||
|
The production config uses both common configs and enables production mode.
|
||
|
This automatically enables various optimizations (e.g. UglifyJS). See https://webpack.js.org/concepts/mode/ for details.
|
||
|
|
||
|
For the global app config, the name of the emitted chunks is changed to include the content hash.
|
||
|
See https://webpack.js.org/guides/caching/ on why this is a good idea.
|
||
|
|
||
|
For the HTML export config, CSS minification is enabled.
|