monitor-test
Version:
网页性能监控 18 项数据指标,浏览器信息,错误收集上报方案,前端工程化。
108 lines (95 loc) • 2.3 kB
JavaScript
import nodeResolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import babel from '@rollup/plugin-babel'
import alias from '@rollup/plugin-alias'
import replace from '@rollup/plugin-replace'
import json from '@rollup/plugin-json'
// https://github.com/TrySound/rollup-plugin-terser
import { terser } from 'rollup-plugin-terser'
// https://github.com/saf33r/rollup-plugin-cleaner
import cleaner from 'rollup-plugin-cleaner'
// https://github.com/egoist/rollup-plugin-postcss
import postcss from 'rollup-plugin-postcss'
import pkg from './package.json'
import { cloneDeep, upperFirst } from 'lodash'
const path = require('path')
const isDev = process.env.NODE_ENV === 'development'
const filename = pkg.browser.slice(
pkg.browser.indexOf('/') + 1,
pkg.browser.indexOf('.')
)
const out = [
{
file: pkg.main,
format: 'cjs'
},
{
file: pkg.module,
format: 'esm'
},
{
file: pkg.browser,
format: 'umd',
name: filename
.split('-')
.map((i) => upperFirst(i))
.join('')
}
]
const banner = `/*!
* ${pkg.name} v${pkg.version}
* (c) 2020-2021 ${pkg.author}
* Released under the ${pkg.license} License.
*/
`
const minimize = (obj) => {
const minObj = cloneDeep(obj)
minObj.file = minObj.file.slice(0, minObj.file.lastIndexOf('.js')) + '.min.js'
minObj.plugins = [
terser({
compress: { drop_console: !isDev },
format: {
comments: RegExp(`${pkg.name}`)
}
})
]
minObj.banner = banner
return minObj
}
const resolve = (dir) => {
return path.join(__dirname, dir)
}
export default {
input: resolve('src/index.js'),
output: [
...out,
...out.map((type) => {
type.file = resolve(type.file)
return minimize(type)
})
],
plugins: [
cleaner({
targets: ['./dist']
}),
json(),
nodeResolve(),
commonjs(),
alias({
entries: [{ find: '@', replacement: resolve('src') }]
}),
replace({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}),
babel({
exclude: 'node_modules/**',
babelHelpers: 'runtime'
}),
postcss({
extract:
process.env.CSS_STATUS === 'inline'
? false
: resolve(`dist/css/${filename}.css`)
})
]
}