forked from npmx-dev/npmx.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-env.ts
More file actions
57 lines (53 loc) · 1.78 KB
/
build-env.ts
File metadata and controls
57 lines (53 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import type { BuildInfo, EnvType } from '../shared/types'
import { createResolver, defineNuxtModule } from 'nuxt/kit'
import { isCI } from 'std-env'
import { getEnv, getFileLastUpdated, version } from '../config/env'
const { resolve } = createResolver(import.meta.url)
export default defineNuxtModule({
meta: {
name: 'npmx:build-env',
},
async setup(_options, nuxt) {
let env: EnvType = 'dev'
nuxt.options.appConfig = nuxt.options.appConfig || {}
nuxt.options.appConfig.env = env
if (process.env.TEST) {
const time = new Date()
nuxt.options.appConfig.buildInfo = {
env,
version: '0.0.0',
commit: '704987bba88909f3782d792c224bde989569acb9',
shortCommit: '704987b',
branch: 'xxx',
time: time.getTime(),
privacyPolicyDate: time.toISOString(),
prNumber: null,
} satisfies BuildInfo
} else {
const [{ env: useEnv, commit, shortCommit, branch, prNumber }, privacyPolicyDate] =
await Promise.all([getEnv(nuxt.options.dev), getFileLastUpdated('app/pages/privacy.vue')])
env = useEnv
nuxt.options.appConfig.env = useEnv
nuxt.options.appConfig.buildInfo = {
version,
time: +Date.now(),
commit,
shortCommit,
branch,
env,
privacyPolicyDate,
prNumber,
} satisfies BuildInfo
}
nuxt.options.nitro.publicAssets = nuxt.options.nitro.publicAssets || []
if (env === 'dev') nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-dev') })
else if (env === 'canary' || env === 'preview' || !isCI)
nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-staging') })
},
})
declare module '@nuxt/schema' {
interface AppConfig {
env: BuildInfo['env']
buildInfo: BuildInfo
}
}