@hobiri/rollup-preset
v1.0.1
Published
Tiny rollup preset for typescript libraries
Downloads
1
Readme
Rollup Preset
A tiny preset for rollup to bundle our libraries.
Features out of the box:
- Automatic TypeScript
- Minimal - two lines config
- No lock-in - DEVs still have total control of the rollup config
- Publishing libraries by compiling for
esm
,cjs
,jsx
,umd
andtsc
- Automatically clean
dist
folder on build
Usage
- Install with your favorite package manager:
npm install -D @hobiri/rollup-preset rollup
pnpm add -D @hobiri/rollup-preset rollup
yarn add -D @hobiri/rollup-preset rollup
- Import
withConfig
in yourrollup.config.js
. The first and only argument is (optionally) your rollup config:
// rollup.config.js
import withConfig from "@hobiri/rollup-preset";
export default withConfig();
- Configure your package.json
{
"name": "my-lib",
"// This is optional but this removes the need to manually configure the source input for rollup": "",
"source": "src/my-lib.ts",
"// All the following properties will be hinted during build": "",
"// You will just have to copy-paste them": "",
"main": "dist/cjs/my-lib.js",
"module": "dist/esm/my-lib.js",
"types": "dist/types/my-lib.d.ts",
"files": ["dist"],
"exports": {
".": {
"import": "./dist/esm/my-lib.js",
"browser": "./dist/esm/my-lib.js",
"require": "./dist/cjs/my-lib.js",
"node": "./dist/cjs/my-lib.js"
}
}
}
API
withConfig(options?: Options | Options[]): RollupOptions | RollupOptions[]
The default export. A wrapper function that accepts all of the rollup options and a few extra to configure what to generate.
Options
The options are the same as Rollup with a few extras that are specific to the wrapper.
export interface Options extends RollupOptions {
/**
* Defines which target you want.
* Accepted values are: `cjs`, `esm`, and `umd`.
* @default ['esm']
*/
targets?: ModuleFormat[];
/**
* This can be used to override the default babel options.
* The targets can be set in the "browserslist" field in your `package.json`.
* Beware the options are only merged at the top level.
* If you add babel presets you'll need to add the default one back (as you see fit).
* @default {
* extensions,
* babelHelpers: "bundled",
* presets: ["@babel/preset-typescript", ['@babel/preset-env', { bugfixes: true, targets: "last 2 years" }]],
* }
*/
babelOptions?: RollupBabelInputPluginOptions;
/**
* This can be used to override the name defined in your `package.json`.
*/
mappingName?: string;
}