mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-21 21:25:11 +00:00
fix(kit,nuxt,schema)!: remove other support for nuxt2/bridge (#28936)
This commit is contained in:
parent
2f0a28d47e
commit
a0ea790b80
@ -6,8 +6,6 @@ import { logger } from './logger'
|
||||
|
||||
/**
|
||||
* Register a directory to be scanned for components and imported only when used.
|
||||
*
|
||||
* Requires Nuxt 2.13+
|
||||
*/
|
||||
export async function addComponentsDir (dir: ComponentsDir, opts: { prepend?: boolean } = {}) {
|
||||
const nuxt = useNuxt()
|
||||
@ -23,8 +21,6 @@ export type AddComponentOptions = { name: string, filePath: string } & Partial<E
|
||||
|
||||
/**
|
||||
* Register a component by its name and filePath.
|
||||
*
|
||||
* Requires Nuxt 2.13+
|
||||
*/
|
||||
export async function addComponent (opts: AddComponentOptions) {
|
||||
const nuxt = useNuxt()
|
||||
|
@ -1,20 +1,15 @@
|
||||
import type { Import } from 'unimport'
|
||||
import type { ImportPresetWithDeprecation } from '@nuxt/schema'
|
||||
import { useNuxt } from './context'
|
||||
import { assertNuxtCompatibility } from './compatibility'
|
||||
import { toArray } from './utils'
|
||||
|
||||
export function addImports (imports: Import | Import[]) {
|
||||
assertNuxtCompatibility({ bridge: true })
|
||||
|
||||
useNuxt().hook('imports:extend', (_imports) => {
|
||||
_imports.push(...toArray(imports))
|
||||
})
|
||||
}
|
||||
|
||||
export function addImportsDir (dirs: string | string[], opts: { prepend?: boolean } = {}) {
|
||||
assertNuxtCompatibility({ bridge: true })
|
||||
|
||||
useNuxt().hook('imports:dirs', (_dirs: string[]) => {
|
||||
for (const dir of toArray(dirs)) {
|
||||
_dirs[opts.prepend ? 'unshift' : 'push'](dir)
|
||||
@ -22,8 +17,6 @@ export function addImportsDir (dirs: string | string[], opts: { prepend?: boolea
|
||||
})
|
||||
}
|
||||
export function addImportsSources (presets: ImportPresetWithDeprecation | ImportPresetWithDeprecation[]) {
|
||||
assertNuxtCompatibility({ bridge: true })
|
||||
|
||||
useNuxt().hook('imports:sources', (_presets: ImportPresetWithDeprecation[]) => {
|
||||
for (const preset of toArray(presets)) {
|
||||
_presets.push(preset)
|
||||
|
@ -5,7 +5,7 @@ import { useNuxt } from './context'
|
||||
import { logger } from './logger'
|
||||
import { addTemplate } from './template'
|
||||
|
||||
export function addLayout (this: any, template: NuxtTemplate | string, name?: string) {
|
||||
export function addLayout (template: NuxtTemplate | string, name?: string) {
|
||||
const nuxt = useNuxt()
|
||||
const { filename, src } = addTemplate(template)
|
||||
const layoutName = kebabCase(name || parse(filename).name).replace(/["']/g, '')
|
||||
|
@ -79,9 +79,9 @@ function _defineNuxtModule<
|
||||
}
|
||||
|
||||
// Module format is always a simple function
|
||||
async function normalizedModule (this: any, inlineOptions: Partial<TOptions>, nuxt: Nuxt): Promise<ModuleSetupReturn> {
|
||||
async function normalizedModule (inlineOptions: Partial<TOptions>, nuxt = tryUseNuxt()!): Promise<ModuleSetupReturn> {
|
||||
if (!nuxt) {
|
||||
nuxt = tryUseNuxt() || this.nuxt /* invoked by nuxt 2 */
|
||||
throw new TypeError('Cannot use module outside of Nuxt context')
|
||||
}
|
||||
|
||||
// Avoid duplicate installs
|
||||
|
@ -320,11 +320,6 @@ export async function writeTypes (nuxt: Nuxt) {
|
||||
await fsp.writeFile(declarationPath, GeneratedBy + '\n' + declaration)
|
||||
}
|
||||
|
||||
// This is needed for Nuxt 2 which clears the build directory again before building
|
||||
// https://github.com/nuxt/nuxt/blob/2.x/packages/builder/src/builder.js#L144
|
||||
// @ts-expect-error TODO: Nuxt 2 hook
|
||||
nuxt.hook('builder:prepared', writeFile)
|
||||
|
||||
await writeFile()
|
||||
}
|
||||
|
||||
|
@ -149,29 +149,12 @@ export const RemovePluginMetadataPlugin = (nuxt: Nuxt) => createUnplugin(() => {
|
||||
if (_node.type === 'ImportSpecifier' && (_node.imported.name === 'defineNuxtPlugin' || _node.imported.name === 'definePayloadPlugin')) {
|
||||
wrapperNames.add(_node.local.name)
|
||||
}
|
||||
if (_node.type === 'ExportDefaultDeclaration' && (_node.declaration.type === 'FunctionDeclaration' || _node.declaration.type === 'ArrowFunctionExpression')) {
|
||||
if ('params' in _node.declaration && _node.declaration.params.length > 1) {
|
||||
logger.warn(`Plugin \`${plugin.src}\` is in legacy Nuxt 2 format (context, inject) which is likely to be broken and will be ignored.`)
|
||||
s.overwrite(0, code.length, 'export default () => {}')
|
||||
wrapped = true // silence a duplicate error
|
||||
return
|
||||
}
|
||||
}
|
||||
if (_node.type !== 'CallExpression' || (_node as CallExpression).callee.type !== 'Identifier') { return }
|
||||
const node = _node as CallExpression & { start: number, end: number }
|
||||
const name = 'name' in node.callee && node.callee.name
|
||||
if (!name || !wrapperNames.has(name)) { return }
|
||||
wrapped = true
|
||||
|
||||
if (node.arguments[0].type !== 'ObjectExpression') {
|
||||
// TODO: Warn if legacy plugin format is detected
|
||||
if ('params' in node.arguments[0] && node.arguments[0].params.length > 1) {
|
||||
logger.warn(`Plugin \`${plugin.src}\` is in legacy Nuxt 2 format (context, inject) which is likely to be broken and will be ignored.`)
|
||||
s.overwrite(0, code.length, 'export default () => {}')
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Remove metadata that already has been extracted
|
||||
if (!('order' in plugin) && !('name' in plugin)) { return }
|
||||
for (const [argIndex, _arg] of node.arguments.entries()) {
|
||||
|
@ -40,7 +40,6 @@ describe('plugin-metadata', () => {
|
||||
it('should overwrite invalid plugins', () => {
|
||||
const invalidPlugins = [
|
||||
'export const plugin = {}',
|
||||
'export default function (ctx, inject) {}',
|
||||
]
|
||||
for (const plugin of invalidPlugins) {
|
||||
expect(transformPlugin.transform.call({ parse }, plugin, 'my-plugin.mjs').code).toBe('export default () => {}')
|
||||
|
@ -1,18 +1,10 @@
|
||||
export interface NuxtCompatibility {
|
||||
/**
|
||||
* Required nuxt version in semver format.
|
||||
* @example `^2.14.0` or `>=3.0.0-27219851.6e49637`.
|
||||
* @example `^3.2.0` or `>=3.13.0`.
|
||||
*/
|
||||
nuxt?: string
|
||||
|
||||
/**
|
||||
* Bridge constraint for Nuxt 2 support.
|
||||
*
|
||||
* - `true`: When using Nuxt 2, using bridge module is required.
|
||||
* - `false`: When using Nuxt 2, using bridge module is not supported.
|
||||
*/
|
||||
bridge?: boolean
|
||||
|
||||
/**
|
||||
* Mark a builder as incompatible, or require a particular version.
|
||||
*
|
||||
|
@ -1,3 +0,0 @@
|
||||
export default function previousPlugin (one, inject) {
|
||||
inject()
|
||||
}
|
Loading…
Reference in New Issue
Block a user