[READ-ONLY] a fast, modern browser for the npm registry
at main 57 lines 1.8 kB view raw
1import type { BuildInfo, EnvType } from '../shared/types' 2import { createResolver, defineNuxtModule } from 'nuxt/kit' 3import { isCI } from 'std-env' 4import { getEnv, getFileLastUpdated, version } from '../config/env' 5 6const { resolve } = createResolver(import.meta.url) 7 8export default defineNuxtModule({ 9 meta: { 10 name: 'npmx:build-env', 11 }, 12 async setup(_options, nuxt) { 13 let env: EnvType = 'dev' 14 nuxt.options.appConfig = nuxt.options.appConfig || {} 15 nuxt.options.appConfig.env = env 16 if (process.env.TEST) { 17 const time = new Date() 18 nuxt.options.appConfig.buildInfo = { 19 env, 20 version: '0.0.0', 21 commit: '704987bba88909f3782d792c224bde989569acb9', 22 shortCommit: '704987b', 23 branch: 'xxx', 24 time: time.getTime(), 25 privacyPolicyDate: time.toISOString(), 26 } satisfies BuildInfo 27 } else { 28 const [{ env: useEnv, commit, shortCommit, branch }, privacyPolicyDate] = await Promise.all([ 29 getEnv(nuxt.options.dev), 30 getFileLastUpdated('app/pages/privacy.vue'), 31 ]) 32 env = useEnv 33 nuxt.options.appConfig.env = useEnv 34 nuxt.options.appConfig.buildInfo = { 35 version, 36 time: +Date.now(), 37 commit, 38 shortCommit, 39 branch, 40 env, 41 privacyPolicyDate, 42 } satisfies BuildInfo 43 } 44 45 nuxt.options.nitro.publicAssets = nuxt.options.nitro.publicAssets || [] 46 if (env === 'dev') nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-dev') }) 47 else if (env === 'canary' || env === 'preview' || !isCI) 48 nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-staging') }) 49 }, 50}) 51 52declare module '@nuxt/schema' { 53 interface AppConfig { 54 env: BuildInfo['env'] 55 buildInfo: BuildInfo 56 } 57}