Skip to content

Commit

Permalink
perf: use granular imports for auto-importing composables (#964)
Browse files Browse the repository at this point in the history
  • Loading branch information
wattanx authored Nov 10, 2023
1 parent 2e0b043 commit d4f4f48
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 37 deletions.
2 changes: 1 addition & 1 deletion packages/bridge/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export async function setupAppBridge (_options: any) {
const nuxt = useNuxt()

// Setup aliases
nuxt.options.alias['#app'] = resolve(distDir, 'runtime/index')
nuxt.options.alias['#app'] = resolve(distDir, 'runtime')
nuxt.options.alias['nuxt3/app'] = nuxt.options.alias['#app']
nuxt.options.alias['nuxt/app'] = nuxt.options.alias['#app']
nuxt.options.alias['#build'] = nuxt.options.buildDir
Expand Down
63 changes: 32 additions & 31 deletions packages/bridge/src/imports/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,43 +10,44 @@ export const commonPresets: InlinePreset[] = [
}),
// vue-demi (mocked)
defineUnimportPreset({
from: '#app',
from: '#app/app',
imports: [
'isVue2',
'isVue3'
]
})
]

export const appPreset = defineUnimportPreset({
from: '#app',
imports: [
'useLazyAsyncData',
'refreshNuxtData',
'defineNuxtComponent',
'useNuxtApp',
'defineNuxtPlugin',
'useRuntimeConfig',
'useState',
'useLazyFetch',
'useCookie',
'useRequestHeaders',
'useRequestEvent',
'useRouter',
'useRoute',
'defineNuxtRouteMiddleware',
'navigateTo',
'abortNavigation',
'addRouteMiddleware',
'useNuxt2Meta',
'clearError',
'createError',
'isNuxtError',
'throwError',
'showError',
'useError'
]
})
const granularAppPresets: InlinePreset[] = [
{
imports: ['defineNuxtComponent', 'setNuxtAppInstance', 'useNuxtApp', 'defineNuxtPlugin'],
from: '#app/app'
},
{
imports: ['useRuntimeConfig', 'useNuxt2Meta', 'useRoute', 'useRouter', 'useState', 'abortNavigation', 'addRouteMiddleware', 'defineNuxtRouteMiddleware', 'navigateTo'],
from: '#app/composables'
},
{
imports: ['useLazyAsyncData', 'refreshNuxtData'],
from: '#app/asyncData'
},
{
imports: ['clearError', 'createError', 'isNuxtError', 'showError', 'useError', 'throwError'],
from: '#app/error'
},
{
imports: ['useLazyFetch'],
from: '#app/fetch'
},
{
imports: ['useCookie'],
from: '#app/cookie'
},
{
imports: ['useRequestHeaders', 'useRequestEvent'],
from: '#app/ssr'
}
]

export const vueKeys: Array<keyof typeof import('vue')> = [
// Lifecycle
Expand Down Expand Up @@ -125,7 +126,7 @@ const vueRouterPreset = defineUnimportPreset({

export const defaultPresets = [
...commonPresets,
appPreset,
...granularAppPresets,
vueRouterPreset,
vuePreset
]
2 changes: 1 addition & 1 deletion packages/bridge/src/runtime/app.plugin.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Vue, { version } from 'vue'
import { createHooks } from 'hookable'
import { setNuxtAppInstance } from '#app'
import { setNuxtAppInstance } from '#app/app'
import { globalMiddleware } from '#build/global-middleware'

// Reshape payload to match key `useLazyAsyncData` expects
Expand Down
2 changes: 1 addition & 1 deletion packages/bridge/src/runtime/capi.plugin.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defineNuxtPlugin } from '#app'
import { defineNuxtPlugin } from '#imports'

export default defineNuxtPlugin((nuxtApp) => {
const _originalSetup = nuxtApp.nuxt2Context.app.setup
Expand Down
2 changes: 1 addition & 1 deletion packages/bridge/src/runtime/nitro-bridge.server.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defineNuxtPlugin } from '#app'
import { defineNuxtPlugin } from '#imports'

const vueMetaRenderer = (nuxt) => {
const meta = nuxt.ssrContext.meta.inject({
Expand Down
2 changes: 1 addition & 1 deletion playground/middleware/redirect.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defineNuxtRouteMiddleware, abortNavigation } from '#app'
import { defineNuxtRouteMiddleware, abortNavigation } from '#imports'

export default defineNuxtRouteMiddleware((to) => {
if ('abort' in to.query) {
Expand Down
2 changes: 1 addition & 1 deletion playground/plugins/setup.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { onGlobalSetup, ref } from '@nuxtjs/composition-api'

import { defineNuxtPlugin, addRouteMiddleware, navigateTo } from '#app'
import { defineNuxtPlugin, addRouteMiddleware, navigateTo } from '#imports'

export default defineNuxtPlugin(() => {
const globalsetup = ref('🚧')
Expand Down

0 comments on commit d4f4f48

Please sign in to comment.