code-center/rollup.config.mjs
2024-11-22 02:13:12 +08:00

80 lines
2.6 KiB
JavaScript

import typescript from '@rollup/plugin-typescript'
import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import copy from 'rollup-plugin-copy'
import { dts } from 'rollup-plugin-dts'
import json from '@rollup/plugin-json'
import * as glob from 'glob'
import path from 'path'
import esbuild from 'rollup-plugin-esbuild'
import alias from '@rollup/plugin-alias'
// import ignore from 'rollup-plugin-ignore';
// ignore(['xmlbuilder']),
/**
* @type {import('rollup').RollupOptions}
*/
const config = {
input: './src/index.ts',
output: {
dir: './dist',
// file: path.join('./dist', 'app.mjs'),
entryFileNames: 'app.mjs',
chunkFileNames: '[name]-[hash].mjs',
// format: 'cjs'
format: 'esm'
},
plugins: [
alias({
// only esbuild needs to be configured
entries: [
{ find: '@', replacement: path.resolve('src') }, // 配置 @ 为 src 目录
{ find: 'http', replacement: 'node:http' },
{ find: 'https', replacement: 'node:https' },
{ find: 'fs', replacement: 'node:fs' },
{ find: 'path', replacement: 'node:path' },
{ find: 'crypto', replacement: 'node:crypto' },
{ find: 'zlib', replacement: 'node:zlib' },
{ find: 'stream', replacement: 'node:stream' },
{ find: 'net', replacement: 'node:net' },
{ find: 'tty', replacement: 'node:tty' },
{ find: 'tls', replacement: 'node:tls' },
{ find: 'buffer', replacement: 'node:buffer' },
{ find: 'timers', replacement: 'node:timers' },
// { find: 'string_decoder', replacement: 'node:string_decoder' },
{ find: 'dns', replacement: 'node:dns' },
{ find: 'domain', replacement: 'node:domain' },
{ find: 'os', replacement: 'node:os' },
{ find: 'events', replacement: 'node:events' },
{ find: 'url', replacement: 'node:url' },
{ find: 'assert', replacement: 'node:assert' },
{ find: 'util', replacement: 'node:util' }
]
}),
resolve({
preferBuiltins: true // 强制优先使用内置模块
}),
commonjs(),
// typescript({
// declaration: false
// }),
esbuild({
target: 'node22', // 目标为 Node.js 14
minify: false, // 启用代码压缩
tsconfig: 'tsconfig.json'
}),
json()
// copy({
// targets: [
// {
// src: `${directory}/*.html`,
// dest: outputDirectory,
// },
// ],
// }),
],
external: ['sequelize', '@kevisual/router', 'ioredis', 'socket.io', 'minio']
}
export default config