This is a webpack plugin that inline your manifest.js with a script tag to save http request. Cause webpack's runtime always change between every build, it's better to split the runtime code out for long-term caching.
Install the plugin with npm:
$ npm i inline-manifest-webpack-plugin -D
This plugin need to work with webpack v4 (for webpack v3 and below, pls use version 3) and HtmlWebpackPlugin v3 :
Step1: split out the runtime code
// the default name is "runtime"
optimization: {
runtimeChunk: 'single'
}
// or specify another name
optimization: {
runtimeChunk: {
name: 'another name'
}
}
Step2: add plugins:
// this plugin need to put after HtmlWebpackPlugin
[
new HtmlWebpackPlugin(),
new InlineManifestWebpackPlugin()
]
or
[
new HtmlWebpackPlugin(),
// if you changed the runtimeChunk's name, you need to sync it here
new InlineManifestWebpackPlugin('another name')
]
Done! This will replace the external script with inline code.
One more thing
if you use inject: false
in your HtmlWebpackPlugin
, you can access the runtime code like this:
<%= htmlWebpackPlugin.files.runtime %>
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script src="<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>