当前位置: 首页 > article >正文

监控平台之rollup打包

设计思路

1.根据模块,通过index.js去调用执行调用

2.WebEyeSDK.js暴露方法,同时定义init方法,去初始化config里的上报参数

3.rollup/build里入口文件为WebEyeSDK.js进行打包

4.打包编译用babel,同时安装babel/preset-env智能预设(可去webpack专栏查看)

5.bundle格式,原文件采用iife格式,原因是

  1. 创建只使用一次的函数,并立即执行它。
  2. 创建闭包,保存状态,隔离作用域。
  3. 作为独立模块存在(例子如jQuery),防止命名冲突,命名空间注入(模块解耦)。

6.其他格式,esm,cjs打包,静态异步和同步方式进行打包

项目整体架构流程图

rollup打包文件

plugin:

rollup/plugin-json 上报数据采用json格式保存,Rollup 会将 data.json 的内容嵌入到生成的 bundle.js 文件中,这样你就可以在最终的代码中使用 JSON 数据。

@rollup-plugin-babel:同babel/preset-env,进行智能预设,会根据版本,浏览器进行语法编译

const path = require('path')
const json = require('@rollup/plugin-json')
const {babel} = require('@rollup/plugin-babel')

const resolveFile = function(filePath) {
    return path.join(__dirname, filePath)
}

const plugins= [
    json(
        {
            compact: true
        }
    ),
    babel({
        extensions: ['.js','.ts'],
        babelHelpers: 'bundled',
        presets: [
            [
                '@babel/env',
                {
                    targets: {
                        browsers: [
                            '> 1%',
                            'last 2 versions',
                            'not ie <= 8',
                        ]
                    }
                }
                ]
        ]
    })
]

module.exports = [
    {
        plugins,
        input: resolveFile('../src/webEyeSDK.js'),
        output: {
            file: resolveFile('../dist/webEyeSDK.js'),
            format: 'iife',
            name: 'WebEyeSDK',
            soucemap: true,
            // globals: {
            //     'vue': 'Vue',
            // }
        }
    },
    {
        plugins,
        input: resolveFile('../src/webEyeSDK.js'),
        output: {
            file: resolveFile('../dist/webEyeSDK.js'),
            format: 'iife',
            name: 'WebEyeSDK',
            soucemap: true,
            // globals: {
            //     'vue': 'Vue',
            // }
        }
    },
    {
        plugins,
        input: resolveFile('../src/webEyeSDK.js'),
        output: {
            file: resolveFile('../dist/webEyeSDK.esm.js'),
            format: 'esm',
            name: 'WebEyeSDK',
            soucemap: true,
            // globals: {
            //     'vue': 'Vue',
            // }
        }
    },
    {
        plugins,
        input: resolveFile('../src/webEyeSDK.js'),
        output: {
            file: resolveFile('../dist/webEyeSDK.cjs.js'),
            format: 'cjs',
            name: 'WebEyeSDK',
            soucemap: true,//
            // globals: {
            //     'vue': 'Vue',
            // }
        }
    }
]


http://www.kler.cn/news/294632.html

相关文章:

  • 【MYSQL】
  • 最强虚拟机,内置强大插件,绝!
  • MES管理系统助力企业车间管理可视化
  • RK3566/RK3568 Android 11 无操作自动隐藏导航栏、底部上拉显示导航栏
  • Clickhouse 为什么这么快
  • 前端去除 html 的标签 v-html 改为方法
  • C++学习笔记(10)
  • “设计模式双剑合璧:工厂模式与策略模式在支付系统中的完美结合”
  • YOLOv8改进 | Conv篇 | YOLOv8引入DWR
  • 2024年,女生到底适合转行ui设计还是软件测试?
  • golang闭包中变量获取
  • 3个 ArcGIS imagery的新特性
  • ELK学习笔记(三)——使用Filebeat8.15.0收集日志
  • 美金充值卡自己收会更划算吗?相当卡商的学员看过来
  • PHP一键创建在线考试考试答题系统小程序源码助力远程教育与考核
  • 驾驭冰雪 安全无忧,韩泰高性能冬季轮胎新品上市
  • 装修找人做“私活”有哪些风险?
  • Oracle---PAG程序全局区的组成:堆栈区、会话区、游标区、排序区
  • 【debug】nvidia-smi:Failed to initialize NVML: Unknown Error
  • Redis 持久化 AOF、RDB
  • 如果文件从存储卡中被误删除,存储卡数据恢复如何恢复?
  • 【Linux】萌新看过来!一篇文章带你走进Linux世界
  • 【Qt】处理键盘事件
  • Spring-容器:IOC-基于注解管理Bean
  • C++11 --- 智能指针
  • 自然语言处理系列五十》文本分类算法》SVM支持向量机算法原理
  • 超详细!!!electron-vite-vue开发桌面应用之创建新窗口以及主进程和子进程的通信监听(十二)
  • (1)DRF项目服务器部署(Linux/Nginx/Uwsgi)
  • 数据结构---双向链表(内存泄露相关知识)
  • 关于易优cms自定义字段不显示的问题