@mprt/rollup-plugin-incremental
v0.1.0
Published
Rollup plugin for incremental builds
Downloads
137
Readme
@mprt/rollup-plugin-incremental
A Rollup plugin which makes your (development) builds much faster, by recompiling only changed modules.
Requirements
This plugin requires at least [email protected]
Install
Using yarn or npm:
yarn add -D @mprt/rollup-plugin-incremental
npm install @mprt/rollup-plugin-incremental --save-dev
Usage
//some imports ...
import incremental from '@mprt/rollup-plugin-incremental'
export default {
input: 'src/index.js',
//ATTENTION: treeshaking must be disabled!
treeshake: false,
//ATTENTION: there is must be only one output!
output: {
dir: 'dist',
format: 'esm',
//ATTENTION: preserveModules must be enabled!
preserveModules: true,
preserveModulesRoot: 'src',
//ATTENTION: minifyInternalExports must be disabled!
minifyInternalExports: false,
},
plugins: [
//ATTENTION: plugin very likely should be first!
//BTW, this plugin is noop without watch mode
incremental(),
//another plugins...
//ATTENTION: this fixes issues with syntheticNamedExports in commonjs modules
//it should be last
incremental.fixSNE(),
],
}
And then...
rollup -cw
There is simple typical ts, react and mobx web app in example folder.
First build will take same time as usual, but second and next builds should be really fast - below a second.
Gotchas
- If changed file is not directly transpiles to module (ie: some babel config), then full rebuild triggered.
- If error occurs during incremental build, all changed modules will be rebuild again on next build
- Currently it works by replacing
input
option on incremental builds, so it cannot work with another plugins which works withinput
, i.e. multi-entry plugin
Inter-plugin API
This plugin exposes next API:
interface IncrementalAPI {
/** Is current (or last, if there is no current) build is incremental? */
readonly incrementalBuild: boolean
/** Ids of changed modules, which triggers incremental build. Null if build is not incremental */
readonly changedModules: null | Set<string>
}