a development server for rollup
compared to other plugins, this plugin:
- uses Fastify to provide the server and implement features
- while this means there are dependencies, it should also be trivial to add/modify to suit individual needs (see
extend
option below!)
- while this means there are dependencies, it should also be trivial to add/modify to suit individual needs (see
- has additional features that may be useful
- detailed logging of requests (see screenshot)
- full proxy support
- support for a basepath in the URL
- will automatically turn itself off when watch mode isn't enabled
npm install --save-dev rollup-plugin-dev
pnpm add --save-dev rollup-plugin-dev
import dev from 'rollup-plugin-dev'
export default {
plugins: [
dev()
]
}
directories to serve static files from
example: dev('dist')
example: dev({ dirs: ['dist', 'lib'] })
default: __dirname
when no other options are needed, a shortcut is available to specify one folder
prefix all served files with a base path - e.g. serve from /static
instead of /
example: dev({ basePath: '/static' })
default: /
will silence all log messages, as well as the warning printed when rollup is started outside of watch mode
example: dev({ silent: true })
default: false
proxy a path to an upstream service
example: dev({ proxy: [{ from: '/api', to: 'http://localhost:9000/resources' }] })
example: dev({ proxy: [{ from: '/api', to: 'http://localhost:9000/resources', opts: { preHandler: myPreHandler } }] })
default: undefined
opts
can contain any valid options for fastify-http-proxy
serve a fallback page (for single-page apps)
example: dev({ spa: true }) // will serve index.html
example: dev({ spa: 'path/to/fallback.html' })
default: false
if a path is provided, it should be relative to one of the dirs
being served
the fallback file must reside in one of the dirs
being served
the port the server should listen on
example: dev({ port: 3000 })
default: 8080
the server will automatically listen on the first available port after 8080 if the specified/default port is taken
the host the server should listen on
example: dev({ host: '0.0.0.0' })
default: localhost
force the server to start, even if rollup isn't in watch mode
example: dev({ force: true })
default: false
the path to resolve any relative dirs
from
example: dev({ dirname: '/Users/MyUser/Development/my-project' })
default: undefined
this is generally not needed if one is running Rollup from package.json's scripts
modify options the Fastify server is booted with - accepts any valid Fastify server attribute
example: dev({ server: { connectionTimeout: 3000 } })
default: see config.js
and the serverDefaults
export
here be dragons - because modifying these options can wildly change server behavior, this is supported on an 'as is' basis only
enables full customization of the dev server, expects a Fastify plugin
example: dev({ extend: fp(async (server) => server.register(myPlugin)) })
default: undefined
this is a callback that runs after the server has started
example: dev({ onListen(server) { server.log.info('Hello world') }
default: undefined