index.ts 1.4 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3 4
import fs from 'fs'
import path from 'path'
import { parse } from 'jsonc-parser'

5 6 7
import { Plugin } from 'vite'

import { VitePluginUniResolvedOptions } from '..'
fxy060608's avatar
fxy060608 已提交
8
import { createCss } from './css'
9
import { createResolve } from './resolve'
10 11
import { createDefine } from './define'
import { createServer } from './server'
fxy060608's avatar
fxy060608 已提交
12
import { createBuild } from './build'
13
import { createOptimizeDeps } from './optimizeDeps'
fxy060608's avatar
fxy060608 已提交
14 15 16 17 18 19
function resolveBase(inputDir: string) {
  const manifest = parse(
    fs.readFileSync(path.join(inputDir, 'manifest.json'), 'utf8')
  )
  return (manifest.h5 && manifest.h5.router && manifest.h5.router.base) || '/'
}
20 21 22
export function createConfig(
  options: VitePluginUniResolvedOptions
): Plugin['config'] {
fxy060608's avatar
fxy060608 已提交
23
  return (config, env) => {
fxy060608's avatar
fxy060608 已提交
24 25 26 27 28 29 30
    const root = config.root || process.cwd()
    const inputDir = process.env.UNI_INPUT_DIR || path.resolve(root, 'src')
    const outputDir = process.env.UNI_OUTPUT_DIR || path.resolve(root, 'dist')
    options.root = root
    options.base = resolveBase(inputDir)
    options.inputDir = inputDir
    options.outputDir = outputDir
fxy060608's avatar
fxy060608 已提交
31
    options.command = env.command
32
    return {
fxy060608's avatar
fxy060608 已提交
33
      base: options.base,
fxy060608's avatar
fxy060608 已提交
34
      define: createDefine(options, env),
35
      resolve: createResolve(options),
36 37
      optimizeDeps: createOptimizeDeps(options),
      server: createServer(options),
fxy060608's avatar
fxy060608 已提交
38
      build: createBuild(options),
39 40 41 42
      css: createCss(options),
    }
  }
}