import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import typescript from '@rollup/plugin-typescript'; 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 basePlugins = [ resolve(), commonjs(), typescript({ tsconfig: './tsconfig.json', declaration: false, sourceMap: !isProd, }), ]; // 开发服务器配置 const devPlugins = isDev ? [ serve({ open: true, contentBase: ['site', 'dist'], port: 3001, }), livereload({ watch: ['src', 'site'], }), ] : []; // 输出配置 export default [ // UMD(开发模式) { input: 'src/index.ts', output: { file: 'dist/metona-toast.js', format: 'umd', name: 'MeToast', exports: 'named', sourcemap: true, }, plugins: [...basePlugins, ...devPlugins], }, // 生产构建(非 dev 模式时输出全格式) ...(isDev ? [] : [ // ESM { input: 'src/index.ts', output: { file: 'dist/metona-toast.esm.js', format: 'es', exports: 'named', sourcemap: true, }, plugins: basePlugins, }, // CommonJS { input: 'src/index.ts', output: { file: 'dist/metona-toast.cjs.js', format: 'cjs', exports: 'named', sourcemap: true, }, plugins: basePlugins, }, // UMD 压缩版 { input: 'src/index.ts', output: { file: 'dist/metona-toast.min.js', format: 'umd', name: 'MeToast', exports: 'named', sourcemap: false, }, plugins: [ ...basePlugins, terser({ compress: { drop_console: true, drop_debugger: true, pure_funcs: ['console.log', 'console.warn'], passes: 2, }, format: { comments: false }, mangle: { toplevel: true }, }), ], }, // TypeScript 声明文件合并 { input: 'src/index.ts', output: { file: 'dist/metona-toast.d.ts', format: 'es', }, plugins: [dts()], }, ]), ];