Repository: nuxt/nuxt
File: packages/schema/src/types/schema.ts (TypeScript)

Code before:
     * You can extend generated `.nuxt/tsconfig.json` using this option.
     *
     */
    tsConfig: 0 extends 1 & RawVueCompilerOptions ? TSConfig : TSConfig & { vueCompilerOptions?: RawVueCompilerOptions }

    /**
     * Generate a `*.vue` shim.
     *
     * We recommend instead letting the [official Vue extension](https://marketplace.visualstudio.com/items?itemName=Vue.volar) generate accurate types for your components.
     * Note that you may wish to set this to `true` if you are using other libraries, such as ESLint, that are unable to understand the type of `.vue` files.
     *
     * @default false
     */
    shim: boolean
  }

  esbuild: {
  /**
   * Configure shared esbuild options used within Nuxt and passed to other builders, such as Vite or Webpack.
   */
    options: import('esbuild').TransformOptions
  }

  oxc: {
    transform: {
      options: import('oxc-transform').TransformOptions
    }
  }

  /**
   * Configuration that will be passed directly to Vite.
   *
   * @see [Vite configuration docs](https://vite.dev/config) for more information.
   * Please note that not all vite options are supported in Nuxt.
   */
  vite: ViteConfig & { $client?: ViteConfig, $server?: ViteConfig }

  webpack: {
  /**
   * Nuxt uses `webpack-bundle-analyzer` to visualize your bundles and how to optimize them.
   *
   * Set to `true` to enable bundle analysis, or pass an object with options: [for webpack](https://github.com/webpack-contrib/webpack-bundle-analyzer#options-for-plugin) or [for vite](https://github.com/btd/rollup-plugin-visualizer#options).
   *
   * @example
   * ```js
   * analyze: {
   *   analyzerMode: 'static'
   * }
   * ```
   */
    analyze: boolean | { enabled?: boolean } & BundleAnalyzerPlugin.Options

Review comment (suggestion):
here, and above in `esbuild`, we could probably directly import the options (I think this is aholdover from the schema jsdoc transform)

Code after:
       * @see [esbuild loader](https://github.com/esbuild-kit/esbuild-loader)
       */
      esbuild: Omit<LoaderOptions, 'loader'>

      /**
       * @see [`file-loader` Options](https://github.com/webpack-contrib/file-loader#options)
       */
      file: {
        esModule: boolean

        limit: number
      }

      /**
       * @see [`file-loader` Options](https://github.com/webpack-contrib/file-loader#options)
       */
      fontUrl: {
        esModule: boolean

        limit: number
      }

      /**
       * @see [`file-loader` Options](https://github.com/webpack-contrib/file-loader#options)
       */
      imgUrl: {
        esModule: boolean

        limit: number
      }

      /**
       * @see [`pug` options](https://pugjs.org/api/reference.html#options)
       */
      pugPlain: PugOptions

      /**
       * See [vue-loader](https://github.com/vuejs/vue-loader) for available options.
       */
      vue: Partial<VueLoaderOptions>

      /**
       * See [css-loader](https://github.com/webpack-contrib/css-loader) for available options.
       */
      css: {
        importLoaders: number

        url: boolean | { filter: (url: string, resourcePath: string) => boolean }

        esModule: boolean
      }