Files
MetonaToast/rollup.config.js
T
tianhao 9a6cd33d90
CI / test (18.x) (push) Successful in 9m52s
CI / test (22.x) (push) Canceled after 0s
CI / test (24.x) (push) Canceled after 0s
CI / test (20.x) (push) Canceled after 2m49s
release: v0.2.0 — TypeScript 源码重构
### Changed
- 全部源码从 JavaScript 迁移到 TypeScript (strict mode)
- core.js (1244行) 拆分为 toast.ts + api.ts + templates.ts
- 删除手动维护的 types/index.d.ts,类型从源码自动生成
- 构建工具链: Babel → ts-jest, 新增 @rollup/plugin-typescript
- 新增 rollup-plugin-dts 生成合并 .d.ts

### Added
- tsconfig.json (strict: true)
- src/types.ts 核心类型模块 (39 个导出类型)
- .eslintrc.json (@typescript-eslint)
- .gitea/workflows/ci.yml (Node 18/20/22/24 矩阵)
- CHANGELOG.md

### Aligned with metona-starter
- package.json: type:module, engines≥16, prepublishOnly
- rollup.config.js: dts plugin, port 3001
- jest.config.cjs, build.sh, serve.sh, .gitignore (.npmrc)

### Removed
- babel.config.js, types/ 目录, 所有 src/*.js
2026-07-25 11:22:07 +08:00

108 lines
2.3 KiB
JavaScript

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()],
},
]),
];