返回

rollup打包基于antd的react组件库

前端

前段时间公司在做公共组件的抽取,打算做一个公共的组件库,本来的想法是直接把封装好的各个公共组件直接引入到项目中就可以使用,后来发现直接引用会报错,大概意思是直接引入不能识别jsx语法之类的错误。遂参考各个现成类库antd、elementUI等UI库的做法经过打包生成可供其他项目使用的独立包。

rollup介绍

rollup是一个用于将现代JavaScript应用程序打包到适合生产环境的单一文件中的模块打包器。它使用一种称为tree-shaking的技术,可以去除代码中未使用的部分,从而创建更小的包。

打包过程

  1. 安装rollup
npm install --save-dev rollup
  1. 创建rollup配置文件

在项目根目录创建一个名为rollup.config.js的文件,并添加以下内容:

import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import babel from 'rollup-plugin-babel';
import { terser } from 'rollup-plugin-terser';

export default {
  input: 'src/index.js',
  output: {
    file: 'dist/index.js',
    format: 'umd',
    name: 'my-component-library',
    globals: {
      react: 'React',
      'react-dom': 'ReactDOM',
    },
  },
  plugins: [
    resolve(),
    commonjs(),
    json(),
    babel({
      exclude: 'node_modules/**',
    }),
    terser(),
  ],
};
  1. 运行rollup
npx rollup -c
  1. 发布到npm
npm publish

注意事项

  1. 使用tree-shaking

rollup的tree-shaking功能可以帮助你减小包的大小。要启用此功能,请确保你的代码使用ES模块语法,并且在rollup配置文件中配置了babel插件。

  1. 处理外部依赖项

如果你使用的组件库依赖于其他外部依赖项,你需要在rollup配置文件的globals属性中声明这些依赖项。

  1. 打包CSS

如果你组件库包含CSS文件,你需要使用额外的rollup插件来处理CSS。

  1. 代码分割

如果你的组件库很大,你可以使用代码分割来将它拆分成多个较小的包。

总结

通过使用rollup,你可以轻松地将基于antd的react组件库打包成一个可供其他项目使用的独立包。本文提供了详细的打包流程,以及常见问题的解决方法。通过遵循这些步骤,你可以快速构建和发布自己的组件库。