136 lines
2.5 KiB
JavaScript
136 lines
2.5 KiB
JavaScript
import resolve from '@rollup/plugin-node-resolve';
|
||
import commonjs from '@rollup/plugin-commonjs';
|
||
import terser from '@rollup/plugin-terser';
|
||
import dts from 'rollup-plugin-dts';
|
||
import serve from 'rollup-plugin-serve';
|
||
import livereload from 'rollup-plugin-livereload';
|
||
|
||
const isDev = process.env.ROLLUP_WATCH;
|
||
const isProd = process.env.NODE_ENV === 'production';
|
||
|
||
// 基础配置
|
||
const baseConfig = {
|
||
input: 'src/index.js',
|
||
plugins: [
|
||
resolve(),
|
||
commonjs(),
|
||
],
|
||
};
|
||
|
||
// 开发服务器配置
|
||
const devPlugins = isDev ? [
|
||
serve({
|
||
open: true,
|
||
contentBase: ['examples', 'dist'],
|
||
port: 3000,
|
||
}),
|
||
livereload({
|
||
watch: ['src', 'examples'],
|
||
}),
|
||
] : [];
|
||
|
||
// 生产环境配置
|
||
const prodPlugins = isProd ? [
|
||
terser({
|
||
compress: {
|
||
drop_console: true,
|
||
drop_debugger: true,
|
||
pure_funcs: ['console.log', 'console.warn'],
|
||
},
|
||
format: {
|
||
comments: false,
|
||
},
|
||
}),
|
||
] : [];
|
||
|
||
// 输出配置
|
||
export default [
|
||
// UMD格式(浏览器)
|
||
{
|
||
...baseConfig,
|
||
output: {
|
||
file: 'dist/metona-toast.js',
|
||
format: 'umd',
|
||
name: 'MeToast',
|
||
exports: 'named',
|
||
sourcemap: !isProd,
|
||
globals: {},
|
||
},
|
||
plugins: [
|
||
...baseConfig.plugins,
|
||
...devPlugins,
|
||
...prodPlugins,
|
||
],
|
||
},
|
||
|
||
// ESM格式(现代浏览器/打包工具)
|
||
{
|
||
...baseConfig,
|
||
output: {
|
||
file: 'dist/metona-toast.esm.js',
|
||
format: 'es',
|
||
exports: 'named',
|
||
sourcemap: !isProd,
|
||
},
|
||
plugins: [
|
||
...baseConfig.plugins,
|
||
...prodPlugins,
|
||
],
|
||
},
|
||
|
||
// CommonJS格式(Node.js)
|
||
{
|
||
...baseConfig,
|
||
output: {
|
||
file: 'dist/metona-toast.cjs.js',
|
||
format: 'cjs',
|
||
exports: 'named',
|
||
sourcemap: !isProd,
|
||
},
|
||
plugins: [
|
||
...baseConfig.plugins,
|
||
...prodPlugins,
|
||
],
|
||
},
|
||
|
||
// 压缩版本(UMD)
|
||
{
|
||
...baseConfig,
|
||
output: {
|
||
file: 'dist/metona-toast.min.js',
|
||
format: 'umd',
|
||
name: 'MeToast',
|
||
exports: 'named',
|
||
sourcemap: false,
|
||
globals: {},
|
||
},
|
||
plugins: [
|
||
...baseConfig.plugins,
|
||
terser({
|
||
compress: {
|
||
drop_console: true,
|
||
drop_debugger: true,
|
||
pure_funcs: ['console.log', 'console.warn'],
|
||
passes: 2,
|
||
},
|
||
format: {
|
||
comments: false,
|
||
},
|
||
mangle: {
|
||
toplevel: true,
|
||
},
|
||
}),
|
||
],
|
||
},
|
||
|
||
// TypeScript声明文件
|
||
{
|
||
input: 'types/index.d.ts',
|
||
output: {
|
||
file: 'dist/metona-toast.d.ts',
|
||
format: 'es',
|
||
},
|
||
plugins: [dts()],
|
||
},
|
||
];
|