基于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
目录
相关文章
|
6月前
|
存储 JavaScript 前端开发
深入了解rollup(五)插件输出生成钩子
输出生成钩子可以提供有关生成的产物的信息并在构建完成后修改构建。它们的工作方式和类型与 构建钩子 相同,但是对于每个调用 bundle.generate(outputOptions) 或 bundle.write(outputOptions),它们都会单独调用。仅使用输出生成钩子的插件也可以通过输出选项传递,并且因此仅针对某些输出运行。
158 0
|
前端开发
从0搭建Vue3组件库(七):使用 gulp 打包组件库并实现按需加载
从0搭建Vue3组件库(七):使用 gulp 打包组件库并实现按需加载
354 0
|
3月前
|
JSON JavaScript IDE
[译] 使用 microbundle 打包 TypeScript 组件库
[译] 使用 microbundle 打包 TypeScript 组件库
|
6月前
|
资源调度 JavaScript 开发者
插件使用:扩展Vue功能与第三方插件
【4月更文挑战第23天】Vue凭借其轻量级和灵活性在Web开发中备受青睐,而插件则进一步增强了其功能。本文探讨了如何在Vue项目中选择、安装、配置和管理插件,以适应不同需求。要点包括:选择可靠且兼容的插件,使用npm或yarn安装,根据文档配置,以及注意性能影响。明智使用插件能提升开发效率,但需避免过度依赖,确保与项目目标和技术栈匹配。不断学习新插件,可保持技术领先并优化项目实践。
73 0
|
6月前
|
缓存 前端开发 JavaScript
深入了解rollup(三)插件机制
Rollup 插件是一个对象,具有属性]、构建钩子 和 输出生成钩子 中的一个或多个,并遵循我们的约定。插件应作为一个导出一个函数的包进行发布,该函数可以使用插件特定的选项进行调用并返回此类对象。 插件允许你通过例如在打包之前进行转译代码或在node_modules文件夹中查找第三方模块来自定义 Rollup 的行为。
133 1
|
6月前
|
JSON 前端开发 JavaScript
深入了解rollup(四)插件开发示例
Rollup是一个JavaScript模块打包器,它可以将多个模块打包成一个单独的文件,以便在浏览器中使用。与其他打包工具相比,Rollup的主要优势在于它可以生成更小、更快的代码。在本文中,我们将深入了解Rollup的插件开发。
82 1
|
JavaScript
uview组件库的安装
uview组件库的安装
151 0
|
前端开发 JavaScript
rollup从0到1将react组件库打包发布npm
rollup从0到1将react组件库打包发布npm记录全过程
627 1
rollup从0到1将react组件库打包发布npm
|
JSON 小程序 前端开发
小程序引入第三方插件Vant和小程序WeUl组件库
现如今前端的技术再向框架化的发展,框架的使用提高我们的编码的效率和性能的优化,同样CSS样式也是越来越高的要求,今天我要向大家介绍的就是较火的前端UI框架Vant UI组件库
268 0
|
前端开发 JavaScript
从0搭建Vue3组件库(五): 如何使用Vite打包组件库
从0搭建Vue3组件库(五): 如何使用Vite打包组件库
749 0