1.0.1 • Published 2 years ago

@hobiri/rollup-preset v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

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 and tsc
  • Automatically clean dist folder on build

Usage

  1. 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
  1. Import withConfig in your rollup.config.js. The first and only argument is (optionally) your rollup config:
// rollup.config.js
import withConfig from "@hobiri/rollup-preset";

export default withConfig();
  1. 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;
}