rollup.js学习-基础

2020-12-11 03:43:072020-12-11 11:02:22

WHAT

一款打包工具

WHY

  • 轻量,适合打包库

  • 支持输出esm

HOW

打包 typescript,单入口,多输出格式

安装

  • rollup

  • rollup-plugin-typescript2

  • @rollup/plugin-node-resolve

  • @rollup/plugin-commonjs

  • rollup-plugin-cleaner

配置

import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import path from 'path';
import ts from 'rollup-plugin-typescript2';
import cleaner from 'rollup-plugin-cleaner';

const extensions = ['.ts', '.tsx', '.js', '.jsx'];
const tsconfig = path.resolve(__dirname, 'tsconfig.json');

export default [
  {
    input: './src/index.ts',
    output: {
      dir: 'dist/esm',
      format: 'esm',
    },
    plugins: [
      cleaner({ targets: ['./dist/'] }),
      resolve({ extensions }),
      commonjs(),
      ts({ tsconfig }),
    ],
    external: ['react']
  },
  {
    input: './src/index.ts',
    output: {
      dir: 'dist/umd',
      format: 'umd',
      name: 'MJSLibrary',
      globals: {
        react: 'React'
      }
    },
    plugins: [
      resolve({ 
        extensions
      }),
      commonjs(),
      ts({ 
        tsconfigOverride: { compilerOptions: { declaration: false } }, 
        tsconfig
      }),
    ],
    external: ['react']
  }
]

打包

{
    "scripts": {
        "build": "rollup -c"
    }
}