@omniblack/rollup-plugin-html-template v0.1.1
@omniblack/rollup-plugin-html-template
🍣 A Rollup plugin which creates HTML files to serve Rollup bundles.
Please see Supported Output Formats for
information about using this plugin with output formats other than
esm
(es
), iife
, and umd
.
Requirements
This plugin requires an LTS Node version (v12.0.0+) and Rollup v1.20.0+.
At the moment this module requires a Node version greater than or equal to 14.
We are using the native EcmaScript module implementation.
Once Node 16 enters long term support we will resume the normal support of
all Node LTS versions.
Install
Using pnpm:
pnpm install --save-dev @omniblack/rollup-plugin-html
Using npm:
npm install --save-dev @omniblack/rollup-plugin-html-template
Using yarn:
yarn add --dev @omniblack/rollup-plugin-html-template
Usage
Create a rollup.config.js
configuration file and import the plugin:
import html from '@omniblack/rollup-plugin-html-template';
export default {
input: 'src/index.js',
output: {
dir: 'output',
format: 'esm'
},
plugins: [
html({
templatePath: 'src/template.html',
}),
]
};
Then call rollup
either via the CLI or the API.
Once run successfully, an HTML file should be written to the bundle output destination.
Options
attributes
Type: Object
Default: { html: { lang: 'en' }, link: null, script: null }
Specifies additional attributes for html
, link
, and script
elements. For
each property, provide an object with key-value pairs that represent an HTML
element attribute name and value. By default, the html
element is rendered
with an attribute of lang="en"
.
Note: If using the es
/ esm
output format, { type: 'module'}
is
automatically added to attributes.script
.
fileName
Type: String
Default: 'index.html' || null
The path to write the output html to. If name
is provided then the default
is ignored and the output html will use assetFileNames
.
name
Type: String
Default: null
The name rollup will use for the [name]
substitutions with assetFileNames
.
This is not used if fileName
is provided.
meta
Type: Array[...object]
Default: [{ charset: 'utf-8' }]
Specifies attributes used to create <meta>
elements. For each array item,
provide an object with key-value pairs that represent <meta>
element
attribute names and values.
Specifies the name of the HTML to emit.
publicPath
Type: String
Default: ''
Specifies a path to prepend to all bundle assets (files) in the HTML output.
title
Type: String
Default: 'Rollup Bundle'
Specifies the HTML document title. This title will not be used if the template file provides a title.
templatePath
Type: path
Required: true
A path, relative to the current working directory, to the ejs template file to use.
Supported Output Formats
By default, this plugin supports the esm
(es
), iife
, and umd
output formats, as those are most commonly used as browser bundles.
Other formats can be used, but will require using the template
option to specify a custom template function which renders the unique
requirements of other formats.
amd
Will likely require use of RequireJS semantics, which allows only for a single
entry <script>
tag. If more entry chunks are emitted, these need to be loaded
via a proxy file. RequireJS would also need to be a dependency and added to
the build.
system
Would require a separate <script>
tag first that adds the s.js
minimal
loader. Loading modules might then resemble:
<script>System.import('./batman.js')</script>
.
Attribution
This plugin was inspired by and is based upon mini-html-webpack-plugin by Juho Vepsäläinen and Artem Sapegin, with permission.