Files
MetonaToast/rollup.config.js
T

136 lines
2.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()],
},
];