mirror of
https://github.com/element-plus/element-plus.git
synced 2024-12-27 03:01:14 +08:00
f868d9afa3
* feat: add full bundle locale * refactor: build
59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { rollup } from 'rollup'
|
|
import vue from 'rollup-plugin-vue'
|
|
import css from 'rollup-plugin-css-only'
|
|
import { nodeResolve } from '@rollup/plugin-node-resolve'
|
|
import commonjs from '@rollup/plugin-commonjs'
|
|
import esbuild from 'rollup-plugin-esbuild'
|
|
import filesize from 'rollup-plugin-filesize'
|
|
import glob from 'fast-glob'
|
|
import { epRoot, pkgRoot } from './utils/paths'
|
|
import { ElementPlusAlias } from './plugins/element-plus-alias'
|
|
import { generateExternal, writeBundles } from './utils/rollup'
|
|
import { excludeFiles } from './utils/pkg'
|
|
import { reporter } from './plugins/size-reporter'
|
|
import { buildConfigEntries, target } from './build-info'
|
|
import type { OutputOptions } from 'rollup'
|
|
|
|
export const buildModules = async () => {
|
|
const input = excludeFiles(
|
|
await glob('**/*.{js,ts,vue}', {
|
|
cwd: pkgRoot,
|
|
absolute: true,
|
|
onlyFiles: true,
|
|
})
|
|
)
|
|
const bundle = await rollup({
|
|
input,
|
|
plugins: [
|
|
ElementPlusAlias(),
|
|
css(),
|
|
vue({ target: 'browser' }),
|
|
nodeResolve({
|
|
extensions: ['.mjs', '.js', '.json', '.ts'],
|
|
}),
|
|
commonjs(),
|
|
esbuild({
|
|
sourceMap: true,
|
|
target,
|
|
}),
|
|
filesize({ reporter }),
|
|
],
|
|
external: await generateExternal({ full: false }),
|
|
treeshake: false,
|
|
})
|
|
await writeBundles(
|
|
bundle,
|
|
buildConfigEntries.map(([module, config]): OutputOptions => {
|
|
return {
|
|
format: config.format,
|
|
dir: config.output.path,
|
|
exports: module === 'cjs' ? 'named' : undefined,
|
|
preserveModules: true,
|
|
preserveModulesRoot: epRoot,
|
|
sourcemap: true,
|
|
entryFileNames: `[name].${config.ext}`,
|
|
}
|
|
})
|
|
)
|
|
}
|