perf!: allow tree-shaking unstorage drivers (#1516)
* perf: allow tree-shaking unstorage drivers * fix: allow overriding fsBase at runtime * fix: remove `fsBase` exportzio/stable
parent
415d36ce32
commit
fa44fae991
|
@ -22,6 +22,7 @@ export default defineNuxtModule({
|
||||||
...nuxt.options.alias,
|
...nuxt.options.alias,
|
||||||
'unstorage/drivers/fs': 'unenv/runtime/mock/proxy',
|
'unstorage/drivers/fs': 'unenv/runtime/mock/proxy',
|
||||||
'unstorage/drivers/cloudflare-kv-http': 'unenv/runtime/mock/proxy',
|
'unstorage/drivers/cloudflare-kv-http': 'unenv/runtime/mock/proxy',
|
||||||
|
'#storage-config': resolve('./runtime/storage-config'),
|
||||||
'node:events': 'unenv/runtime/node/events/index',
|
'node:events': 'unenv/runtime/node/events/index',
|
||||||
'#build-info': resolve('./runtime/build-info'),
|
'#build-info': resolve('./runtime/build-info'),
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
export const driver = undefined
|
||||||
|
export const fsBase = ''
|
|
@ -1,4 +1,4 @@
|
||||||
import { createResolver } from '@nuxt/kit'
|
import { createResolver, useNuxt } from '@nuxt/kit'
|
||||||
import Inspect from 'vite-plugin-inspect'
|
import Inspect from 'vite-plugin-inspect'
|
||||||
import { isCI, isDevelopment, isWindows } from 'std-env'
|
import { isCI, isDevelopment, isWindows } from 'std-env'
|
||||||
import { isPreview } from './config/env'
|
import { isPreview } from './config/env'
|
||||||
|
@ -86,6 +86,11 @@ export default defineNuxtConfig({
|
||||||
'postcss-nested': {},
|
'postcss-nested': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
appConfig: {
|
||||||
|
storage: {
|
||||||
|
driver: process.env.NUXT_STORAGE_DRIVER ?? (isCI ? 'cloudflare' : 'fs'),
|
||||||
|
},
|
||||||
|
},
|
||||||
runtimeConfig: {
|
runtimeConfig: {
|
||||||
adminKey: '',
|
adminKey: '',
|
||||||
cloudflare: {
|
cloudflare: {
|
||||||
|
@ -102,8 +107,7 @@ export default defineNuxtConfig({
|
||||||
defaultServer: 'm.webtoo.ls',
|
defaultServer: 'm.webtoo.ls',
|
||||||
},
|
},
|
||||||
storage: {
|
storage: {
|
||||||
driver: isCI ? 'cloudflare' : 'fs',
|
fsBase: 'node_modules/.cache/app',
|
||||||
fsBase: 'node_modules/.cache/servers',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
routeRules: {
|
routeRules: {
|
||||||
|
@ -126,6 +130,13 @@ export default defineNuxtConfig({
|
||||||
ignore: ['/settings'],
|
ignore: ['/settings'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
hooks: {
|
||||||
|
'nitro:config': function (config) {
|
||||||
|
const nuxt = useNuxt()
|
||||||
|
config.virtual = config.virtual || {}
|
||||||
|
config.virtual['#storage-config'] = `export const driver = ${JSON.stringify(nuxt.options.appConfig.storage.driver)}`
|
||||||
|
},
|
||||||
|
},
|
||||||
app: {
|
app: {
|
||||||
keepalive: true,
|
keepalive: true,
|
||||||
head: {
|
head: {
|
||||||
|
|
|
@ -14,29 +14,31 @@ import cached from './cache-driver'
|
||||||
|
|
||||||
// @ts-expect-error virtual import
|
// @ts-expect-error virtual import
|
||||||
import { env } from '#build-info'
|
import { env } from '#build-info'
|
||||||
|
// @ts-expect-error virtual import
|
||||||
|
import { driver } from '#storage-config'
|
||||||
|
|
||||||
import type { AppInfo } from '~/types'
|
import type { AppInfo } from '~/types'
|
||||||
import { APP_NAME } from '~/constants'
|
import { APP_NAME } from '~/constants'
|
||||||
|
|
||||||
const config = useRuntimeConfig()
|
|
||||||
|
|
||||||
const fs = _fs as typeof import('unstorage/dist/drivers/fs')['default']
|
const fs = _fs as typeof import('unstorage/dist/drivers/fs')['default']
|
||||||
const kv = _kv as typeof import('unstorage/dist/drivers/cloudflare-kv-http')['default']
|
const kv = _kv as typeof import('unstorage/dist/drivers/cloudflare-kv-http')['default']
|
||||||
const memory = _memory as typeof import('unstorage/dist/drivers/memory')['default']
|
const memory = _memory as typeof import('unstorage/dist/drivers/memory')['default']
|
||||||
|
|
||||||
const storage = useStorage() as Storage
|
const storage = useStorage() as Storage
|
||||||
|
|
||||||
if (config.storage.driver === 'fs') {
|
if (driver === 'fs') {
|
||||||
|
const config = useRuntimeConfig()
|
||||||
storage.mount('servers', fs({ base: config.storage.fsBase }))
|
storage.mount('servers', fs({ base: config.storage.fsBase }))
|
||||||
}
|
}
|
||||||
else if (config.storage.driver === 'cloudflare') {
|
else if (driver === 'cloudflare') {
|
||||||
|
const config = useRuntimeConfig()
|
||||||
storage.mount('servers', cached(kv({
|
storage.mount('servers', cached(kv({
|
||||||
accountId: config.cloudflare.accountId,
|
accountId: config.cloudflare.accountId,
|
||||||
namespaceId: config.cloudflare.namespaceId,
|
namespaceId: config.cloudflare.namespaceId,
|
||||||
apiToken: config.cloudflare.apiToken,
|
apiToken: config.cloudflare.apiToken,
|
||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
else if (config.storage.driver === 'memory') {
|
else if (driver === 'memory') {
|
||||||
storage.mount('servers', memory())
|
storage.mount('servers', memory())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue