hc-web-log-mon
Version:
基于 JS 跨平台插件,为前端项目提供【 行为、性能、异常、请求、资源、路由、曝光、录屏 】监控手段
107 lines (93 loc) • 2.39 kB
text/typescript
import esbuild from 'rollup-plugin-esbuild'
import dts from 'rollup-plugin-dts'
import json from '@rollup/plugin-json'
import nodeResolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import type { Options as ESBuildOptions } from 'rollup-plugin-esbuild'
import type { OutputOptions, RollupOptions } from 'rollup'
import { packages } from '../meta/packages'
const configs: RollupOptions[] = []
const esbuildPlugin = esbuild({ target: 'esnext' })
const dtsPlugin = [dts()]
const externals = []
// const externals = ['hc-web-log-core']
const esbuildMinifer = (options: ESBuildOptions) => {
const { renderChunk } = esbuild(options)
return { name: 'esbuild-minifer', renderChunk }
}
for (const {
globals,
name,
external,
iife,
build,
cjs,
mjs,
dts,
target
} of packages) {
if (build === false) continue
const iifeGlobals = {
'hc-web-log-core': 'WebTracing',
...(globals || {})
}
const iifeName = 'WebTracing'
// 打包 hooks & utils
const fn = 'index'
const input = `packages/${name}/index.ts`
const output: OutputOptions[] = []
if (mjs !== false) {
output.push({
file: `packages/${name}/dist/${fn}.mjs`,
format: 'es'
})
}
if (cjs !== false) {
output.push({
file: `packages/${name}/dist/${fn}.cjs`,
format: 'cjs'
})
}
if (iife !== false) {
output.push(
{
file: `packages/${name}/dist/${fn}.iife.js`,
format: 'iife',
name: iifeName,
extend: true,
globals: iifeGlobals
},
{
file: `packages/${name}/dist/${fn}.iife.min.js`,
format: 'iife',
name: iifeName,
extend: true,
globals: iifeGlobals,
plugins: [esbuildMinifer({ minify: true })]
}
)
}
configs.push({
input,
output,
plugins: [
commonjs(),
nodeResolve(),
json(),
target ? esbuild({ target }) : esbuildPlugin
],
external: [...externals, ...(external || [])]
})
if (dts !== false) {
configs.push({
input,
output: {
file: `packages/${name}/dist/${fn}.d.ts`,
format: 'es'
},
plugins: dtsPlugin,
external: [...externals, ...(external || [])]
})
}
}
export default configs