manifest.ts 1.3 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2
import fs from 'fs'
import path from 'path'
fxy060608's avatar
fxy060608 已提交
3 4
import { extend } from '@vue/shared'
import { once, defaultRpx2Unit } from '@dcloudio/uni-shared'
fxy060608's avatar
fxy060608 已提交
5 6 7 8 9 10 11 12 13 14

import { parseJson } from './json'

export const parseManifestJson = (inputDir: string) => {
  return parseJson(
    fs.readFileSync(path.join(inputDir, 'manifest.json'), 'utf8')
  )
}

export const parseManifestJsonOnce = once(parseManifestJson)
fxy060608's avatar
fxy060608 已提交
15 16 17 18 19

export const parseRpx2UnitOnce = once((inputDir: string) => {
  const { h5 } = parseManifestJsonOnce(inputDir)
  return extend({}, defaultRpx2Unit, (h5 && h5.rpx) || {})
})
20 21 22 23 24 25 26 27 28

interface CompilerCompatConfig {
  MODE?: 2 | 3
}
function parseCompatConfig(inputDir: string): CompilerCompatConfig {
  return parseManifestJsonOnce(inputDir).compatConfig || {}
}

export const parseCompatConfigOnce = once(parseCompatConfig)
fxy060608's avatar
fxy060608 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

const defaultNetworkTimeout = {
  request: 60000,
  connectSocket: 60000,
  uploadFile: 60000,
  downloadFile: 60000,
}

export function normalizeNetworkTimeout(
  networkTimeout?: Partial<typeof defaultNetworkTimeout>
) {
  return {
    ...defaultNetworkTimeout,
    ...networkTimeout,
  }
}
fxy060608's avatar
fxy060608 已提交
45 46 47 48 49 50 51 52 53

export function getUniStatistics(inputDir: string, platform: UniApp.PLATFORM) {
  const manifest = parseManifestJsonOnce(inputDir)
  return extend(
    {},
    manifest.uniStatistics,
    manifest[platform] && manifest[platform].uniStatistics
  )
}