UNPKG

1.26 kBJavaScriptView Raw
1const { getGitRepoName } = require('@mara/devkit')
2const config = require('./index')
3const getEnv = require('./env')
4const { TARGET, HYBRID_PUBLIC_PATH, DEV_PUBLIC_PATH } = require('./const')
5const resolvePublicPath = require('../lib/resolvePublicPath')
6const { deployEnv, globalEnv, paths, target } = config
7const isDev = process.env.NODE_ENV === 'development'
8
9async function getPublicPath(view, version) {
10 if (isDev) return DEV_PUBLIC_PATH
11
12 // hybrid 使用相对路径引用本地资源
13 if (target === TARGET.APP) {
14 return HYBRID_PUBLIC_PATH
15 } else {
16 let repoName = ''
17 const pkgName = require(paths.packageJson).name
18
19 try {
20 repoName = await getGitRepoName()
21 } catch (e) {}
22
23 return resolvePublicPath(config.publicPath, deployEnv, {
24 // repo 优先
25 project: repoName || pkgName,
26 repo: repoName,
27 version,
28 view
29 })
30 }
31}
32
33module.exports = async function getContext({ version, view }) {
34 const publicPath = await getPublicPath(view, version)
35 const buildEnv = getEnv({
36 deployEnv,
37 globalEnv,
38 publicPath,
39 version
40 })
41
42 return {
43 entry: view,
44 version,
45 publicPath,
46 buildEnv,
47 // 优先读取 target,其次以 jsbridgeBuildType 回退
48 target
49 }
50}