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: ['site', 'dist'], port: 3000, }), livereload({ watch: ['src', 'site'], }), ] : []; // 生产环境配置 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()], }, ];