基于rollup打造组件库,你可能会用到这些插件

简介: 最近在重复赵轮子,用rollup搞一个react 组件库,今天就简单整理下用到的插件。简单来说插件就是能力者,帮助你完成某事,相信大家都用过webpack构建项目,我们会用到各种plugin和loader来帮我们处理js、css、图片、压缩代码等,那么在rollup里想要完成某事,也同样需要对应的plugin来完成,而且rollup的配置会更加简单。

最近在重复赵轮子,用rollup搞一个react 组件库,今天就简单整理下用到的插件。

简单来说插件就是能力者,帮助你完成某事,相信大家都用过webpack构建项目,我们会用到各种plugin和loader来帮我们处理js、css、图片、压缩代码等,那么在rollup里想要完成某事,也同样需要对应的plugin来完成,而且rollup的配置会更加简单。

rollup-plugin-babel


一看到babel我们就知道干什么的了,可以让我们提前使用js的新特性,把最新的语法转为es5.

然后我们再结合@babel/preset-react插件来识别jsx代码。

示例:

import { babel } from '@rollup/plugin-babel';
const config = {
  input: 'src/index.js',
  output: {
    dir: 'output',
    format: 'esm'
  },
  plugins: [babel({ babelHelpers: 'bundled' })]
};
export default config;

@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' })
  ],
};

rollup-plugin-postcss


处理css会用到rollup-plugin-postcss插件。它支持css文件的加载、css自动加前缀、css压缩、对scss/less的支持等等,同时支持内联、将css提取到独立文件。

// rollup.config.js
import postcss from 'rollup-plugin-postcss'
export default {
  plugins: [
    postcss({
      plugins: []
    })
  ]
}

rollup-plugin-terser


用于在生产环境中,对代码进行压缩。

import { rollup } from "rollup";
import { terser } from "rollup-plugin-terser";
rollup({
  input: "main.js",
  plugins: [terser()],
});

rollup-plugin-typescript2


让你的项目支持使用TS来进行开发,插件执行时会默认读取tsconfig.json配置。

// rollup.config.js
import typescript from 'rollup-plugin-typescript2';
export default {
 input: './main.ts',
 plugins: [
  typescript(/*{ plugin options }*/)
 ]
}

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;

@rollup/plugin-json


可以将.json文件转为es6模块供rollup处理。

import json from '@rollup/plugin-json';
export default {
  input: 'src/index.js',
  output: {
    dir: 'output',
    format: 'cjs'
  },
  plugins: [json()]
};

一个json 文件

e3f84dd8c9fa0c35213829bd7bf2520f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

转换后

ce23bc5e7e653c43ff6f266dd97d4b7c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

rollup-plugin-eslint


js代码静态检查

import { eslint } from "rollup-plugin-eslint";
export default {
  input: "main.js",
  plugins: [
    eslint({
      /* your options */
    })
  ]
};

最后


上面整理了目前用到的插件,组合后的配置如下:

import commonjs from 'rollup-plugin-commonjs';
import babel from "rollup-plugin-babel";
import { terser } from 'rollup-plugin-terser';
import { eslint } from 'rollup-plugin-eslint';
import json from '@rollup/plugin-json';
import typescript from "rollup-plugin-typescript2";
import dts from "rollup-plugin-dts";
export default [
    {
        input: 'src/main.js',
        output: {
            name: 'timeout',
            file: '/lib/tool.js',
            format: 'umd'
        },
        plugins: [
            commonjs(),
            typescript(),
            eslint(),
            babel(),
            json(),
            terser(),
            dts()
        ]
    }
];

另外还有一些未使用的插件,在造轮子过程中应该还会用到,后面再继续补充。

@rollup/plugin-url
rollup-plugin-styles
@rollup/plugin-replace
rollup-plugin-multi-input
rollup-plugin-static-import
rollup-plugin-ignore-import
目录
相关文章
|
程序员 Linux Docker
使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
|
监控 架构师 Java
JVM 8 调优指南:如何进行JVM调优,JVM调优参数
这篇文章将详细介绍如何进行JVM 8调优,包括JVM 8调优参数及其应用。此外,我将提供12个实用的代码示例,每个示例都会结合JVM启动参数和Java代码。JVM调优是指通过调整Java虚拟机的配置来提升Java应用程序的性能。这包括优化堆内存设置、选择合适的垃圾收集器以及调整其他性能相关的参数。
1218 0
|
8月前
|
存储 安全 Android开发
HarmonyOS实战:一招搞定保存图片到相册
本文介绍了在鸿蒙系统中实现保存图片到相册的功能,包括申请权限和使用系统安全控件两种方式。文中详细讲解了如何通过网络请求下载图片并保存为本地文件,以及如何将指定布局生成图片并保存。鸿蒙系统对权限管理较为严格,推荐使用系统提供的安全控件(如 SaveButton)以保护用户隐私,避免手动申请权限。此外,文章还对比了鸿蒙与 Android/iOS 的实现差异,指出鸿蒙在功能实现上更简单,但需注意权限规范以确保项目顺利上线。
1108 0
HarmonyOS实战:一招搞定保存图片到相册
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
379 0
|
Java jvm-sandbox 容器
【alibaba/jvm-sandbox#05】沙箱事件详解
alibaba/jvm-sandbox设计了完善且复杂的沙箱事件,用于实现事件探测和流程控制机制。但不建议对于同一个类、同一个方法多次增强
968 0
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进-卷积Conv】DualConv( Dual Convolutional):用于轻量级深度神经网络的双卷积核
**摘要:** 我们提出DualConv,一种融合$3\times3$和$1\times1$卷积的轻量级DNN技术,适用于资源有限的系统。它通过组卷积结合两种卷积核,减少计算和参数量,同时增强准确性。在MobileNetV2上,参数减少54%,CIFAR-100精度仅降0.68%。在YOLOv3中,DualConv提升检测速度并增4.4%的PASCAL VOC准确性。论文及代码已开源。
|
缓存 JSON 前端开发
你知道304吗?图解强缓存和协商缓存
该文章深入解析了HTTP协议中的缓存机制,重点讲述了强缓存和协商缓存的工作原理,并解释了HTTP状态码304的意义及其对前端和后端的影响。
|
小程序 前端开发 JavaScript
微信小程序|大学生心理健康测评管理系统的设计与实现
微信小程序|大学生心理健康测评管理系统的设计与实现
478 0
微信小程序|大学生心理健康测评管理系统的设计与实现
|
JavaScript
Nodejs中process.cwd()与__dirname的区别
首先,上官方解释。 => process.cwd(): The process.cwd() method returns the current working directory of theNode.js process. 上面的意思就是,process.cwd()返回的是当前Node.js进程执行时的工作目录。
4739 0

热门文章

最新文章