fix(nuxt): handle empty plugin files

This commit is contained in:
Daniel Roe 2024-11-17 11:52:05 -05:00
parent da7370dfda
commit d44408e87b
No known key found for this signature in database
GPG Key ID: CBC814C393D93268

View File

@ -125,18 +125,26 @@ export const RemovePluginMetadataPlugin = (nuxt: Nuxt) => createUnplugin(() => {
const plugin = nuxt.apps.default?.plugins.find(p => p.src === id) const plugin = nuxt.apps.default?.plugins.find(p => p.src === id)
if (!plugin) { return } if (!plugin) { return }
const s = new MagicString(code) if (!code.trim()) {
logger.warn(`Plugin \`${plugin.src}\` has no content.`)
return {
code: 'export default () => {}',
map: { mappings: '' },
}
}
const exports = findExports(code) const exports = findExports(code)
const defaultExport = exports.find(e => e.type === 'default' || e.name === 'default') const defaultExport = exports.find(e => e.type === 'default' || e.name === 'default')
if (!defaultExport) { if (!defaultExport) {
logger.warn(`Plugin \`${plugin.src}\` has no default export and will be ignored at build time. Add \`export default defineNuxtPlugin(() => {})\` to your plugin.`) logger.warn(`Plugin \`${plugin.src}\` has no default export and will be ignored at build time. Add \`export default defineNuxtPlugin(() => {})\` to your plugin.`)
s.overwrite(0, code.length, 'export default () => {}')
return { return {
code: s.toString(), code: 'export default () => {}',
map: nuxt.options.sourcemap.client || nuxt.options.sourcemap.server ? s.generateMap({ hires: true }) : null, map: { mappings: '' },
} }
} }
const s = new MagicString(code)
let wrapped = false let wrapped = false
const wrapperNames = new Set(['defineNuxtPlugin', 'definePayloadPlugin']) const wrapperNames = new Set(['defineNuxtPlugin', 'definePayloadPlugin'])