Rollup:打包 TypeScript - React 组件库

调用浏览器摄像头拍照组件

  • 1、前提
  • 1、安装依赖
  • [2、添加 rollup.config.js 配置](#2、添加 rollup.config.js 配置)
  • [3、修改 package.json](#3、修改 package.json)
    • [3.1 添加打包命令](#3.1 添加打包命令)
    • [3.2 添加组件入口](#3.2 添加组件入口)
    • [3.3 添加组件声明入口](#3.3 添加组件声明入口)
    • [3.4 浏览器支持](#3.4 浏览器支持)

1、前提

1.1 通过 create-react-app take-photo --template 创建前端应用

1.2 添加组件 TakePhoto (拍照组件)

1.3 App 为测试组件

1.4 目录结构

1、安装依赖

powershell 复制代码
@rollup/plugin-commonjs 
@rollup/plugin-image
@rollup/plugin-node-resolve
@rollup/plugin-terser
@rollup/plugin-typescript
autoprefixer
postcss
postcss-preset-env
postcss-url
rollup
rollup-plugin-delete
rollup-plugin-postcss

2、添加 rollup.config.js 配置

javascript 复制代码
const { nodeResolve } = require('@rollup/plugin-node-resolve');
// 允许使用 node 或 umd 包
const commonjs = require( '@rollup/plugin-commonjs');
// 打包前清空输出目录
const del = require( 'rollup-plugin-delete');
// 压缩代码
const terser = require('@rollup/plugin-terser');
// 编译 TS 代码
const typescript = require( '@rollup/plugin-typescript');
// 处理scss
const postcss = require( 'rollup-plugin-postcss');
// 处理scss 添加前缀
const autoprefixer = require( 'autoprefixer');
// 处理 css 中引入的图片
const postCssUrl = require("postcss-url");
// 处理组件引入的图片
const image = require('@rollup/plugin-image');

module.exports = {
  input: 'src/TakePhoto/index.tsx',
  output: [
    {
      file: 'dist/TakePhoto/index.js',
      format: 'umd',
      name: 'TakePhoto',
      globals: {
        react: 'React',
        'react-dom': 'ReactDom'
      }
    }
  ],
  external: ['react', 'react-dom'],
  plugins: [
    del({ targets: 'dist/*', verbose: true }),
    nodeResolve(),
    commonjs(),
    terser(),
    typescript({
      "include": [
        "src/TakePhoto/*",
        "src/types.d.ts"
      ]
    }),
    postcss({
      extensions: ['.css', '.scss'],
      inject: true,
      minimize: true,
      plugins: [
        postCssUrl({
          url: 'inline'
        }),
        autoprefixer()
      ],
    }),
    image()
  ]
};

3、修改 package.json

3.1 添加打包命令

javascript 复制代码
"scripts": {
    // 其他命令...
    "build": "rollup --config"
},

3.2 添加组件入口

javascript 复制代码
"main": "dist/TakePhoto/index.js",

3.3 添加组件声明入口

javascript 复制代码
"types": "dist/TakePhoto/index.d.ts",

3.4 浏览器支持

javascript 复制代码
"browserslist": [
    ">0.2%",
    "not dead",
    "not op_mini all",
    "Firefox >= 52",
    "IE >= 10"
],
相关推荐
阿蒙Amon2 小时前
TypeScript学习-第7章:泛型(Generic)
javascript·学习·typescript
睡美人的小仙女1272 小时前
Threejs加载环境贴图报错Bad File Format: bad initial token
开发语言·javascript·redis
fanruitian3 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo3 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk3 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
摘星编程3 小时前
React Native + OpenHarmony:Timeline垂直时间轴
javascript·react native·react.js
2501_944525544 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
jin1233225 小时前
React Native鸿蒙跨平台完成剧本杀组队详情页面,可以复用桌游、团建、赛事等各类组队详情页开发
javascript·react native·react.js·ecmascript·harmonyos
李白你好5 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
经年未远6 小时前
vue3中实现耳机和扬声器切换方案
javascript·学习·vue