Rollup

yuhuo2022-11-26开发库工具库
参考链接

引入

安装

# 安装 rollup
pnpm install -D rollup
# 安装 Typescript 支持
pnpm install -D typescript @rollup/plugin-typescript

运行

package.json

{
	"scripts": {
        // -w 监控模式,代码变化就会重新打包
        "dev": "rollup -c -w",
        // --environment 传环境变量
        "build-global": "rollup -c --environment target:global",
    },
}

配置

配置文件默认根目录下 rollup.config.js

import typescript from "@rollup/plugin-typescript";

// 获取环境变量
const target = process.env.target;

// 输出配置文件
export default {
    // 打包入口
	input: "./packages/vue/src/index.ts",
    // 打包出口
    output: [
        // ES6 模块化
        {
            file: `packages/vue/dist/vue.global-esm.js`,
            format: "es",
        },
        // 立即执行函数,输出指定全局变量名
        {
            name: "vue",
            file: `packages/vue/dist/vue.global.js`,
            format: "iife",
        },
    ],
    // 引入插件
    plugins: [
        typescript(),
    ],
    // 警告回调
    onwarn: (msg, warn) => {
        // 忽略循环引用警告
        if (!/Circular/.test(msg)) {
            warn(msg);
        }
    },
}

多入口

export default {
    // 打包入口
	input: {
        "vue": "./packages/vue/src/index.ts",
        "shared": "./packages/shared/src/index.ts"
    },
    output: [
        // ES6 模块化
        {
            dir: "packages",
            entryFileNames: `[name]/dist/[name].esm.js`,
            format: "es",
        },
        // commonjs 模块化
        {
            dir: "packages",
            entryFileNames: `[name]/dist/[name].cjs.js`,
            format: "cjs",
        },
    ],
    // 设置不需要打包进来的包
    external: ["dayjs"],
}

说明

一般来说打包分以下 2 种目标

  • 浏览器:需要打包成1个文件,即 external 为空,所有引用到的依赖都打包进来
    • format: "es"
    • format: "iife"
  • npm:引用的外部依赖需要另外下载,external 需要列出所有外部依赖,让 rollup 不要打包进来
    • format: "es"
    • format: "cjs"
Last Updated 2024/3/14 09:51:53
ON THIS PAGE