个人博客 个人博客
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

董先亮

前端react开发
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 高德地图接入
  • 以鼠标为中心缩放
  • 银行卡号验证
  • 前端规范化
  • 二维码与条形码
  • 监控设备接入
  • 获取鼠标位置坐标
  • node、npm关系
  • node-sass版本问题
  • html实现拖拽
  • npm发包
  • rullup打造工具库
    • 常用插件
      • 1.rollup-plugin-dts
      • 2.@rollup/plugin-commonjs
      • 3.rollup-plugin-terser
      • 4.@rollup/plugin-node-resolve
      • 5. rollup-plugin-babel
    • 注意
    • 参考
  • 九宫格拖拽
  • 前端项目审核
  • 多次引用相同文件的打包问题
  • 前端面试题
  • websocket即时通讯
  • 前端专题
NeverStop1024
2023-02-01
目录

rullup打造工具库

# 常用插件

# 1.rollup-plugin-dts

自动帮你生成类型声明文件*.d.ts

import dts from "rollup-plugin-dts";
const config = [
  // …
  {
    input: "./my-input/index.d.ts",
    output: [{ file: "dist/my-library.d.ts", format: "es" }],
    plugins: [dts()],
  },
];
export default config;
1
2
3
4
5
6
7
8
9
10

# 2.@rollup/plugin-commonjs

rollup本身是不支持CommonJS的,使用了这个插件,就可以解析CommonJS模块了.
如果在一个配置内同时使用了@rollup/plugin-babel,需要把@rollup/plugin-commonjs 插件放在前面使用

import { babel } from '@rollup/plugin-babel';
import commonjs from '@rollup/plugin-commonjs';
const config = {
  ...
  plugins: [
    commonjs(),
    babel({ babelHelpers: 'bundled' })
  ],
};
1
2
3
4
5
6
7
8
9

# 3.rollup-plugin-terser

对代码进行压缩

import { terser } from 'rollup-plugin-terser';
{
  output: [
    {
      file: (`./dist/index.min.js`),
      format: 'umd',
      name: 'atools',
      sourcemap: true,
      plugins: [terser()],
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12

# 4.@rollup/plugin-node-resolve

启用了该插件,让rollup可以找到node环境的其他依赖.
优点

  1. rollup就可以解析第三方模块了,如import dayjs from 'dayjs'直接解析到node_moduls,不使用该插件就要显示的指定包的位置,这样就简化了导入的过程。
  2. 自动识别index
// 不配置 @rollup/plugin-node-resolve 插件引入方式
export foo from './foo/index.js'
import bar from './bar/index.js'

// 配置了 @rollup/plugin-node-resolve 插件引入方式
export foo from './foo'
import bar from './bar'
1
2
3
4
5
6
7

配置
默认只对['.js', '.json']文件起效,如果项目使用了ts,要改为['.ts','.js', '.json']

import { nodeResolve } from '@rollup/plugin-node-resolve';
  {
    input: './index.ts',
    output: [],
    plugins: [
      nodeResolve({
        extensions:['.ts', '.js', '.json'],
      })
    ]
  }
1
2
3
4
5
6
7
8
9
10

# 5. rollup-plugin-babel

将代码转换为es5

import babel from 'rollup-plugin-babel';
{
    input: './index.ts',
    output: [],
    plugins: [
      babel({
        extensions:['.ts', '.js'],
        exclude: 'node_modules/**' // 这个目录下排除在外,不做处理
      })
    ]
  }
1
2
3
4
5
6
7
8
9
10
11

# 注意

  1. rollup-plugin与rollup/plugin区别(如rollup-plugin-typescript2与@rollup/plugin-typescript)
    • rollup-plugin开头是社区提供的插件
    • rollup/plugin是官方提供的插件

# 参考

  1. 基于rollup打造组件库,你可能会用到这些插件 (opens new window)
编辑 (opens new window)
上次更新: 2023/02/02
npm发包
九宫格拖拽

← npm发包 九宫格拖拽→

最近更新
01
mock使用
07-12
02
websocket即时通讯
07-12
03
前端面试题
07-09
更多文章>
Theme by Vdoing | Copyright © 2022-2023 NeverStop1024 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式