build-info.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import path from 'path'
  2. import { PKG_NAME } from '@kankan/build-constants'
  3. import { epOutput } from '@kankan/build-utils'
  4. import type { ModuleFormat } from 'rollup'
  5. export const modules = ['esm', 'cjs'] as const
  6. export type Module = typeof modules[number]
  7. export interface BuildInfo {
  8. module: 'ESNext' | 'CommonJS'
  9. format: ModuleFormat
  10. ext: 'mjs' | 'cjs' | 'js'
  11. output: {
  12. /** e.g: `es` */
  13. name: string
  14. /** e.g: `dist/element-plus/es` */
  15. path: string
  16. }
  17. bundle: {
  18. /** e.g: `element-plus/es` */
  19. path: string
  20. }
  21. }
  22. export const buildConfig: Record<Module, BuildInfo> = {
  23. esm: {
  24. module: 'ESNext',
  25. format: 'esm',
  26. ext: 'mjs',
  27. output: {
  28. name: 'es',
  29. path: path.resolve(epOutput, 'es'),
  30. },
  31. bundle: {
  32. path: `${PKG_NAME}/es`,
  33. },
  34. },
  35. cjs: {
  36. module: 'CommonJS',
  37. format: 'cjs',
  38. ext: 'js',
  39. output: {
  40. name: 'lib',
  41. path: path.resolve(epOutput, 'lib'),
  42. },
  43. bundle: {
  44. path: `${PKG_NAME}/lib`,
  45. },
  46. },
  47. }
  48. export const buildConfigEntries = Object.entries(buildConfig) as BuildConfigEntries
  49. export type BuildConfig = typeof buildConfig
  50. export type BuildConfigEntries = [Module, BuildInfo][]
  51. export const target = 'es2018'