replace-url-html-webpack-plugin
v2.0.1
Published
Updates the URLs for existing script (JS) and link (CSS) elements in an HTML template with URLs generated by Webpack
Downloads
87
Maintainers
Readme
URL replacement for HTML Webpack Plugin
This is an extension plugin for the webpack plugin html-webpack-plugin - a plugin that simplifies the creation of HTML files to serve your webpack bundles.
Typically, html-webpack-plugin injects <script>
and <link>
elements into generated HTML.
When used with a template, html-webpack-plugin will still inject new elements regardless of whether or not elements already exist for the assets.
This plugin will automatically update the URLs for existing <script>
and <link>
elements in an HTML template with URLs generated by Webpack.
It identifies existing elements by comparing their URLs with the generated output file name from Webpack. See Example section.
Webpack doesn't handle CSS resources natively. However, by using some of the following plugin combinations you can make them accessible to html-webpack-plugin:
- copy-webpack-plugin (npm) (github), html-webpack-include-assets-plugin (npm) (github)
- extract-text-webpack-plugin (npm) (github) (warning: untested)
Environment
- node >= 6.11.5
Peer Dependencies
Installation
Install the plugin as a development dependency using npm:
$ npm install replace-url-html-webpack-plugin --save-dev
Basic Usage
The plugin has no configuration. Simply, add the plugin to your webpack config as follows:
{
plugins: [
new HtmlWebpackPlugin(),
new ReplaceUrlHtmlWebpackPlugin()
]
}
The order is important - the plugin must come after HtmlWebpackPlugin.
Example
Consider the following HTML template:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Example</title>
<link type="text/css" rel="stylesheet" href="css/index.css" />
<script async="async" src="js/bundle.js"></script>
</head>
<body>
...
</body>
</html>
If webpack is configured to generate the bundle with a hash included, then the URLs for both <script>
and <link>
will be replaced:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Example</title>
<link type="text/css" rel="stylesheet" href="css/index.abcdef0123456789.css" />
<script async="async" src="js/bundle.abcdef0123456789.js"></script>
</head>
<body>
...
</body>
</html>