mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-25 15:15:19 +00:00
feat: use native esm for all packages (#539)
This commit is contained in:
parent
f21b7de3d1
commit
6e496373f3
8
.github/workflows/ci.yml
vendored
8
.github/workflows/ci.yml
vendored
@ -48,8 +48,8 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: yarn --immutable
|
run: yarn --immutable
|
||||||
|
|
||||||
- name: Stub
|
- name: Build
|
||||||
run: yarn stub
|
run: yarn build
|
||||||
|
|
||||||
- name: Test (unit)
|
- name: Test (unit)
|
||||||
run: yarn test:unit
|
run: yarn test:unit
|
||||||
@ -81,8 +81,8 @@ jobs:
|
|||||||
- name: Install dependencies (bridge fixture)
|
- name: Install dependencies (bridge fixture)
|
||||||
run: yarn --immutable && cd test/fixtures/bridge && yarn --immutable
|
run: yarn --immutable && cd test/fixtures/bridge && yarn --immutable
|
||||||
|
|
||||||
- name: Stub
|
- name: Build
|
||||||
run: yarn stub
|
run: yarn build
|
||||||
|
|
||||||
- name: Test (presets bridge)
|
- name: Test (presets bridge)
|
||||||
run: yarn test:bridge
|
run: yarn test:bridge
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "nuxt-framework",
|
"name": "nuxt-framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"type": "module",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"packages/*",
|
"packages/*",
|
||||||
"examples/*",
|
"examples/*",
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { defineBuildConfig } from 'unbuild'
|
import { defineBuildConfig } from 'unbuild'
|
||||||
|
|
||||||
export default defineBuildConfig({
|
export default defineBuildConfig({
|
||||||
|
emitCJS: false,
|
||||||
entries: [
|
entries: [
|
||||||
'src/module',
|
'src/module',
|
||||||
{ input: 'src/runtime/', outDir: 'dist/runtime', format: 'esm' }
|
{ input: 'src/runtime/', outDir: 'dist/runtime', format: 'esm' }
|
||||||
|
4
packages/bridge/module.cjs
Normal file
4
packages/bridge/module.cjs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
// CommonJS proxy to bypass jiti transforms from nuxt 2
|
||||||
|
module.exports = function (...args) {
|
||||||
|
return import('./dist/module.mjs').then(m => m.default.call(this, ...args))
|
||||||
|
}
|
@ -3,9 +3,11 @@
|
|||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"repository": "nuxt/framework",
|
"repository": "nuxt/framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/module.cjs",
|
"type": "module",
|
||||||
|
"exports": "./module.cjs",
|
||||||
"types": "./dist/index.d.ts",
|
"types": "./dist/index.d.ts",
|
||||||
"files": [
|
"files": [
|
||||||
|
"module.cjs",
|
||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@ -22,6 +24,7 @@
|
|||||||
"estree-walker": "^2.0.2",
|
"estree-walker": "^2.0.2",
|
||||||
"fs-extra": "^10.0.0",
|
"fs-extra": "^10.0.0",
|
||||||
"magic-string": "^0.25.7",
|
"magic-string": "^0.25.7",
|
||||||
|
"mlly": "^0.2.2",
|
||||||
"node-fetch": "^3.0.0",
|
"node-fetch": "^3.0.0",
|
||||||
"nuxi": "^0.10.0",
|
"nuxi": "^0.10.0",
|
||||||
"nuxt-swc": "^0.1.0",
|
"nuxt-swc": "^0.1.0",
|
||||||
|
@ -1,15 +1,24 @@
|
|||||||
// Based on https://github.com/webpack/webpack/blob/v4.46.0/lib/node/NodeMainTemplatePlugin.js#L81-L191
|
// Based on https://github.com/webpack/webpack/blob/v4.46.0/lib/node/NodeMainTemplatePlugin.js#L81-L191
|
||||||
|
|
||||||
|
import { createRequire } from 'module'
|
||||||
import type { Compiler } from 'webpack'
|
import type { Compiler } from 'webpack'
|
||||||
|
|
||||||
export class AsyncLoadingPlugin {
|
export class AsyncLoadingPlugin {
|
||||||
|
private opts: any
|
||||||
|
private Template: any
|
||||||
|
constructor (opts) {
|
||||||
|
this.opts = opts
|
||||||
|
const _require = createRequire(import.meta.url)
|
||||||
|
const TemplatePath = _require.resolve('webpack/lib/Template', { paths: [...this.opts.modulesDir] })
|
||||||
|
this.Template = _require(TemplatePath)
|
||||||
|
}
|
||||||
|
|
||||||
apply (compiler: Compiler) {
|
apply (compiler: Compiler) {
|
||||||
const Template = require('webpack/lib/Template')
|
|
||||||
compiler.hooks.compilation.tap('AsyncLoading', (compilation) => {
|
compiler.hooks.compilation.tap('AsyncLoading', (compilation) => {
|
||||||
const mainTemplate = compilation.mainTemplate
|
const mainTemplate = compilation.mainTemplate
|
||||||
mainTemplate.hooks.requireEnsure.tap(
|
mainTemplate.hooks.requireEnsure.tap(
|
||||||
'AsyncLoading',
|
'AsyncLoading',
|
||||||
(_source, chunk, hash) => {
|
(_source, chunk, hash) => {
|
||||||
|
const Template = this.Template
|
||||||
const chunkFilename = mainTemplate.outputOptions.chunkFilename
|
const chunkFilename = mainTemplate.outputOptions.chunkFilename
|
||||||
const chunkMaps = chunk.getChunkMaps()
|
const chunkMaps = chunk.getChunkMaps()
|
||||||
const insertMoreModules = [
|
const insertMoreModules = [
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
import { createRequire } from 'module'
|
||||||
import { useNuxt, addPlugin, addPluginTemplate, addVitePlugin, addWebpackPlugin } from '@nuxt/kit'
|
import { useNuxt, addPlugin, addPluginTemplate, addVitePlugin, addWebpackPlugin } from '@nuxt/kit'
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
|
|
||||||
import { distDir } from './dirs'
|
import { distDir } from './dirs'
|
||||||
import { KeyPlugin } from './capi-legacy-key-plugin'
|
import { KeyPlugin } from './capi-legacy-key-plugin'
|
||||||
|
|
||||||
@ -13,7 +13,8 @@ export function setupCAPIBridge (_options: any) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add composition-api support
|
// Add composition-api support
|
||||||
const vueCapiEntry = require.resolve('@vue/composition-api/dist/vue-composition-api.mjs')
|
const _require = createRequire(import.meta.url)
|
||||||
|
const vueCapiEntry = _require.resolve('@vue/composition-api/dist/vue-composition-api.mjs')
|
||||||
nuxt.options.alias['@vue/composition-api/dist/vue-composition-api.common.js'] = vueCapiEntry
|
nuxt.options.alias['@vue/composition-api/dist/vue-composition-api.common.js'] = vueCapiEntry
|
||||||
nuxt.options.alias['@vue/composition-api/dist/vue-composition-api.common.prod.js'] = vueCapiEntry
|
nuxt.options.alias['@vue/composition-api/dist/vue-composition-api.common.prod.js'] = vueCapiEntry
|
||||||
nuxt.options.alias['@vue/composition-api/dist/vue-composition-api.esm.js'] = vueCapiEntry
|
nuxt.options.alias['@vue/composition-api/dist/vue-composition-api.esm.js'] = vueCapiEntry
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { resolve } from 'pathe'
|
import { fileURLToPath } from 'url'
|
||||||
|
import { dirname, resolve } from 'pathe'
|
||||||
|
|
||||||
export const distDir = __dirname
|
export const distDir = dirname(fileURLToPath(import.meta.url))
|
||||||
export const pkgDir = resolve(distDir, '..')
|
export const pkgDir = resolve(distDir, '..')
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { createRequire } from 'module'
|
||||||
import { defineNuxtModule, installModule } from '@nuxt/kit'
|
import { defineNuxtModule, installModule } from '@nuxt/kit'
|
||||||
import { setupNitroBridge } from './nitro'
|
import { setupNitroBridge } from './nitro'
|
||||||
import { setupAppBridge } from './app'
|
import { setupAppBridge } from './app'
|
||||||
@ -30,14 +31,15 @@ export default defineNuxtModule({
|
|||||||
}
|
}
|
||||||
await setupCAPIBridge(opts.capi)
|
await setupCAPIBridge(opts.capi)
|
||||||
}
|
}
|
||||||
|
const _require = createRequire(import.meta.url)
|
||||||
if (opts.vite) {
|
if (opts.vite) {
|
||||||
await installModule(nuxt, require.resolve('nuxt-vite'))
|
await installModule(nuxt, _require.resolve('nuxt-vite'))
|
||||||
}
|
}
|
||||||
if (opts.postcss8) {
|
if (opts.postcss8) {
|
||||||
await installModule(nuxt, require.resolve('@nuxt/postcss8'))
|
await installModule(nuxt, _require.resolve('@nuxt/postcss8'))
|
||||||
}
|
}
|
||||||
if (opts.swc) {
|
if (opts.swc) {
|
||||||
await installModule(nuxt, require.resolve('nuxt-swc'))
|
await installModule(nuxt, _require.resolve('nuxt-swc'))
|
||||||
}
|
}
|
||||||
if (opts.resolve) {
|
if (opts.resolve) {
|
||||||
setupBetterResolve()
|
setupBetterResolve()
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
import { promises as fsp } from 'fs'
|
||||||
import fetch from 'node-fetch'
|
import fetch from 'node-fetch'
|
||||||
import { addPluginTemplate, useNuxt } from '@nuxt/kit'
|
import { addPluginTemplate, useNuxt } from '@nuxt/kit'
|
||||||
import { stringifyQuery } from 'ufo'
|
import { stringifyQuery } from 'ufo'
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import { readFile, writeFile } from 'fs-extra'
|
|
||||||
import { build, generate, prepare, getNitroContext, NitroContext, createDevServer, wpfs, resolveMiddleware } from '@nuxt/nitro'
|
import { build, generate, prepare, getNitroContext, NitroContext, createDevServer, wpfs, resolveMiddleware } from '@nuxt/nitro'
|
||||||
import { AsyncLoadingPlugin } from './async-loading'
|
import { AsyncLoadingPlugin } from './async-loading'
|
||||||
import { distDir } from './dirs'
|
import { distDir } from './dirs'
|
||||||
@ -68,7 +68,9 @@ export function setupNitroBridge () {
|
|||||||
const serverConfig = webpackConfigs.find(config => config.name === 'server')
|
const serverConfig = webpackConfigs.find(config => config.name === 'server')
|
||||||
if (serverConfig) {
|
if (serverConfig) {
|
||||||
serverConfig.plugins = serverConfig.plugins || []
|
serverConfig.plugins = serverConfig.plugins || []
|
||||||
serverConfig.plugins.push(new AsyncLoadingPlugin())
|
serverConfig.plugins.push(new AsyncLoadingPlugin({
|
||||||
|
modulesDir: nuxt.options.modulesDir
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -98,11 +100,11 @@ export function setupNitroBridge () {
|
|||||||
nuxt.hook('build:compiled', async ({ name }) => {
|
nuxt.hook('build:compiled', async ({ name }) => {
|
||||||
if (name === 'server') {
|
if (name === 'server') {
|
||||||
const jsServerEntry = resolve(nuxt.options.buildDir, 'dist/server/server.js')
|
const jsServerEntry = resolve(nuxt.options.buildDir, 'dist/server/server.js')
|
||||||
await writeFile(jsServerEntry.replace(/.js$/, '.cjs'), 'module.exports = require("./server.js")', 'utf8')
|
await fsp.writeFile(jsServerEntry.replace(/.js$/, '.cjs'), 'module.exports = require("./server.js")', 'utf8')
|
||||||
await writeFile(jsServerEntry.replace(/.js$/, '.mjs'), 'export { default } from "./server.cjs"', 'utf8')
|
await fsp.writeFile(jsServerEntry.replace(/.js$/, '.mjs'), 'export { default } from "./server.cjs"', 'utf8')
|
||||||
} else if (name === 'client') {
|
} else if (name === 'client') {
|
||||||
const manifest = await readFile(resolve(nuxt.options.buildDir, 'dist/server/client.manifest.json'), 'utf8')
|
const manifest = await fsp.readFile(resolve(nuxt.options.buildDir, 'dist/server/client.manifest.json'), 'utf8')
|
||||||
await writeFile(resolve(nuxt.options.buildDir, 'dist/server/client.manifest.mjs'), 'export default ' + manifest, 'utf8')
|
await fsp.writeFile(resolve(nuxt.options.buildDir, 'dist/server/client.manifest.mjs'), 'export default ' + manifest, 'utf8')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import { promisify } from 'util'
|
import { promisify } from 'util'
|
||||||
import defu from 'defu'
|
import defu from 'defu'
|
||||||
|
import enhancedResolve from 'enhanced-resolve'
|
||||||
import { CachedInputFileSystem, ResolveContext, ResolverFactory } from 'enhanced-resolve'
|
|
||||||
import { ResolveOptions } from 'webpack/types'
|
import { ResolveOptions } from 'webpack/types'
|
||||||
import { extendWebpackConfig, useNuxt } from '@nuxt/kit'
|
import { extendWebpackConfig, useNuxt } from '@nuxt/kit'
|
||||||
|
|
||||||
type UserResolveOptions = Parameters<typeof ResolverFactory['createResolver']>[0]
|
type UserResolveOptions = Parameters<typeof enhancedResolve.ResolverFactory['createResolver']>[0]
|
||||||
type ResolverOptions = Omit<UserResolveOptions, 'fileSystem'> & { fileSystem?: CachedInputFileSystem }
|
type ResolverOptions = Omit<UserResolveOptions, 'fileSystem'> & { fileSystem?: enhancedResolve.CachedInputFileSystem }
|
||||||
|
|
||||||
const DEFAULTS: UserResolveOptions = {
|
const DEFAULTS: UserResolveOptions = {
|
||||||
fileSystem: new CachedInputFileSystem(fs, 4000),
|
fileSystem: new enhancedResolve.CachedInputFileSystem(fs, 4000),
|
||||||
extensions: ['.ts', '.mjs', '.cjs', '.js', '.json'],
|
extensions: ['.ts', '.mjs', '.cjs', '.js', '.json'],
|
||||||
mainFields: ['module', 'main']
|
mainFields: ['module', 'main']
|
||||||
}
|
}
|
||||||
@ -18,11 +17,11 @@ const DEFAULTS: UserResolveOptions = {
|
|||||||
// Abstracted resolver factory which can be used in rollup, webpack, etc.
|
// Abstracted resolver factory which can be used in rollup, webpack, etc.
|
||||||
const createResolver = (resolveOptions: ResolverOptions) => {
|
const createResolver = (resolveOptions: ResolverOptions) => {
|
||||||
const options = defu(resolveOptions, DEFAULTS) as UserResolveOptions
|
const options = defu(resolveOptions, DEFAULTS) as UserResolveOptions
|
||||||
const resolver = ResolverFactory.createResolver(options)
|
const resolver = enhancedResolve.ResolverFactory.createResolver(options)
|
||||||
|
|
||||||
const root = options.roots?.[0] || '.'
|
const root = options.roots?.[0] || '.'
|
||||||
|
|
||||||
const promisifiedResolve = promisify(resolver.resolve.bind(resolver)) as (context: object, path: string, request: string, resolveContext: ResolveContext) => Promise<string | false>
|
const promisifiedResolve = promisify(resolver.resolve.bind(resolver)) as (context: object, path: string, request: string, resolveContext: enhancedResolve.ResolveContext) => Promise<string | false>
|
||||||
|
|
||||||
const resolve = (id: string, importer?: string) => promisifiedResolve({}, importer || root, id, {})
|
const resolve = (id: string, importer?: string) => promisifiedResolve({}, importer || root, id, {})
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import { defineBuildConfig } from 'unbuild'
|
|||||||
|
|
||||||
export default defineBuildConfig({
|
export default defineBuildConfig({
|
||||||
declaration: true,
|
declaration: true,
|
||||||
|
emitCJS: false,
|
||||||
entries: [
|
entries: [
|
||||||
{
|
{
|
||||||
input: 'src/config/schema/index',
|
input: 'src/config/schema/index',
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
"version": "0.10.0",
|
"version": "0.10.0",
|
||||||
"repository": "nuxt/framework",
|
"repository": "nuxt/framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.cjs",
|
"type": "module",
|
||||||
|
"exports": "./dist/index.mjs",
|
||||||
"types": "./dist/index.d.ts",
|
"types": "./dist/index.d.ts",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
@ -13,7 +14,7 @@
|
|||||||
"prepack": "unbuild"
|
"prepack": "unbuild"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/lodash": "^4.14.175",
|
"@types/lodash.template": "^4",
|
||||||
"unbuild": "latest"
|
"unbuild": "latest"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"hash-sum": "^2.0.0",
|
"hash-sum": "^2.0.0",
|
||||||
"hookable": "^5.0.0",
|
"hookable": "^5.0.0",
|
||||||
"jiti": "^1.12.6",
|
"jiti": "^1.12.6",
|
||||||
"lodash": "^4.17.21",
|
"lodash.template": "^4.5.0",
|
||||||
"pathe": "^0.2.0",
|
"pathe": "^0.2.0",
|
||||||
"rc9": "^1.2.0",
|
"rc9": "^1.2.0",
|
||||||
"scule": "^0.2.1",
|
"scule": "^0.2.1",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { existsSync, promises as fsp } from 'fs'
|
import { existsSync, promises as fsp } from 'fs'
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import dotenv from 'dotenv'
|
import { parse as parseDotEnv } from 'dotenv'
|
||||||
import { LoadNuxtConfigOptions } from './load'
|
import { LoadNuxtConfigOptions } from './load'
|
||||||
|
|
||||||
export interface LoadDotEnvOptions {
|
export interface LoadDotEnvOptions {
|
||||||
@ -62,7 +62,7 @@ export async function loadDotenv (opts: LoadDotEnvOptions) {
|
|||||||
const dotenvFile = resolve(opts.rootDir, opts.dotenvFile)
|
const dotenvFile = resolve(opts.rootDir, opts.dotenvFile)
|
||||||
|
|
||||||
if (existsSync(dotenvFile)) {
|
if (existsSync(dotenvFile)) {
|
||||||
const parsed = dotenv.parse(await fsp.readFile(dotenvFile, 'utf-8'))
|
const parsed = parseDotEnv(await fsp.readFile(dotenvFile, 'utf-8'))
|
||||||
Object.assign(env, parsed)
|
Object.assign(env, parsed)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,7 +627,7 @@ export default {
|
|||||||
* @example
|
* @example
|
||||||
* ```js
|
* ```js
|
||||||
* import fs from 'fs'
|
* import fs from 'fs'
|
||||||
* import path from 'pathe'
|
* import path from 'path'
|
||||||
* export default {
|
* export default {
|
||||||
* hooks: {
|
* hooks: {
|
||||||
* build: {
|
* build: {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import path from 'pathe'
|
import { parse, relative } from 'pathe'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import type { Nuxt, NuxtPluginTemplate, NuxtTemplate } from '../types/nuxt'
|
import type { Nuxt, NuxtPluginTemplate, NuxtTemplate } from '../types/nuxt'
|
||||||
import { chainFn } from '../utils/task'
|
import { chainFn } from '../utils/task'
|
||||||
@ -66,7 +66,7 @@ export function createModuleContainer (nuxt: Nuxt) {
|
|||||||
/** Register a custom layout. If its name is 'error' it will override the default error layout. */
|
/** Register a custom layout. If its name is 'error' it will override the default error layout. */
|
||||||
addLayout (tmpl: NuxtTemplate, name: string) {
|
addLayout (tmpl: NuxtTemplate, name: string) {
|
||||||
const { filename, src } = addTemplate(tmpl)
|
const { filename, src } = addTemplate(tmpl)
|
||||||
const layoutName = name || path.parse(src).name
|
const layoutName = name || parse(src).name
|
||||||
const layout = nuxt.options.layouts[layoutName]
|
const layout = nuxt.options.layouts[layoutName]
|
||||||
|
|
||||||
if (layout) {
|
if (layout) {
|
||||||
@ -88,7 +88,7 @@ export function createModuleContainer (nuxt: Nuxt) {
|
|||||||
* @param dst - Path to layout file within the buildDir (`.nuxt/<dst>.vue`)
|
* @param dst - Path to layout file within the buildDir (`.nuxt/<dst>.vue`)
|
||||||
*/
|
*/
|
||||||
addErrorLayout (dst: string) {
|
addErrorLayout (dst: string) {
|
||||||
const relativeBuildDir = path.relative(nuxt.options.rootDir, nuxt.options.buildDir)
|
const relativeBuildDir = relative(nuxt.options.rootDir, nuxt.options.buildDir)
|
||||||
nuxt.options.ErrorPage = `~/${relativeBuildDir}/${dst}`
|
nuxt.options.ErrorPage = `~/${relativeBuildDir}/${dst}`
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { existsSync, promises as fsp } from 'fs'
|
import { existsSync, promises as fsp } from 'fs'
|
||||||
import { basename, extname, parse, resolve } from 'pathe'
|
import { basename, extname, parse, resolve } from 'pathe'
|
||||||
import lodashTemplate from 'lodash/template'
|
import lodashTemplate from 'lodash.template'
|
||||||
import hash from 'hash-sum'
|
import hash from 'hash-sum'
|
||||||
import type { WebpackPluginInstance, Configuration as WebpackConfig } from 'webpack'
|
import type { WebpackPluginInstance, Configuration as WebpackConfig } from 'webpack'
|
||||||
import type { Plugin as VitePlugin, UserConfig as ViteConfig } from 'vite'
|
import type { Plugin as VitePlugin, UserConfig as ViteConfig } from 'vite'
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { getContext } from 'unctx'
|
import { getContext } from 'unctx'
|
||||||
import { requireModule, tryRequireModule, tryResolveModule } from './utils/cjs'
|
import { importModule, tryImportModule, tryResolveModule } from './utils/cjs'
|
||||||
import type { Nuxt } from './types/nuxt'
|
import type { Nuxt } from './types/nuxt'
|
||||||
import type { NuxtConfig } from './types/config'
|
import type { NuxtConfig } from './types/config'
|
||||||
import type { LoadNuxtConfigOptions } from './config/load'
|
import type { LoadNuxtConfigOptions } from './config/load'
|
||||||
@ -50,14 +50,14 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise<Nuxt> {
|
|||||||
|
|
||||||
// Nuxt 3
|
// Nuxt 3
|
||||||
if (opts.version !== 2) {
|
if (opts.version !== 2) {
|
||||||
const { loadNuxt } = requireModule('nuxt3', resolveOpts)
|
const { loadNuxt } = await importModule('nuxt3', resolveOpts)
|
||||||
const nuxt = await loadNuxt(opts)
|
const nuxt = await loadNuxt(opts)
|
||||||
return nuxt
|
return nuxt
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nuxt 2
|
// Nuxt 2
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const { loadNuxt } = tryRequireModule('nuxt-edge', resolveOpts) || requireModule('nuxt', resolveOpts)
|
const { loadNuxt } = await tryImportModule('nuxt-edge', resolveOpts) || await importModule('nuxt', resolveOpts)
|
||||||
const nuxt = await loadNuxt({
|
const nuxt = await loadNuxt({
|
||||||
rootDir: opts.rootDir,
|
rootDir: opts.rootDir,
|
||||||
for: opts.dev ? 'dev' : 'build',
|
for: opts.dev ? 'dev' : 'build',
|
||||||
@ -68,17 +68,17 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise<Nuxt> {
|
|||||||
return nuxt as Nuxt
|
return nuxt as Nuxt
|
||||||
}
|
}
|
||||||
|
|
||||||
export function buildNuxt (nuxt: Nuxt): Promise<any> {
|
export async function buildNuxt (nuxt: Nuxt): Promise<any> {
|
||||||
const resolveOpts = { paths: nuxt.options.rootDir }
|
const resolveOpts = { paths: nuxt.options.rootDir }
|
||||||
|
|
||||||
// Nuxt 3
|
// Nuxt 3
|
||||||
if (nuxt.options._majorVersion === 3) {
|
if (nuxt.options._majorVersion === 3) {
|
||||||
const { build } = requireModule('nuxt3', resolveOpts)
|
const { build } = await importModule('nuxt3', resolveOpts)
|
||||||
return build(nuxt)
|
return build(nuxt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nuxt 2
|
// Nuxt 2
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const { build } = tryRequireModule('nuxt-edge', resolveOpts) || requireModule('nuxt', resolveOpts)
|
const { build } = tryImportModule('nuxt-edge', resolveOpts) || tryImportModule('nuxt', resolveOpts)
|
||||||
return build(nuxt)
|
return build(nuxt)
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
|
import { pathToFileURL } from 'url'
|
||||||
import { join, normalize } from 'pathe'
|
import { join, normalize } from 'pathe'
|
||||||
import jiti from 'jiti'
|
import jiti from 'jiti'
|
||||||
|
|
||||||
// TODO: use create-require for jest environment
|
// TODO: use create-require for jest environment
|
||||||
const _require = jiti(process.cwd())
|
const _require = jiti(process.cwd(), { interopDefault: true })
|
||||||
|
|
||||||
export interface ResolveModuleOptions {
|
export interface ResolveModuleOptions {
|
||||||
paths?: string | string[]
|
paths?: string | string[]
|
||||||
@ -125,6 +126,15 @@ export function requireModule (id: string, opts: RequireModuleOptions = {}) {
|
|||||||
return requiredModule
|
return requiredModule
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function importModule (id: string, opts: RequireModuleOptions = {}) {
|
||||||
|
const resolvedPath = resolveModule(id, opts)
|
||||||
|
return import(pathToFileURL(resolvedPath).href)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function tryImportModule (id: string, opts: RequireModuleOptions = {}) {
|
||||||
|
return importModule(id, opts).catch(() => undefined)
|
||||||
|
}
|
||||||
|
|
||||||
/** Try to require a module, but don't emit an error if the module can't be required. */
|
/** Try to require a module, but don't emit an error if the module can't be required. */
|
||||||
export function tryRequireModule (id: string, opts: RequireModuleOptions = {}) {
|
export function tryRequireModule (id: string, opts: RequireModuleOptions = {}) {
|
||||||
try {
|
try {
|
||||||
|
@ -2,6 +2,7 @@ import { defineBuildConfig } from 'unbuild'
|
|||||||
|
|
||||||
export default defineBuildConfig({
|
export default defineBuildConfig({
|
||||||
declaration: true,
|
declaration: true,
|
||||||
|
emitCJS: false,
|
||||||
entries: [
|
entries: [
|
||||||
'src/index',
|
'src/index',
|
||||||
{ input: 'src/runtime/', outDir: 'dist/runtime', format: 'esm' },
|
{ input: 'src/runtime/', outDir: 'dist/runtime', format: 'esm' },
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
export default function () {
|
|
||||||
throw new Error('Nitro compat for nuxt2 moved to nuxt bridge. Please check documentation for more details.')
|
|
||||||
}
|
|
@ -2,12 +2,12 @@
|
|||||||
"name": "@nuxt/nitro",
|
"name": "@nuxt/nitro",
|
||||||
"version": "0.10.0",
|
"version": "0.10.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.cjs",
|
"type": "module",
|
||||||
|
"exports": "./dist/index.mjs",
|
||||||
"types": "./types/index.d.ts",
|
"types": "./types/index.d.ts",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
"types",
|
"types"
|
||||||
"compat.js"
|
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prepack": "unbuild"
|
"prepack": "unbuild"
|
||||||
@ -50,6 +50,7 @@
|
|||||||
"jiti": "^1.12.6",
|
"jiti": "^1.12.6",
|
||||||
"listhen": "^0.2.4",
|
"listhen": "^0.2.4",
|
||||||
"mime": "^2.5.2",
|
"mime": "^2.5.2",
|
||||||
|
"mlly": "^0.2.2",
|
||||||
"node-fetch": "^3.0.0",
|
"node-fetch": "^3.0.0",
|
||||||
"ohmyfetch": "^0.3.1",
|
"ohmyfetch": "^0.3.1",
|
||||||
"ora": "^6.0.1",
|
"ora": "^6.0.1",
|
||||||
@ -65,7 +66,6 @@
|
|||||||
"ufo": "^0.7.9",
|
"ufo": "^0.7.9",
|
||||||
"unenv": "^0.3.10",
|
"unenv": "^0.3.10",
|
||||||
"unstorage": "^0.2.8",
|
"unstorage": "^0.2.8",
|
||||||
"upath": "^2.0.1",
|
|
||||||
"vue": "3.2.19",
|
"vue": "3.2.19",
|
||||||
"vue-bundle-renderer": "^0.3.1",
|
"vue-bundle-renderer": "^0.3.1",
|
||||||
"vue-server-renderer": "^2.6.14"
|
"vue-server-renderer": "^2.6.14"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { resolve, join } from 'pathe'
|
import { resolve, join } from 'pathe'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { rollup, watch as rollupWatch } from 'rollup'
|
import { rollup, watch as rollupWatch } from 'rollup'
|
||||||
import { readFile, emptyDir, copy } from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
import { printFSTree } from './utils/tree'
|
import { printFSTree } from './utils/tree'
|
||||||
import { getRollupConfig } from './rollup/config'
|
import { getRollupConfig } from './rollup/config'
|
||||||
import { hl, prettyPath, serializeTemplate, writeFile, isDirectory } from './utils'
|
import { hl, prettyPath, serializeTemplate, writeFile, isDirectory } from './utils'
|
||||||
@ -24,7 +24,7 @@ export async function prepare (nitroContext: NitroContext) {
|
|||||||
|
|
||||||
async function cleanupDir (dir: string) {
|
async function cleanupDir (dir: string) {
|
||||||
consola.info('Cleaning up', prettyPath(dir))
|
consola.info('Cleaning up', prettyPath(dir))
|
||||||
await emptyDir(dir)
|
await fse.emptyDir(dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function generate (nitroContext: NitroContext) {
|
export async function generate (nitroContext: NitroContext) {
|
||||||
@ -32,12 +32,12 @@ export async function generate (nitroContext: NitroContext) {
|
|||||||
|
|
||||||
const clientDist = resolve(nitroContext._nuxt.buildDir, 'dist/client')
|
const clientDist = resolve(nitroContext._nuxt.buildDir, 'dist/client')
|
||||||
if (await isDirectory(clientDist)) {
|
if (await isDirectory(clientDist)) {
|
||||||
await copy(clientDist, join(nitroContext.output.publicDir, nitroContext._nuxt.publicPath))
|
await fse.copy(clientDist, join(nitroContext.output.publicDir, nitroContext._nuxt.publicPath))
|
||||||
}
|
}
|
||||||
|
|
||||||
const publicDir = nitroContext._nuxt.publicDir
|
const publicDir = nitroContext._nuxt.publicDir
|
||||||
if (await isDirectory(publicDir)) {
|
if (await isDirectory(publicDir)) {
|
||||||
await copy(publicDir, nitroContext.output.publicDir)
|
await fse.copy(publicDir, nitroContext.output.publicDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
consola.success('Generated public ' + prettyPath(nitroContext.output.publicDir))
|
consola.success('Generated public ' + prettyPath(nitroContext.output.publicDir))
|
||||||
@ -48,7 +48,7 @@ export async function build (nitroContext: NitroContext) {
|
|||||||
const htmlSrc = resolve(nitroContext._nuxt.buildDir, `views/${{ 2: 'app', 3: 'document' }[2]}.template.html`)
|
const htmlSrc = resolve(nitroContext._nuxt.buildDir, `views/${{ 2: 'app', 3: 'document' }[2]}.template.html`)
|
||||||
const htmlTemplate = { src: htmlSrc, contents: '', dst: '', compiled: '' }
|
const htmlTemplate = { src: htmlSrc, contents: '', dst: '', compiled: '' }
|
||||||
htmlTemplate.dst = htmlTemplate.src.replace(/.html$/, '.mjs').replace('app.', 'document.')
|
htmlTemplate.dst = htmlTemplate.src.replace(/.html$/, '.mjs').replace('app.', 'document.')
|
||||||
htmlTemplate.contents = nitroContext.vfs[htmlTemplate.src] || await readFile(htmlTemplate.src, 'utf-8')
|
htmlTemplate.contents = nitroContext.vfs[htmlTemplate.src] || await fse.readFile(htmlTemplate.src, 'utf-8')
|
||||||
await nitroContext._internal.hooks.callHook('nitro:document', htmlTemplate)
|
await nitroContext._internal.hooks.callHook('nitro:document', htmlTemplate)
|
||||||
htmlTemplate.compiled = 'export default ' + serializeTemplate(htmlTemplate.contents)
|
htmlTemplate.compiled = 'export default ' + serializeTemplate(htmlTemplate.contents)
|
||||||
await writeFile(htmlTemplate.dst, htmlTemplate.compiled)
|
await writeFile(htmlTemplate.dst, htmlTemplate.compiled)
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/* eslint-disable no-use-before-define */
|
/* eslint-disable no-use-before-define */
|
||||||
|
import { resolve } from 'pathe'
|
||||||
import { resolve, dirname } from 'pathe'
|
|
||||||
import defu from 'defu'
|
import defu from 'defu'
|
||||||
import { createHooks, Hookable, NestedHooks } from 'hookable'
|
import { createHooks, Hookable, NestedHooks } from 'hookable'
|
||||||
import type { Preset } from 'unenv'
|
import type { Preset } from 'unenv'
|
||||||
@ -13,6 +12,7 @@ import type { AssetOptions } from './rollup/plugins/assets'
|
|||||||
import type { ServerMiddleware } from './server/middleware'
|
import type { ServerMiddleware } from './server/middleware'
|
||||||
import type { RollupConfig } from './rollup/config'
|
import type { RollupConfig } from './rollup/config'
|
||||||
import type { Options as EsbuildOptions } from './rollup/plugins/esbuild'
|
import type { Options as EsbuildOptions } from './rollup/plugins/esbuild'
|
||||||
|
import { runtimeDir } from './dirs'
|
||||||
|
|
||||||
export interface NitroHooks {
|
export interface NitroHooks {
|
||||||
'nitro:document': (htmlTemplate: { src: string, contents: string, dst: string, compiled: string }) => void
|
'nitro:document': (htmlTemplate: { src: string, contents: string, dst: string, compiled: string }) => void
|
||||||
@ -136,7 +136,7 @@ export function getNitroContext (nuxtOptions: NuxtOptions, input: NitroInput): N
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
_internal: {
|
_internal: {
|
||||||
runtimeDir: resolve(dirname(require.resolve('@nuxt/nitro')), 'runtime'),
|
runtimeDir,
|
||||||
hooks: createHooks<NitroHooks>()
|
hooks: createHooks<NitroHooks>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
packages/nitro/src/dirs.ts
Normal file
6
packages/nitro/src/dirs.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { fileURLToPath } from 'url'
|
||||||
|
import { dirname, resolve } from 'pathe'
|
||||||
|
|
||||||
|
export const distDir = dirname(fileURLToPath(import.meta.url))
|
||||||
|
export const pkgDir = resolve(distDir, '..')
|
||||||
|
export const runtimeDir = resolve(distDir, 'runtime')
|
@ -1,6 +1,6 @@
|
|||||||
|
import { createWriteStream } from 'fs'
|
||||||
import archiver from 'archiver'
|
import archiver from 'archiver'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { createWriteStream } from 'fs-extra'
|
|
||||||
import { join, resolve } from 'pathe'
|
import { join, resolve } from 'pathe'
|
||||||
import { prettyPath, writeFile } from '../utils'
|
import { prettyPath, writeFile } from '../utils'
|
||||||
import { NitroPreset, NitroContext } from '../context'
|
import { NitroPreset, NitroContext } from '../context'
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { existsSync, writeFile } from 'fs-extra'
|
import { existsSync, promises as fsp } from 'fs'
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { extendPreset, prettyPath } from '../utils'
|
import { extendPreset, prettyPath } from '../utils'
|
||||||
@ -62,17 +62,17 @@ if ('serviceWorker' in navigator) {
|
|||||||
tmpl.compiled = tmpl.compiled.replace('</body>', script + '</body>')
|
tmpl.compiled = tmpl.compiled.replace('</body>', script + '</body>')
|
||||||
},
|
},
|
||||||
async 'nitro:compiled' ({ output }: NitroContext) {
|
async 'nitro:compiled' ({ output }: NitroContext) {
|
||||||
await writeFile(resolve(output.publicDir, 'sw.js'), `self.importScripts('${input._nuxt.routerBase}_server/index.mjs');`)
|
await fsp.writeFile(resolve(output.publicDir, 'sw.js'), `self.importScripts('${input._nuxt.routerBase}_server/index.mjs');`, 'utf8')
|
||||||
|
|
||||||
// Temp fix
|
// Temp fix
|
||||||
if (!existsSync(resolve(output.publicDir, 'index.html'))) {
|
if (!existsSync(resolve(output.publicDir, 'index.html'))) {
|
||||||
await writeFile(resolve(output.publicDir, 'index.html'), html)
|
await fsp.writeFile(resolve(output.publicDir, 'index.html'), html, 'utf8')
|
||||||
}
|
}
|
||||||
if (!existsSync(resolve(output.publicDir, '200.html'))) {
|
if (!existsSync(resolve(output.publicDir, '200.html'))) {
|
||||||
await writeFile(resolve(output.publicDir, '200.html'), html)
|
await fsp.writeFile(resolve(output.publicDir, '200.html'), html, 'utf8')
|
||||||
}
|
}
|
||||||
if (!existsSync(resolve(output.publicDir, '404.html'))) {
|
if (!existsSync(resolve(output.publicDir, '404.html'))) {
|
||||||
await writeFile(resolve(output.publicDir, '404.html'), html)
|
await fsp.writeFile(resolve(output.publicDir, '404.html'), html, 'utf8')
|
||||||
}
|
}
|
||||||
consola.info('Ready to deploy to static hosting:', prettyPath(output.publicDir as string))
|
consola.info('Ready to deploy to static hosting:', prettyPath(output.publicDir as string))
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
import { createRequire } from 'module'
|
||||||
import { join, relative, resolve } from 'pathe'
|
import { join, relative, resolve } from 'pathe'
|
||||||
import { existsSync, readJSONSync } from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import globby from 'globby'
|
import globby from 'globby'
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ export const firebase: NitroPreset = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function writeRoutes ({ output: { publicDir, serverDir }, _nuxt: { rootDir } }: NitroContext) {
|
async function writeRoutes ({ output: { publicDir, serverDir }, _nuxt: { rootDir } }: NitroContext) {
|
||||||
if (!existsSync(join(rootDir, 'firebase.json'))) {
|
if (!fse.existsSync(join(rootDir, 'firebase.json'))) {
|
||||||
const firebase = {
|
const firebase = {
|
||||||
functions: {
|
functions: {
|
||||||
source: relative(rootDir, serverDir)
|
source: relative(rootDir, serverDir)
|
||||||
@ -38,20 +39,22 @@ async function writeRoutes ({ output: { publicDir, serverDir }, _nuxt: { rootDir
|
|||||||
await writeFile(resolve(rootDir, 'firebase.json'), JSON.stringify(firebase))
|
await writeFile(resolve(rootDir, 'firebase.json'), JSON.stringify(firebase))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const _require = createRequire(import.meta.url)
|
||||||
|
|
||||||
const jsons = await globby(`${serverDir}/node_modules/**/package.json`)
|
const jsons = await globby(`${serverDir}/node_modules/**/package.json`)
|
||||||
const prefixLength = `${serverDir}/node_modules/`.length
|
const prefixLength = `${serverDir}/node_modules/`.length
|
||||||
const suffixLength = '/package.json'.length
|
const suffixLength = '/package.json'.length
|
||||||
const dependencies = jsons.reduce((obj, packageJson) => {
|
const dependencies = jsons.reduce((obj, packageJson) => {
|
||||||
const dirname = packageJson.slice(prefixLength, -suffixLength)
|
const dirname = packageJson.slice(prefixLength, -suffixLength)
|
||||||
if (!dirname.includes('node_modules')) {
|
if (!dirname.includes('node_modules')) {
|
||||||
obj[dirname] = require(packageJson).version
|
obj[dirname] = _require(packageJson).version
|
||||||
}
|
}
|
||||||
return obj
|
return obj
|
||||||
}, {} as Record<string, string>)
|
}, {} as Record<string, string>)
|
||||||
|
|
||||||
let nodeVersion = '12'
|
let nodeVersion = '12'
|
||||||
try {
|
try {
|
||||||
const currentNodeVersion = readJSONSync(join(rootDir, 'package.json')).engines.node
|
const currentNodeVersion = fse.readJSONSync(join(rootDir, 'package.json')).engines.node
|
||||||
if (['12', '10'].includes(currentNodeVersion)) {
|
if (['12', '10'].includes(currentNodeVersion)) {
|
||||||
nodeVersion = currentNodeVersion
|
nodeVersion = currentNodeVersion
|
||||||
}
|
}
|
||||||
@ -66,8 +69,8 @@ async function writeRoutes ({ output: { publicDir, serverDir }, _nuxt: { rootDir
|
|||||||
dependencies,
|
dependencies,
|
||||||
devDependencies: {
|
devDependencies: {
|
||||||
'firebase-functions-test': 'latest',
|
'firebase-functions-test': 'latest',
|
||||||
'firebase-admin': require('firebase-admin/package.json').version,
|
'firebase-admin': _require('firebase-admin/package.json').version,
|
||||||
'firebase-functions': require('firebase-functions/package.json')
|
'firebase-functions': _require('firebase-functions/package.json')
|
||||||
.version
|
.version
|
||||||
},
|
},
|
||||||
engines: { node: nodeVersion }
|
engines: { node: nodeVersion }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
import { existsSync, promises as fsp } from 'fs'
|
||||||
import { join } from 'pathe'
|
import { join } from 'pathe'
|
||||||
import { existsSync, readFile, writeFile } from 'fs-extra'
|
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { extendPreset } from '../utils'
|
import { extendPreset } from '../utils'
|
||||||
import { NitroContext, NitroPreset } from '../context'
|
import { NitroContext, NitroPreset } from '../context'
|
||||||
@ -15,7 +15,7 @@ export const netlify: NitroPreset = extendPreset(lambda, {
|
|||||||
const redirectsPath = join(ctx.output.publicDir, '_redirects')
|
const redirectsPath = join(ctx.output.publicDir, '_redirects')
|
||||||
let contents = '/* /.netlify/functions/server 200'
|
let contents = '/* /.netlify/functions/server 200'
|
||||||
if (existsSync(redirectsPath)) {
|
if (existsSync(redirectsPath)) {
|
||||||
const currentRedirects = await readFile(redirectsPath, 'utf-8')
|
const currentRedirects = await fsp.readFile(redirectsPath, 'utf-8')
|
||||||
if (currentRedirects.match(/^\/\* /m)) {
|
if (currentRedirects.match(/^\/\* /m)) {
|
||||||
consola.info('Not adding Nitro fallback to `_redirects` (as an existing fallback was found).')
|
consola.info('Not adding Nitro fallback to `_redirects` (as an existing fallback was found).')
|
||||||
return
|
return
|
||||||
@ -23,7 +23,7 @@ export const netlify: NitroPreset = extendPreset(lambda, {
|
|||||||
consola.info('Adding Nitro fallback to `_redirects` to handle all unmatched routes.')
|
consola.info('Adding Nitro fallback to `_redirects` to handle all unmatched routes.')
|
||||||
contents = currentRedirects + '\n' + contents
|
contents = currentRedirects + '\n' + contents
|
||||||
}
|
}
|
||||||
await writeFile(redirectsPath, contents)
|
await fsp.writeFile(redirectsPath, contents)
|
||||||
},
|
},
|
||||||
'nitro:rollup:before' (ctx: NitroContext) {
|
'nitro:rollup:before' (ctx: NitroContext) {
|
||||||
ctx.rollupConfig.output.entryFileNames = 'server.ts'
|
ctx.rollupConfig.output.entryFileNames = 'server.ts'
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { pathToFileURL } from 'url'
|
import { pathToFileURL } from 'url'
|
||||||
import { dirname, join, normalize, relative, resolve } from 'pathe'
|
import { createRequire } from 'module'
|
||||||
|
import { dirname, join, relative, resolve } from 'pathe'
|
||||||
import type { InputOptions, OutputOptions } from 'rollup'
|
import type { InputOptions, OutputOptions } from 'rollup'
|
||||||
import defu from 'defu'
|
import defu from 'defu'
|
||||||
import { terser } from 'rollup-plugin-terser'
|
import { terser } from 'rollup-plugin-terser'
|
||||||
@ -15,7 +16,8 @@ import * as unenv from 'unenv'
|
|||||||
|
|
||||||
import type { Preset } from 'unenv'
|
import type { Preset } from 'unenv'
|
||||||
import { NitroContext } from '../context'
|
import { NitroContext } from '../context'
|
||||||
import { resolvePath, MODULE_DIR } from '../utils'
|
import { resolvePath } from '../utils'
|
||||||
|
import { pkgDir } from '../dirs'
|
||||||
|
|
||||||
import { dynamicRequire } from './plugins/dynamic-require'
|
import { dynamicRequire } from './plugins/dynamic-require'
|
||||||
import { externals } from './plugins/externals'
|
import { externals } from './plugins/externals'
|
||||||
@ -63,10 +65,11 @@ export const getRollupConfig = (nitroContext: NitroContext) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: #590
|
// TODO: #590
|
||||||
|
const _require = createRequire(import.meta.url)
|
||||||
if (nitroContext._nuxt.majorVersion === 3) {
|
if (nitroContext._nuxt.majorVersion === 3) {
|
||||||
env.alias['vue/server-renderer'] = 'vue/server-renderer'
|
env.alias['vue/server-renderer'] = 'vue/server-renderer'
|
||||||
env.alias['vue/compiler-sfc'] = 'vue/compiler-sfc'
|
env.alias['vue/compiler-sfc'] = 'vue/compiler-sfc'
|
||||||
env.alias.vue = require.resolve(`vue/dist/vue.cjs${nitroContext._nuxt.dev ? '' : '.prod'}.js`)
|
env.alias.vue = _require.resolve(`vue/dist/vue.cjs${nitroContext._nuxt.dev ? '' : '.prod'}.js`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const buildServerDir = join(nitroContext._nuxt.buildDir, 'dist/server')
|
const buildServerDir = join(nitroContext._nuxt.buildDir, 'dist/server')
|
||||||
@ -216,8 +219,8 @@ export const getRollupConfig = (nitroContext: NitroContext) => {
|
|||||||
rollupConfig.plugins.push(alias({
|
rollupConfig.plugins.push(alias({
|
||||||
entries: {
|
entries: {
|
||||||
'#nitro': nitroContext._internal.runtimeDir,
|
'#nitro': nitroContext._internal.runtimeDir,
|
||||||
'#nitro-renderer': normalize(require.resolve(resolve(nitroContext._internal.runtimeDir, 'app', renderer))),
|
'#nitro-renderer': resolve(nitroContext._internal.runtimeDir, 'app', renderer),
|
||||||
'#config': normalize(require.resolve(resolve(nitroContext._internal.runtimeDir, 'app/config'))),
|
'#config': resolve(nitroContext._internal.runtimeDir, 'app/config'),
|
||||||
'#nitro-vue-renderer': vue2ServerRenderer,
|
'#nitro-vue-renderer': vue2ServerRenderer,
|
||||||
// Only file and data URLs are supported by the default ESM loader on Windows (#427)
|
// Only file and data URLs are supported by the default ESM loader on Windows (#427)
|
||||||
'#build': nitroContext._nuxt.dev && process.platform === 'win32'
|
'#build': nitroContext._nuxt.dev && process.platform === 'win32'
|
||||||
@ -234,7 +237,7 @@ export const getRollupConfig = (nitroContext: NitroContext) => {
|
|||||||
const moduleDirectories = [
|
const moduleDirectories = [
|
||||||
resolve(nitroContext._nuxt.rootDir, 'node_modules'),
|
resolve(nitroContext._nuxt.rootDir, 'node_modules'),
|
||||||
...nitroContext._nuxt.modulesDir,
|
...nitroContext._nuxt.modulesDir,
|
||||||
resolve(MODULE_DIR, '../node_modules'),
|
resolve(pkgDir, '../node_modules'),
|
||||||
'node_modules'
|
'node_modules'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
|
import { pathToFileURL } from 'url'
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import globby from 'globby'
|
import globby from 'globby'
|
||||||
import type { Plugin } from 'rollup'
|
import type { Plugin } from 'rollup'
|
||||||
import { serializeImportName } from '../../utils'
|
import { serializeImportName } from '../../utils'
|
||||||
|
|
||||||
const PLUGIN_NAME = 'dynamic-require'
|
const PLUGIN_NAME = 'dynamic-require'
|
||||||
const HELPER_DYNAMIC = `\0${PLUGIN_NAME}.js`
|
const HELPER_DYNAMIC = `\0${PLUGIN_NAME}.mjs`
|
||||||
const DYNAMIC_REQUIRE_RE = /import\("\.\/" ?\+(.*)\).then/g
|
const DYNAMIC_REQUIRE_RE = /import\("\.\/" ?\+(.*)\).then/g
|
||||||
|
|
||||||
interface Options {
|
interface Options {
|
||||||
@ -57,24 +58,25 @@ export function dynamicRequire ({ dir, ignore, inline }: Options): Plugin {
|
|||||||
let files = []
|
let files = []
|
||||||
try {
|
try {
|
||||||
const wpManifest = resolve(dir, './server.manifest.json')
|
const wpManifest = resolve(dir, './server.manifest.json')
|
||||||
files = await import(wpManifest).then(r => Object.keys(r.files).filter(file => !ignore.includes(file)))
|
files = await import(pathToFileURL(wpManifest).href).then(r => Object.keys(r.files).filter(file => !ignore.includes(file)))
|
||||||
} catch {
|
} catch {
|
||||||
files = await globby('**/*.{cjs,mjs,js}', { cwd: dir, absolute: false, ignore })
|
files = await globby('**/*.{cjs,mjs,js}', { cwd: dir, absolute: false, ignore })
|
||||||
}
|
}
|
||||||
const chunks = files.map(id => ({
|
|
||||||
|
const chunks = (await Promise.all(files.map(async id => ({
|
||||||
id,
|
id,
|
||||||
src: resolve(dir, id).replace(/\\/g, '/'),
|
src: resolve(dir, id).replace(/\\/g, '/'),
|
||||||
name: serializeImportName(id),
|
name: serializeImportName(id),
|
||||||
meta: getWebpackChunkMeta(resolve(dir, id))
|
meta: await getWebpackChunkMeta(resolve(dir, id))
|
||||||
})).filter(chunk => chunk.meta)
|
})))).filter(chunk => chunk.meta)
|
||||||
|
|
||||||
return inline ? TMPL_INLINE({ chunks }) : TMPL_LAZY({ chunks })
|
return inline ? TMPL_INLINE({ chunks }) : TMPL_LAZY({ chunks })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getWebpackChunkMeta (src: string) {
|
async function getWebpackChunkMeta (src: string) {
|
||||||
const chunk = require(src) || {}
|
const chunk = await import(pathToFileURL(src).href).then(r => r.default || r || {})
|
||||||
const { id, ids, modules } = chunk
|
const { id, ids, modules } = chunk
|
||||||
if (!id && !ids) {
|
if (!id && !ids) {
|
||||||
return null // Not a webpack chunk
|
return null // Not a webpack chunk
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { resolve, dirname } from 'pathe'
|
import { resolve, dirname } from 'pathe'
|
||||||
import { copyFile, mkdirp } from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
import { nodeFileTrace, NodeFileTraceOptions } from '@vercel/nft'
|
import { nodeFileTrace, NodeFileTraceOptions } from '@vercel/nft'
|
||||||
import type { Plugin } from 'rollup'
|
import type { Plugin } from 'rollup'
|
||||||
|
|
||||||
@ -84,8 +84,8 @@ export function externals (opts: NodeExternalsOptions): Plugin {
|
|||||||
const writeFile = async (file) => {
|
const writeFile = async (file) => {
|
||||||
const src = resolve(opts.traceOptions.base, file)
|
const src = resolve(opts.traceOptions.base, file)
|
||||||
const dst = resolve(opts.outDir, 'node_modules', file.split('node_modules/').pop())
|
const dst = resolve(opts.outDir, 'node_modules', file.split('node_modules/').pop())
|
||||||
await mkdirp(dirname(dst))
|
await fse.mkdirp(dirname(dst))
|
||||||
await copyFile(src, dst)
|
await fse.copyFile(src, dst)
|
||||||
}
|
}
|
||||||
if (process.platform === 'win32') {
|
if (process.platform === 'win32') {
|
||||||
// Workaround for EBUSY on windows (#424)
|
// Workaround for EBUSY on windows (#424)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
import { readFileSync, statSync } from 'fs'
|
||||||
import createEtag from 'etag'
|
import createEtag from 'etag'
|
||||||
import { readFileSync, statSync } from 'fs-extra'
|
|
||||||
import mime from 'mime'
|
import mime from 'mime'
|
||||||
import { relative, resolve } from 'pathe'
|
import { relative, resolve } from 'pathe'
|
||||||
import virtual from '@rollup/plugin-virtual'
|
import virtual from '@rollup/plugin-virtual'
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as path from 'pathe'
|
import { resolve, dirname } from 'pathe'
|
||||||
import type { Plugin } from 'rollup'
|
import type { Plugin } from 'rollup'
|
||||||
|
|
||||||
// Based on https://github.com/rollup/plugins/blob/master/packages/virtual/src/index.ts
|
// Based on https://github.com/rollup/plugins/blob/master/packages/virtual/src/index.ts
|
||||||
@ -16,7 +16,7 @@ export default function virtual (modules: RollupVirtualOptions): Plugin {
|
|||||||
|
|
||||||
for (const [id, mod] of Object.entries(modules)) {
|
for (const [id, mod] of Object.entries(modules)) {
|
||||||
_modules.set(id, mod)
|
_modules.set(id, mod)
|
||||||
_modules.set(path.resolve(id), mod)
|
_modules.set(resolve(id), mod)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -29,7 +29,7 @@ export default function virtual (modules: RollupVirtualOptions): Plugin {
|
|||||||
const importerNoPrefix = importer.startsWith(PREFIX)
|
const importerNoPrefix = importer.startsWith(PREFIX)
|
||||||
? importer.slice(PREFIX.length)
|
? importer.slice(PREFIX.length)
|
||||||
: importer
|
: importer
|
||||||
const resolved = path.resolve(path.dirname(importerNoPrefix), id)
|
const resolved = resolve(dirname(importerNoPrefix), id)
|
||||||
if (_modules.has(resolved)) { return PREFIX + resolved }
|
if (_modules.has(resolved)) { return PREFIX + resolved }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import '#polyfill'
|
import '#polyfill'
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
import functions from 'firebase-functions'
|
||||||
import { handle } from '../server'
|
import { handle } from '../server'
|
||||||
|
|
||||||
const functions = require('firebase-functions')
|
|
||||||
|
|
||||||
export const server = functions.https.onRequest(handle)
|
export const server = functions.https.onRequest(handle)
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
import { Worker } from 'worker_threads'
|
import { Worker } from 'worker_threads'
|
||||||
|
|
||||||
import { IncomingMessage, ServerResponse } from 'http'
|
import { IncomingMessage, ServerResponse } from 'http'
|
||||||
|
import { promises as fsp } from 'fs'
|
||||||
import { loading as loadingTemplate } from '@nuxt/design'
|
import { loading as loadingTemplate } from '@nuxt/design'
|
||||||
import chokidar, { FSWatcher } from 'chokidar'
|
import chokidar, { FSWatcher } from 'chokidar'
|
||||||
import debounce from 'debounce'
|
import debounce from 'debounce'
|
||||||
import { stat } from 'fs-extra'
|
|
||||||
import { promisifyHandle, createApp, Middleware, useBase } from 'h3'
|
import { promisifyHandle, createApp, Middleware, useBase } from 'h3'
|
||||||
import { createProxy } from 'http-proxy'
|
import httpProxy from 'http-proxy'
|
||||||
import { listen, Listener, ListenOptions } from 'listhen'
|
import { listen, Listener, ListenOptions } from 'listhen'
|
||||||
import servePlaceholder from 'serve-placeholder'
|
import servePlaceholder from 'serve-placeholder'
|
||||||
import serveStatic from 'serve-static'
|
import serveStatic from 'serve-static'
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import type { Server } from 'connect'
|
import connect from 'connect'
|
||||||
import type { NitroContext } from '../context'
|
import type { NitroContext } from '../context'
|
||||||
import { handleVfs } from './vfs'
|
import { handleVfs } from './vfs'
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ export function createDevServer (nitroContext: NitroContext) {
|
|||||||
workerAddress = null
|
workerAddress = null
|
||||||
pendingWorker = null
|
pendingWorker = null
|
||||||
}
|
}
|
||||||
if (!(await stat(workerEntry)).isFile) {
|
if (!(await fsp.stat(workerEntry)).isFile) {
|
||||||
throw new Error('Entry not found: ' + workerEntry)
|
throw new Error('Entry not found: ' + workerEntry)
|
||||||
}
|
}
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -72,7 +72,7 @@ export function createDevServer (nitroContext: NitroContext) {
|
|||||||
app.use(nitroContext._nuxt.publicPath, servePlaceholder())
|
app.use(nitroContext._nuxt.publicPath, servePlaceholder())
|
||||||
|
|
||||||
// SSR Proxy
|
// SSR Proxy
|
||||||
const proxy = createProxy()
|
const proxy = httpProxy.createProxy()
|
||||||
const proxyHandle = promisifyHandle((req: IncomingMessage, res: ServerResponse) => proxy.web(req, res, { target: workerAddress }, (_err: unknown) => {
|
const proxyHandle = promisifyHandle((req: IncomingMessage, res: ServerResponse) => proxy.web(req, res, { target: workerAddress }, (_err: unknown) => {
|
||||||
// console.error('[proxy]', err)
|
// console.error('[proxy]', err)
|
||||||
}))
|
}))
|
||||||
@ -151,7 +151,7 @@ function createDynamicMiddleware (): DynamicMiddleware {
|
|||||||
middleware = input
|
middleware = input
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const app: Server = require('connect')()
|
const app = connect()
|
||||||
for (const m of input) {
|
for (const m of input) {
|
||||||
app.use(m.path || m.route || '/', m.handler || m.handle!)
|
app.use(m.path || m.route || '/', m.handler || m.handle!)
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { createRequire } from 'module'
|
||||||
import { relative, dirname, resolve } from 'pathe'
|
import { relative, dirname, resolve } from 'pathe'
|
||||||
import fse from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
import jiti from 'jiti'
|
import jiti from 'jiti'
|
||||||
@ -8,8 +9,6 @@ import chalk from 'chalk'
|
|||||||
import { get } from 'dot-prop'
|
import { get } from 'dot-prop'
|
||||||
import type { NitroPreset, NitroInput } from '../context'
|
import type { NitroPreset, NitroInput } from '../context'
|
||||||
|
|
||||||
export const MODULE_DIR = resolve(__dirname, '..')
|
|
||||||
|
|
||||||
export function hl (str: string) {
|
export function hl (str: string) {
|
||||||
return chalk.cyan(str)
|
return chalk.cyan(str)
|
||||||
}
|
}
|
||||||
@ -35,7 +34,7 @@ export function serializeTemplate (contents: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function jitiImport (dir: string, path: string) {
|
export function jitiImport (dir: string, path: string) {
|
||||||
return jiti(dir)(path)
|
return jiti(dir, { interopDefault: true })(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function tryImport (dir: string, path: string) {
|
export function tryImport (dir: string, path: string) {
|
||||||
@ -107,9 +106,10 @@ const _getDependenciesMode = {
|
|||||||
prod: ['dependencies'],
|
prod: ['dependencies'],
|
||||||
all: ['devDependencies', 'dependencies']
|
all: ['devDependencies', 'dependencies']
|
||||||
}
|
}
|
||||||
|
const _require = createRequire(import.meta.url)
|
||||||
export function getDependencies (dir: string, mode: keyof typeof _getDependenciesMode = 'all') {
|
export function getDependencies (dir: string, mode: keyof typeof _getDependenciesMode = 'all') {
|
||||||
const fields = _getDependenciesMode[mode]
|
const fields = _getDependenciesMode[mode]
|
||||||
const pkg = require(resolve(dir, 'package.json'))
|
const pkg = _require(resolve(dir, 'package.json'))
|
||||||
const dependencies = []
|
const dependencies = []
|
||||||
for (const field of fields) {
|
for (const field of fields) {
|
||||||
if (pkg[field]) {
|
if (pkg[field]) {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
import { promises as fsp } from 'fs'
|
||||||
import { resolve, dirname, relative } from 'pathe'
|
import { resolve, dirname, relative } from 'pathe'
|
||||||
import globby from 'globby'
|
import globby from 'globby'
|
||||||
import prettyBytes from 'pretty-bytes'
|
import prettyBytes from 'pretty-bytes'
|
||||||
import gzipSize from 'gzip-size'
|
import gzipSize from 'gzip-size'
|
||||||
import { readFile } from 'fs-extra'
|
|
||||||
import chalk from 'chalk'
|
import chalk from 'chalk'
|
||||||
import stdenv from 'std-env'
|
import stdenv from 'std-env'
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ export async function printFSTree (dir: string) {
|
|||||||
|
|
||||||
const items = (await Promise.all(files.map(async (file) => {
|
const items = (await Promise.all(files.map(async (file) => {
|
||||||
const path = resolve(dir, file)
|
const path = resolve(dir, file)
|
||||||
const src = await readFile(path)
|
const src = await fsp.readFile(path)
|
||||||
const size = src.byteLength
|
const size = src.byteLength
|
||||||
const gzip = await gzipSize(src)
|
const gzip = await gzipSize(src)
|
||||||
return { file, path, size, gzip }
|
return { file, path, size, gzip }
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
process._startTime = Date.now()
|
|
||||||
|
|
||||||
require('../dist/index.cjs').main()
|
|
3
packages/nuxi/bin/nuxi.mjs
Executable file
3
packages/nuxi/bin/nuxi.mjs
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
process._startTime = Date.now()
|
||||||
|
import('../dist/index.mjs').then(r => (r.default || r).main())
|
@ -3,6 +3,8 @@ import { defineBuildConfig } from 'unbuild'
|
|||||||
export default defineBuildConfig({
|
export default defineBuildConfig({
|
||||||
declaration: true,
|
declaration: true,
|
||||||
inlineDependencies: true,
|
inlineDependencies: true,
|
||||||
|
emitCJS: false,
|
||||||
|
cjsBridge: true,
|
||||||
entries: [
|
entries: [
|
||||||
'src/index'
|
'src/index'
|
||||||
],
|
],
|
||||||
|
@ -3,10 +3,14 @@
|
|||||||
"version": "0.10.0",
|
"version": "0.10.0",
|
||||||
"repository": "nuxt/framework",
|
"repository": "nuxt/framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.cjs",
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./dist/index.mjs",
|
||||||
|
"./cli": "./bin/nuxi.mjs"
|
||||||
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"nu": "./bin/nuxi.cjs",
|
"nu": "./bin/nuxi.mjs",
|
||||||
"nuxi": "./bin/nuxi.cjs"
|
"nuxi": "./bin/nuxi.mjs"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prepack": "unbuild"
|
"prepack": "unbuild"
|
||||||
@ -34,6 +38,7 @@
|
|||||||
"flat": "^5.0.2",
|
"flat": "^5.0.2",
|
||||||
"jiti": "^1.12.6",
|
"jiti": "^1.12.6",
|
||||||
"listhen": "^0.2.4",
|
"listhen": "^0.2.4",
|
||||||
|
"mlly": "^0.2.2",
|
||||||
"mri": "^1.2.0",
|
"mri": "^1.2.0",
|
||||||
"pathe": "^0.2.0",
|
"pathe": "^0.2.0",
|
||||||
"scule": "^0.2.1",
|
"scule": "^0.2.1",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import { requireModule } from '../utils/cjs'
|
import { importModule } from '../utils/cjs'
|
||||||
import { error } from '../utils/log'
|
import { error } from '../utils/log'
|
||||||
|
|
||||||
import { defineNuxtCommand } from './index'
|
import { defineNuxtCommand } from './index'
|
||||||
@ -14,7 +14,7 @@ export default defineNuxtCommand({
|
|||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'production'
|
process.env.NODE_ENV = process.env.NODE_ENV || 'production'
|
||||||
const rootDir = resolve(args._[0] || '.')
|
const rootDir = resolve(args._[0] || '.')
|
||||||
|
|
||||||
const { loadNuxt, buildNuxt } = requireModule('@nuxt/kit', rootDir) as typeof import('@nuxt/kit')
|
const { loadNuxt, buildNuxt } = await importModule('@nuxt/kit', rootDir) as typeof import('@nuxt/kit')
|
||||||
|
|
||||||
const nuxt = await loadNuxt({ rootDir })
|
const nuxt = await loadNuxt({ rootDir })
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import debounce from 'debounce-promise'
|
|||||||
import type { Nuxt } from '@nuxt/kit'
|
import type { Nuxt } from '@nuxt/kit'
|
||||||
import { createServer, createLoadingHandler } from '../utils/server'
|
import { createServer, createLoadingHandler } from '../utils/server'
|
||||||
import { showBanner } from '../utils/banner'
|
import { showBanner } from '../utils/banner'
|
||||||
import { requireModule } from '../utils/cjs'
|
import { importModule } from '../utils/cjs'
|
||||||
import { error } from '../utils/log'
|
import { error } from '../utils/log'
|
||||||
import { defineNuxtCommand } from './index'
|
import { defineNuxtCommand } from './index'
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ export default defineNuxtCommand({
|
|||||||
|
|
||||||
const rootDir = resolve(args._[0] || '.')
|
const rootDir = resolve(args._[0] || '.')
|
||||||
|
|
||||||
const { loadNuxt, buildNuxt } = requireModule('@nuxt/kit', rootDir) as typeof import('@nuxt/kit')
|
const { loadNuxt, buildNuxt } = await importModule('@nuxt/kit', rootDir) as typeof import('@nuxt/kit')
|
||||||
|
|
||||||
let currentNuxt: Nuxt
|
let currentNuxt: Nuxt
|
||||||
const load = async (isRestart: boolean, reason?: string) => {
|
const load = async (isRestart: boolean, reason?: string) => {
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
import type { Argv } from 'mri'
|
import type { Argv } from 'mri'
|
||||||
|
|
||||||
|
const _rDefault = r => r.default || r
|
||||||
|
|
||||||
export const commands = {
|
export const commands = {
|
||||||
dev: () => import('./dev'),
|
dev: () => import('./dev').then(_rDefault),
|
||||||
build: () => import('./build'),
|
build: () => import('./build').then(_rDefault),
|
||||||
prepare: () => import('./prepare'),
|
prepare: () => import('./prepare').then(_rDefault),
|
||||||
usage: () => import('./usage'),
|
usage: () => import('./usage').then(_rDefault),
|
||||||
info: () => import('./info')
|
info: () => import('./info').then(_rDefault)
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Command = keyof typeof commands
|
export type Command = keyof typeof commands
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import os from 'os'
|
import os from 'os'
|
||||||
import { existsSync, readFileSync } from 'fs'
|
import { existsSync, readFileSync } from 'fs'
|
||||||
|
import { createRequire } from 'module'
|
||||||
import { resolve, dirname } from 'pathe'
|
import { resolve, dirname } from 'pathe'
|
||||||
import jiti from 'jiti'
|
import jiti from 'jiti'
|
||||||
import destr from 'destr'
|
import destr from 'destr'
|
||||||
@ -129,7 +130,8 @@ function getPkg (name, rootDir) {
|
|||||||
let pkgPath = resolve(rootDir, 'node_modules', name, 'package.json')
|
let pkgPath = resolve(rootDir, 'node_modules', name, 'package.json')
|
||||||
|
|
||||||
// Try to resolve for more accuracy
|
// Try to resolve for more accuracy
|
||||||
try { pkgPath = require.resolve(name + '/package.json', { paths: [rootDir] }) } catch (_err) {
|
const _require = createRequire(rootDir)
|
||||||
|
try { pkgPath = _require.resolve(name + '/package.json') } catch (_err) {
|
||||||
// console.log('not found:', name)
|
// console.log('not found:', name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ import { promises as fsp } from 'fs'
|
|||||||
import { relative, resolve } from 'pathe'
|
import { relative, resolve } from 'pathe'
|
||||||
import { cyan } from 'colorette'
|
import { cyan } from 'colorette'
|
||||||
import type { TSReference } from '@nuxt/kit'
|
import type { TSReference } from '@nuxt/kit'
|
||||||
import { requireModule, getModulePaths, getNearestPackage } from '../utils/cjs'
|
import { importModule, getModulePaths, getNearestPackage } from '../utils/cjs'
|
||||||
import { success } from '../utils/log'
|
import { success } from '../utils/log'
|
||||||
import { defineNuxtCommand } from './index'
|
import { defineNuxtCommand } from './index'
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ export default defineNuxtCommand({
|
|||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'production'
|
process.env.NODE_ENV = process.env.NODE_ENV || 'production'
|
||||||
const rootDir = resolve(args._[0] || '.')
|
const rootDir = resolve(args._[0] || '.')
|
||||||
|
|
||||||
const { loadNuxt } = requireModule('@nuxt/kit', rootDir) as typeof import('@nuxt/kit')
|
const { loadNuxt } = await importModule('@nuxt/kit', rootDir) as typeof import('@nuxt/kit')
|
||||||
const nuxt = await loadNuxt({ rootDir })
|
const nuxt = await loadNuxt({ rootDir })
|
||||||
|
|
||||||
const adHocModules = nuxt.options._majorVersion === 3
|
const adHocModules = nuxt.options._majorVersion === 3
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import 'v8-compile-cache'
|
|
||||||
import mri from 'mri'
|
import mri from 'mri'
|
||||||
import { red, cyan } from 'colorette'
|
import { red, cyan } from 'colorette'
|
||||||
import { commands, Command, NuxtCommand } from './commands'
|
import { commands, Command, NuxtCommand } from './commands'
|
||||||
@ -30,7 +29,7 @@ async function _main () {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// @ts-ignore default.default is hotfix for #621
|
// @ts-ignore default.default is hotfix for #621
|
||||||
const cmd = await commands[command as Command]().then(c => c.default.default) as NuxtCommand
|
const cmd = await commands[command as Command]() as NuxtCommand
|
||||||
if (args.h || args.help) {
|
if (args.h || args.help) {
|
||||||
showHelp(cmd.meta)
|
showHelp(cmd.meta)
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import { createRequire } from 'module'
|
||||||
|
import { pathToFileURL } from 'url'
|
||||||
import { normalize, dirname } from 'pathe'
|
import { normalize, dirname } from 'pathe'
|
||||||
|
|
||||||
export function getModulePaths (paths?: string | string[]): string[] {
|
export function getModulePaths (paths?: string | string[]): string[] {
|
||||||
@ -11,8 +13,10 @@ export function getModulePaths (paths?: string | string[]): string[] {
|
|||||||
).filter(Boolean)
|
).filter(Boolean)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const _require = createRequire(process.cwd())
|
||||||
|
|
||||||
export function resolveModule (id: string, paths?: string | string[]) {
|
export function resolveModule (id: string, paths?: string | string[]) {
|
||||||
return normalize(require.resolve(id, { paths: getModulePaths(paths) }))
|
return normalize(_require.resolve(id, { paths: getModulePaths(paths) }))
|
||||||
}
|
}
|
||||||
|
|
||||||
export function tryResolveModule (id: string, paths?: string | string[]) {
|
export function tryResolveModule (id: string, paths?: string | string[]) {
|
||||||
@ -22,7 +26,12 @@ export function tryResolveModule (id: string, paths?: string | string[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function requireModule (id: string, paths?: string | string[]) {
|
export function requireModule (id: string, paths?: string | string[]) {
|
||||||
return require(resolveModule(id, paths))
|
return _require(resolveModule(id, paths))
|
||||||
|
}
|
||||||
|
|
||||||
|
export function importModule (id: string, paths?: string | string[]) {
|
||||||
|
const resolvedPath = resolveModule(id, paths)
|
||||||
|
return import(pathToFileURL(resolvedPath).href)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getNearestPackage (id: string, paths?: string | string[]) {
|
export function getNearestPackage (id: string, paths?: string | string[]) {
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
require('nuxi/bin/nuxi.cjs')
|
|
2
packages/nuxt3/bin/nuxt.mjs
Executable file
2
packages/nuxt3/bin/nuxt.mjs
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
import 'nuxi/cli'
|
@ -2,6 +2,7 @@ import { defineBuildConfig, BuildEntry } from 'unbuild'
|
|||||||
|
|
||||||
export default defineBuildConfig({
|
export default defineBuildConfig({
|
||||||
declaration: true,
|
declaration: true,
|
||||||
|
emitCJS: false,
|
||||||
entries: [
|
entries: [
|
||||||
// Core
|
// Core
|
||||||
{ input: 'src/index' },
|
{ input: 'src/index' },
|
||||||
|
@ -3,10 +3,11 @@
|
|||||||
"version": "0.10.0",
|
"version": "0.10.0",
|
||||||
"repository": "nuxt/framework",
|
"repository": "nuxt/framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.cjs",
|
"type": "module",
|
||||||
|
"exports": "./dist/index.mjs",
|
||||||
"types": "./types.d.ts",
|
"types": "./types.d.ts",
|
||||||
"bin": {
|
"bin": {
|
||||||
"nuxt": "./bin/nuxt.cjs"
|
"nuxt": "./bin/nuxt.mjs"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"bin",
|
"bin",
|
||||||
@ -32,6 +33,7 @@
|
|||||||
"hash-sum": "^2.0.0",
|
"hash-sum": "^2.0.0",
|
||||||
"hookable": "^5.0.0",
|
"hookable": "^5.0.0",
|
||||||
"ignore": "^5.1.8",
|
"ignore": "^5.1.8",
|
||||||
|
"mlly": "^0.2.2",
|
||||||
"nuxi": "^0.10.0",
|
"nuxi": "^0.10.0",
|
||||||
"ohmyfetch": "^0.3.1",
|
"ohmyfetch": "^0.3.1",
|
||||||
"pathe": "^0.2.0",
|
"pathe": "^0.2.0",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
import { promises as fsp } from 'fs'
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import defu from 'defu'
|
import defu from 'defu'
|
||||||
import { tryResolvePath, resolveFiles, Nuxt, NuxtApp, normalizePlugin, normalizeTemplate, compileTemplate, templateUtils } from '@nuxt/kit'
|
import { tryResolvePath, resolveFiles, Nuxt, NuxtApp, normalizePlugin, normalizeTemplate, compileTemplate, templateUtils } from '@nuxt/kit'
|
||||||
import { writeFile } from 'fs-extra'
|
|
||||||
|
|
||||||
import * as defaultTemplates from '../app/templates'
|
import * as defaultTemplates from '../app/templates'
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ export async function generateApp (nuxt: Nuxt, app: NuxtApp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (template.write) {
|
if (template.write) {
|
||||||
await writeFile(fullPath, contents, 'utf8')
|
await fsp.writeFile(fullPath, contents, 'utf8')
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import chokidar from 'chokidar'
|
import chokidar from 'chokidar'
|
||||||
import { Nuxt } from '@nuxt/kit'
|
import { Nuxt } from '@nuxt/kit'
|
||||||
import { emptyDir } from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
import { createApp, generateApp } from './app'
|
import { createApp, generateApp } from './app'
|
||||||
|
|
||||||
export async function build (nuxt: Nuxt) {
|
export async function build (nuxt: Nuxt) {
|
||||||
// Clear buildDir once
|
// Clear buildDir once
|
||||||
await emptyDir(nuxt.options.buildDir)
|
await fse.emptyDir(nuxt.options.buildDir)
|
||||||
|
|
||||||
const app = createApp(nuxt)
|
const app = createApp(nuxt)
|
||||||
await generateApp(nuxt, app)
|
await generateApp(nuxt, app)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { normalize } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import { wpfs, getNitroContext, createDevServer, resolveMiddleware, build, prepare, generate } from '@nuxt/nitro'
|
import { wpfs, getNitroContext, createDevServer, resolveMiddleware, build, prepare, generate } from '@nuxt/nitro'
|
||||||
import type { Nuxt } from '@nuxt/kit'
|
import type { Nuxt } from '@nuxt/kit'
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ export function initNitro (nuxt: Nuxt) {
|
|||||||
|
|
||||||
// Add nitro client plugin (to inject $fetch helper)
|
// Add nitro client plugin (to inject $fetch helper)
|
||||||
nuxt.hook('app:resolve', (app) => {
|
nuxt.hook('app:resolve', (app) => {
|
||||||
app.plugins.push({ src: normalize(require.resolve('@nuxt/nitro/dist/runtime/app/nitro.client.mjs')) })
|
app.plugins.push({ src: resolve(nitroContext._internal.runtimeDir, 'app/nitro.client.mjs') })
|
||||||
})
|
})
|
||||||
|
|
||||||
// Expose process.env.NITRO_PRESET
|
// Expose process.env.NITRO_PRESET
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { resolve } from 'pathe'
|
import { fileURLToPath } from 'url'
|
||||||
|
import { dirname, resolve } from 'pathe'
|
||||||
|
|
||||||
export const distDir = __dirname
|
export const distDir = dirname(fileURLToPath(import.meta.url))
|
||||||
export const pkgDir = resolve(distDir, '..')
|
export const pkgDir = resolve(distDir, '..')
|
||||||
|
@ -2,6 +2,7 @@ import { defineBuildConfig } from 'unbuild'
|
|||||||
|
|
||||||
export default defineBuildConfig({
|
export default defineBuildConfig({
|
||||||
declaration: true,
|
declaration: true,
|
||||||
|
emitCJS: false,
|
||||||
entries: [
|
entries: [
|
||||||
'src/index'
|
'src/index'
|
||||||
],
|
],
|
||||||
|
@ -3,8 +3,9 @@
|
|||||||
"version": "0.10.0",
|
"version": "0.10.0",
|
||||||
"repository": "nuxt/framework",
|
"repository": "nuxt/framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.cjs",
|
"type": "module",
|
||||||
"types": "./dist/index.d.ts",
|
"types": "./dist/index.d.ts",
|
||||||
|
"exports": "./dist/index.mjs",
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import * as vite from 'vite'
|
|
||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import { mkdirp, readJSON, writeFile } from 'fs-extra'
|
import * as vite from 'vite'
|
||||||
|
import fse from 'fs-extra'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import vitePlugin from '@vitejs/plugin-vue'
|
import vitePlugin from '@vitejs/plugin-vue'
|
||||||
|
|
||||||
@ -84,9 +84,9 @@ export async function buildClient (ctx: ViteBuildContext) {
|
|||||||
|
|
||||||
const clientManifest = ctx.nuxt.options.dev
|
const clientManifest = ctx.nuxt.options.dev
|
||||||
? devClientManifest
|
? devClientManifest
|
||||||
: await readJSON(resolve(clientDist, 'manifest.json'))
|
: await fse.readJSON(resolve(clientDist, 'manifest.json'))
|
||||||
|
|
||||||
await mkdirp(serverDist)
|
await fse.mkdirp(serverDist)
|
||||||
await writeFile(resolve(serverDist, 'client.manifest.json'), JSON.stringify(clientManifest, null, 2), 'utf8')
|
await fse.writeFile(resolve(serverDist, 'client.manifest.json'), JSON.stringify(clientManifest, null, 2), 'utf8')
|
||||||
await writeFile(resolve(serverDist, 'client.manifest.mjs'), 'export default ' + JSON.stringify(clientManifest, null, 2), 'utf8')
|
await fse.writeFile(resolve(serverDist, 'client.manifest.mjs'), 'export default ' + JSON.stringify(clientManifest, null, 2), 'utf8')
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { join } from 'pathe'
|
import { join } from 'pathe'
|
||||||
import fsExtra from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
|
|
||||||
export const wpfs = {
|
export const wpfs = {
|
||||||
...fsExtra,
|
...fse,
|
||||||
join
|
join
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ import { defineBuildConfig } from 'unbuild'
|
|||||||
|
|
||||||
export default defineBuildConfig({
|
export default defineBuildConfig({
|
||||||
declaration: true,
|
declaration: true,
|
||||||
|
emitCJS: false,
|
||||||
entries: [
|
entries: [
|
||||||
'src/index'
|
'src/index'
|
||||||
],
|
],
|
||||||
|
@ -3,8 +3,12 @@
|
|||||||
"version": "0.10.0",
|
"version": "0.10.0",
|
||||||
"repository": "nuxt/framework",
|
"repository": "nuxt/framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.cjs",
|
"type": "module",
|
||||||
"types": "./dist/index.d.ts",
|
"types": "./dist/index.d.ts",
|
||||||
|
"exports": {
|
||||||
|
".": "./dist/index.mjs",
|
||||||
|
"./dist/*": "./dist/*"
|
||||||
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
@ -27,9 +31,10 @@
|
|||||||
"fs-extra": "^10.0.0",
|
"fs-extra": "^10.0.0",
|
||||||
"glob": "^7.2.0",
|
"glob": "^7.2.0",
|
||||||
"hash-sum": "^2.0.0",
|
"hash-sum": "^2.0.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"memfs": "^3.3.0",
|
"memfs": "^3.3.0",
|
||||||
"mini-css-extract-plugin": "^2.3.0",
|
"mini-css-extract-plugin": "^2.3.0",
|
||||||
|
"mlly": "^0.2.2",
|
||||||
"pathe": "^0.2.0",
|
"pathe": "^0.2.0",
|
||||||
"pify": "^5.0.0",
|
"pify": "^5.0.0",
|
||||||
"postcss": "^8.3.8",
|
"postcss": "^8.3.8",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import querystring from 'querystring'
|
import querystring from 'querystring'
|
||||||
import path from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import webpack from 'webpack'
|
import webpack from 'webpack'
|
||||||
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
|
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ function clientPlugins (ctx: WebpackConfigContext) {
|
|||||||
// Webpack Bundle Analyzer
|
// Webpack Bundle Analyzer
|
||||||
// https://github.com/webpack-contrib/webpack-bundle-analyzer
|
// https://github.com/webpack-contrib/webpack-bundle-analyzer
|
||||||
if (!ctx.isDev && options.build.analyze) {
|
if (!ctx.isDev && options.build.analyze) {
|
||||||
const statsDir = path.resolve(options.buildDir, 'stats')
|
const statsDir = resolve(options.buildDir, 'stats')
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
config.plugins.push(new BundleAnalyzerPlugin({
|
config.plugins.push(new BundleAnalyzerPlugin({
|
||||||
@ -89,8 +89,8 @@ function clientPlugins (ctx: WebpackConfigContext) {
|
|||||||
defaultSizes: 'gzip',
|
defaultSizes: 'gzip',
|
||||||
generateStatsFile: true,
|
generateStatsFile: true,
|
||||||
openAnalyzer: !options.build.quiet,
|
openAnalyzer: !options.build.quiet,
|
||||||
reportFilename: path.resolve(statsDir, `${ctx.name}.html`),
|
reportFilename: resolve(statsDir, `${ctx.name}.html`),
|
||||||
statsFilename: path.resolve(statsDir, `${ctx.name}.json`),
|
statsFilename: resolve(statsDir, `${ctx.name}.json`),
|
||||||
...options.build.analyze as any
|
...options.build.analyze as any
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { isAbsolute } from 'pathe'
|
import { isAbsolute } from 'pathe'
|
||||||
import { ProvidePlugin } from 'webpack'
|
import webpack from 'webpack'
|
||||||
import { WebpackConfigContext, applyPresets, getWebpackConfig } from '../utils/config'
|
import { WebpackConfigContext, applyPresets, getWebpackConfig } from '../utils/config'
|
||||||
import { nuxt } from '../presets/nuxt'
|
import { nuxt } from '../presets/nuxt'
|
||||||
import { node } from '../presets/node'
|
import { node } from '../presets/node'
|
||||||
@ -68,7 +68,7 @@ function serverPlugins (ctx: WebpackConfigContext) {
|
|||||||
|
|
||||||
// Server polyfills
|
// Server polyfills
|
||||||
if (options.build.serverURLPolyfill) {
|
if (options.build.serverURLPolyfill) {
|
||||||
config.plugins.push(new ProvidePlugin({
|
config.plugins.push(new webpack.ProvidePlugin({
|
||||||
URL: [options.build.serverURLPolyfill, 'URL'],
|
URL: [options.build.serverURLPolyfill, 'URL'],
|
||||||
URLSearchParams: [options.build.serverURLPolyfill, 'URLSearchParams']
|
URLSearchParams: [options.build.serverURLPolyfill, 'URLSearchParams']
|
||||||
}))
|
}))
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
import { dirname } from 'pathe'
|
import { dirname } from 'pathe'
|
||||||
import hash from 'hash-sum'
|
import hash from 'hash-sum'
|
||||||
import { uniq } from 'lodash'
|
import { uniq } from 'lodash-es'
|
||||||
import { writeFile, mkdirp } from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
|
|
||||||
import { isJS, isCSS, isHotUpdate } from './util'
|
import { isJS, isCSS, isHotUpdate } from './util'
|
||||||
|
|
||||||
@ -111,11 +111,11 @@ export default class VueSSRClientPlugin {
|
|||||||
|
|
||||||
const src = JSON.stringify(manifest, null, 2)
|
const src = JSON.stringify(manifest, null, 2)
|
||||||
|
|
||||||
await mkdirp(dirname(this.options.filename))
|
await fse.mkdirp(dirname(this.options.filename))
|
||||||
await writeFile(this.options.filename, src)
|
await fse.writeFile(this.options.filename, src)
|
||||||
|
|
||||||
const mjsSrc = 'export default ' + src
|
const mjsSrc = 'export default ' + src
|
||||||
await writeFile(this.options.filename.replace('.json', '.mjs'), mjsSrc)
|
await fse.writeFile(this.options.filename.replace('.json', '.mjs'), mjsSrc)
|
||||||
|
|
||||||
// assets[this.options.filename] = {
|
// assets[this.options.filename] = {
|
||||||
// source: () => src,
|
// source: () => src,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
import { Compilation } from 'webpack'
|
import webpack from 'webpack'
|
||||||
import { validate, isJS, extractQueryPartJS } from './util'
|
import { validate, isJS, extractQueryPartJS } from './util'
|
||||||
|
|
||||||
export default class VueSSRServerPlugin {
|
export default class VueSSRServerPlugin {
|
||||||
@ -18,7 +18,7 @@ export default class VueSSRServerPlugin {
|
|||||||
compiler.hooks.make.tap('VueSSRServerPlugin', (compilation: any) => {
|
compiler.hooks.make.tap('VueSSRServerPlugin', (compilation: any) => {
|
||||||
compilation.hooks.processAssets.tapAsync({
|
compilation.hooks.processAssets.tapAsync({
|
||||||
name: 'VueSSRServerPlugin',
|
name: 'VueSSRServerPlugin',
|
||||||
stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL
|
stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL
|
||||||
}, (assets, cb) => {
|
}, (assets, cb) => {
|
||||||
const stats = compilation.getStats().toJson()
|
const stats = compilation.getStats().toJson()
|
||||||
const [entryName] = Object.keys(stats.entrypoints)
|
const [entryName] = Object.keys(stats.entrypoints)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { WebpackError } from 'webpack'
|
import type { WebpackError } from 'webpack'
|
||||||
export default class WarningIgnorePlugin {
|
export default class WarningIgnorePlugin {
|
||||||
filter: (warn: WebpackError) => boolean
|
filter: (warn: WebpackError) => boolean
|
||||||
|
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
|
import { createRequire } from 'module'
|
||||||
import { normalize } from 'pathe'
|
import { normalize } from 'pathe'
|
||||||
import TerserWebpackPlugin from 'terser-webpack-plugin'
|
import TerserWebpackPlugin from 'terser-webpack-plugin'
|
||||||
import { reservedVueTags } from '../utils/reserved-tags'
|
import { reservedVueTags } from '../utils/reserved-tags'
|
||||||
import { WebpackConfigContext } from '../utils/config'
|
import { WebpackConfigContext } from '../utils/config'
|
||||||
|
|
||||||
|
const _require = createRequire(import.meta.url)
|
||||||
|
|
||||||
export function babel (ctx: WebpackConfigContext) {
|
export function babel (ctx: WebpackConfigContext) {
|
||||||
const { config, options } = ctx
|
const { config, options } = ctx
|
||||||
|
|
||||||
const babelLoader = {
|
const babelLoader = {
|
||||||
loader: normalize(require.resolve('babel-loader')),
|
loader: normalize(_require.resolve('babel-loader')),
|
||||||
options: getBabelOptions(ctx)
|
options: getBabelOptions(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +70,7 @@ function getBabelOptions (ctx: WebpackConfigContext) {
|
|||||||
babelOptions.plugins = babelOptions.plugins(ctx)
|
babelOptions.plugins = babelOptions.plugins(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultPreset = [normalize(require.resolve('../../babel-preset-app')), {}]
|
const defaultPreset = [normalize(_require.resolve('../../babel-preset-app')), {}]
|
||||||
|
|
||||||
if (typeof babelOptions.presets === 'function') {
|
if (typeof babelOptions.presets === 'function') {
|
||||||
babelOptions.presets = babelOptions.presets(ctx, defaultPreset)
|
babelOptions.presets = babelOptions.presets(ctx, defaultPreset)
|
||||||
|
@ -2,9 +2,9 @@ import { resolve, normalize } from 'pathe'
|
|||||||
import TimeFixPlugin from 'time-fix-plugin'
|
import TimeFixPlugin from 'time-fix-plugin'
|
||||||
import WebpackBar from 'webpackbar'
|
import WebpackBar from 'webpackbar'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { DefinePlugin, Configuration } from 'webpack'
|
import webpack from 'webpack'
|
||||||
import FriendlyErrorsWebpackPlugin from '@nuxt/friendly-errors-webpack-plugin'
|
import FriendlyErrorsWebpackPlugin from '@nuxt/friendly-errors-webpack-plugin'
|
||||||
import { escapeRegExp } from 'lodash'
|
import { escapeRegExp } from 'lodash-es'
|
||||||
import { hasProtocol, joinURL } from 'ufo'
|
import { hasProtocol, joinURL } from 'ufo'
|
||||||
import WarningIgnorePlugin from '../plugins/warning-ignore'
|
import WarningIgnorePlugin from '../plugins/warning-ignore'
|
||||||
import { WebpackConfigContext, applyPresets, fileName } from '../utils/config'
|
import { WebpackConfigContext, applyPresets, fileName } from '../utils/config'
|
||||||
@ -55,7 +55,7 @@ function basePlugins (ctx: WebpackConfigContext) {
|
|||||||
config.plugins.push(new WarningIgnorePlugin(getWarningIgnoreFilter(ctx)))
|
config.plugins.push(new WarningIgnorePlugin(getWarningIgnoreFilter(ctx)))
|
||||||
|
|
||||||
// Provide env via DefinePlugin
|
// Provide env via DefinePlugin
|
||||||
config.plugins.push(new DefinePlugin(getEnv(ctx)))
|
config.plugins.push(new webpack.DefinePlugin(getEnv(ctx)))
|
||||||
|
|
||||||
// Friendly errors
|
// Friendly errors
|
||||||
if (
|
if (
|
||||||
@ -164,7 +164,7 @@ export function baseTranspile (ctx: WebpackConfigContext) {
|
|||||||
ctx.transpile = [...transpile, ...ctx.transpile]
|
ctx.transpile = [...transpile, ...ctx.transpile]
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCache (ctx: WebpackConfigContext): Configuration['cache'] {
|
function getCache (ctx: WebpackConfigContext): webpack.Configuration['cache'] {
|
||||||
const { options } = ctx
|
const { options } = ctx
|
||||||
|
|
||||||
if (!options.dev) {
|
if (!options.dev) {
|
||||||
@ -187,7 +187,7 @@ function getCache (ctx: WebpackConfigContext): Configuration['cache'] {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOutput (ctx: WebpackConfigContext): Configuration['output'] {
|
function getOutput (ctx: WebpackConfigContext): webpack.Configuration['output'] {
|
||||||
const { options } = ctx
|
const { options } = ctx
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import path from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import MiniCssExtractPlugin from 'mini-css-extract-plugin'
|
import MiniCssExtractPlugin from 'mini-css-extract-plugin'
|
||||||
import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'
|
import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'
|
||||||
import { fileName, WebpackConfigContext, applyPresets } from '../utils/config'
|
import { fileName, WebpackConfigContext, applyPresets } from '../utils/config'
|
||||||
@ -130,7 +130,7 @@ function createStyleResourcesLoaderRule (styleLang, styleResources, rootDir) {
|
|||||||
return {
|
return {
|
||||||
loader: 'style-resources-loader',
|
loader: 'style-resources-loader',
|
||||||
options: {
|
options: {
|
||||||
patterns: Array.from(styleResources[styleLang]).map(p => path.resolve(rootDir, p as string)),
|
patterns: Array.from(styleResources[styleLang]).map(p => resolve(rootDir, p as string)),
|
||||||
...styleResources.options
|
...styleResources.options
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import VueLoaderPlugin from 'vue-loader/dist/pluginWebpack5'
|
import VueLoaderPlugin from 'vue-loader/dist/pluginWebpack5.js'
|
||||||
import { DefinePlugin } from 'webpack'
|
import webpack from 'webpack'
|
||||||
import VueSSRClientPlugin from '../plugins/vue/client'
|
import VueSSRClientPlugin from '../plugins/vue/client'
|
||||||
import VueSSRServerPlugin from '../plugins/vue/server'
|
import VueSSRServerPlugin from '../plugins/vue/server'
|
||||||
import { WebpackConfigContext } from '../utils/config'
|
import { WebpackConfigContext } from '../utils/config'
|
||||||
@ -8,7 +8,8 @@ import { WebpackConfigContext } from '../utils/config'
|
|||||||
export function vue (ctx: WebpackConfigContext) {
|
export function vue (ctx: WebpackConfigContext) {
|
||||||
const { options, config } = ctx
|
const { options, config } = ctx
|
||||||
|
|
||||||
config.plugins.push(new VueLoaderPlugin())
|
// @ts-ignore
|
||||||
|
config.plugins.push(new (VueLoaderPlugin.default || VueLoaderPlugin)())
|
||||||
|
|
||||||
config.module.rules.push({
|
config.module.rules.push({
|
||||||
test: /\.vue$/i,
|
test: /\.vue$/i,
|
||||||
@ -29,7 +30,7 @@ export function vue (ctx: WebpackConfigContext) {
|
|||||||
// Feature flags
|
// Feature flags
|
||||||
// https://github.com/vuejs/vue-next/tree/master/packages/vue#bundler-build-feature-flags
|
// https://github.com/vuejs/vue-next/tree/master/packages/vue#bundler-build-feature-flags
|
||||||
// TODO: Provide options to toggle
|
// TODO: Provide options to toggle
|
||||||
config.plugins.push(new DefinePlugin({
|
config.plugins.push(new webpack.DefinePlugin({
|
||||||
__VUE_OPTIONS_API__: 'true',
|
__VUE_OPTIONS_API__: 'true',
|
||||||
__VUE_PROD_DEVTOOLS__: 'false'
|
__VUE_PROD_DEVTOOLS__: 'false'
|
||||||
}))
|
}))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash-es'
|
||||||
import { Configuration } from 'webpack'
|
import type { Configuration } from 'webpack'
|
||||||
import type { Nuxt } from '@nuxt/kit'
|
import type { Nuxt } from '@nuxt/kit'
|
||||||
|
|
||||||
export interface WebpackConfigContext extends ReturnType<typeof createWebpackConfigContext>{ }
|
export interface WebpackConfigContext extends ReturnType<typeof createWebpackConfigContext>{ }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import path from 'pathe'
|
import { join } from 'pathe'
|
||||||
import pify from 'pify'
|
import pify from 'pify'
|
||||||
import { Volume, createFsFromVolume } from 'memfs'
|
import { Volume, createFsFromVolume } from 'memfs'
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ export function createMFS () {
|
|||||||
|
|
||||||
// fs.join method is (still) expected by webpack-dev-middleware
|
// fs.join method is (still) expected by webpack-dev-middleware
|
||||||
// There might be differences with https://github.com/webpack/memory-fs/blob/master/lib/join.js
|
// There might be differences with https://github.com/webpack/memory-fs/blob/master/lib/join.js
|
||||||
_fs.join = path.join
|
_fs.join = join
|
||||||
|
|
||||||
// Used by vue-renderer
|
// Used by vue-renderer
|
||||||
_fs.exists = p => Promise.resolve(_fs.existsSync(p))
|
_fs.exists = p => Promise.resolve(_fs.existsSync(p))
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import path from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { defaults, merge, cloneDeep } from 'lodash'
|
import { createCommonJS } from 'mlly'
|
||||||
|
import { defaults, merge, cloneDeep } from 'lodash-es'
|
||||||
import createResolver from 'postcss-import-resolver'
|
import createResolver from 'postcss-import-resolver'
|
||||||
import { Nuxt, requireModule } from '@nuxt/kit'
|
import { Nuxt, requireModule } from '@nuxt/kit'
|
||||||
|
|
||||||
@ -111,7 +112,7 @@ export class PostcssConfig {
|
|||||||
'.postcssrc.json',
|
'.postcssrc.json',
|
||||||
'.postcssrc.yaml'
|
'.postcssrc.yaml'
|
||||||
]) {
|
]) {
|
||||||
const configFile = path.resolve(dir, file)
|
const configFile = resolve(dir, file)
|
||||||
if (fs.existsSync(configFile)) {
|
if (fs.existsSync(configFile)) {
|
||||||
postcssConfigFileWarning()
|
postcssConfigFileWarning()
|
||||||
return configFile
|
return configFile
|
||||||
@ -140,8 +141,9 @@ export class PostcssConfig {
|
|||||||
loadPlugins (config) {
|
loadPlugins (config) {
|
||||||
if (!isPureObject(config.plugins)) { return }
|
if (!isPureObject(config.plugins)) { return }
|
||||||
// Map postcss plugins into instances on object mode once
|
// Map postcss plugins into instances on object mode once
|
||||||
|
const cjs = createCommonJS(import.meta.url)
|
||||||
config.plugins = this.sortPlugins(config).map((pluginName) => {
|
config.plugins = this.sortPlugins(config).map((pluginName) => {
|
||||||
const pluginFn = requireModule(pluginName, { paths: [__dirname] })
|
const pluginFn = requireModule(pluginName, { paths: [cjs.__dirname] })
|
||||||
const pluginOptions = config.plugins[pluginName]
|
const pluginOptions = config.plugins[pluginName]
|
||||||
if (!pluginOptions || typeof pluginFn !== 'function') { return null }
|
if (!pluginOptions || typeof pluginFn !== 'function') { return null }
|
||||||
return pluginFn(pluginOptions)
|
return pluginFn(pluginOptions)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import type { IncomingMessage, ServerResponse } from 'http'
|
import type { IncomingMessage, ServerResponse } from 'http'
|
||||||
import path from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import pify from 'pify'
|
import pify from 'pify'
|
||||||
import webpack from 'webpack'
|
import webpack from 'webpack'
|
||||||
import Glob from 'glob'
|
import Glob from 'glob'
|
||||||
@ -100,7 +100,7 @@ class WebpackBundler {
|
|||||||
)
|
)
|
||||||
for (const ext of Object.keys(styleResources)) {
|
for (const ext of Object.keys(styleResources)) {
|
||||||
await Promise.all(Array.from(styleResources[ext]).map(async (p) => {
|
await Promise.all(Array.from(styleResources[ext]).map(async (p) => {
|
||||||
const styleResourceFiles = await glob(path.resolve(this.nuxt.options.rootDir, p as string))
|
const styleResourceFiles = await glob(resolve(this.nuxt.options.rootDir, p as string))
|
||||||
|
|
||||||
if (!styleResourceFiles || styleResourceFiles.length === 0) {
|
if (!styleResourceFiles || styleResourceFiles.length === 0) {
|
||||||
throw new Error(`Style Resource not found: ${p}`)
|
throw new Error(`Style Resource not found: ${p}`)
|
||||||
|
6
test/fixtures/bridge/nuxt.config.ts
vendored
6
test/fixtures/bridge/nuxt.config.ts
vendored
@ -1,9 +1,7 @@
|
|||||||
import { defineNuxtConfig } from '@nuxt/kit'
|
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
global.__NUXT_PREPATHS__ = (global.__NUXT_PREPATHS__ || []).concat(__dirname)
|
global.__NUXT_PREPATHS__ = (global.__NUXT_PREPATHS__ || []).concat(__dirname)
|
||||||
|
|
||||||
export default defineNuxtConfig({
|
export default {
|
||||||
components: true,
|
components: true,
|
||||||
buildModules: [
|
buildModules: [
|
||||||
'@nuxt/bridge'
|
'@nuxt/bridge'
|
||||||
@ -21,4 +19,4 @@ export default defineNuxtConfig({
|
|||||||
nitro: {
|
nitro: {
|
||||||
output: { dir: process.env.NITRO_OUTPUT_DIR }
|
output: { dir: process.env.NITRO_OUTPUT_DIR }
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
298
test/fixtures/bridge/yarn.lock
vendored
298
test/fixtures/bridge/yarn.lock
vendored
@ -1690,9 +1690,9 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@polka/url@npm:^1.0.0-next.20":
|
"@polka/url@npm:^1.0.0-next.20":
|
||||||
version: 1.0.0-next.20
|
version: 1.0.0-next.21
|
||||||
resolution: "@polka/url@npm:1.0.0-next.20"
|
resolution: "@polka/url@npm:1.0.0-next.21"
|
||||||
checksum: a37138ed3314606c7a8984368e29413e29b24f0b877588c161ccc5464daaa235a03bc62ebffe51063a9917f5542afb29c8181b877579b33570ec6d9304c42d2e
|
checksum: c7654046d38984257dd639eab3dc770d1b0340916097b2fac03ce5d23506ada684e05574a69b255c32ea6a144a957c8cd84264159b545fca031c772289d88788
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -1718,9 +1718,9 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/node@npm:*":
|
"@types/node@npm:*":
|
||||||
version: 16.9.4
|
version: 16.10.2
|
||||||
resolution: "@types/node@npm:16.9.4"
|
resolution: "@types/node@npm:16.10.2"
|
||||||
checksum: ae281eec8e0ead86fd5fd76f56312db85dce27d0ac086d07bc917df98e16af792adc4f26dab099698509e2c3704cbd17224ec8138e822d569e3cadfc15569a71
|
checksum: 83c1c3c68e7500103908c3f16094e458879c840a719c15b6ea577f81fe1f24a1b3473bb6c8e8091fe79a82543ca7639c6b1088fcf80292ec091d1d1c9504a87e
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -2218,11 +2218,11 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ansi-align@npm:^3.0.0":
|
"ansi-align@npm:^3.0.0":
|
||||||
version: 3.0.0
|
version: 3.0.1
|
||||||
resolution: "ansi-align@npm:3.0.0"
|
resolution: "ansi-align@npm:3.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
string-width: ^3.0.0
|
string-width: ^4.1.0
|
||||||
checksum: 6bc5f3712d28a899063845a15c5da75b2f350dda8ffac6098581619b80a85d249cdd23c3dc7b596cd31e44477382bcdedff47e31201eaa10bb9708c9fce45330
|
checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -2258,14 +2258,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ansi-regex@npm:^4.1.0":
|
"ansi-regex@npm:^5.0.1":
|
||||||
version: 4.1.0
|
|
||||||
resolution: "ansi-regex@npm:4.1.0"
|
|
||||||
checksum: 97aa4659538d53e5e441f5ef2949a3cffcb838e57aeaad42c4194e9d7ddb37246a6526c4ca85d3940a9d1e19b11cc2e114530b54c9d700c8baf163c31779baf8
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"ansi-regex@npm:^5.0.0":
|
|
||||||
version: 5.0.1
|
version: 5.0.1
|
||||||
resolution: "ansi-regex@npm:5.0.1"
|
resolution: "ansi-regex@npm:5.0.1"
|
||||||
checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b
|
checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b
|
||||||
@ -2438,19 +2431,19 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"autoprefixer@npm:^9.6.1":
|
"autoprefixer@npm:^9.6.1":
|
||||||
version: 9.8.6
|
version: 9.8.7
|
||||||
resolution: "autoprefixer@npm:9.8.6"
|
resolution: "autoprefixer@npm:9.8.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: ^4.12.0
|
browserslist: ^4.12.0
|
||||||
caniuse-lite: ^1.0.30001109
|
caniuse-lite: ^1.0.30001109
|
||||||
colorette: ^1.2.1
|
nanocolors: ^0.2.8
|
||||||
normalize-range: ^0.1.2
|
normalize-range: ^0.1.2
|
||||||
num2fraction: ^1.2.2
|
num2fraction: ^1.2.2
|
||||||
postcss: ^7.0.32
|
postcss: ^7.0.32
|
||||||
postcss-value-parser: ^4.1.0
|
postcss-value-parser: ^4.1.0
|
||||||
bin:
|
bin:
|
||||||
autoprefixer: bin/autoprefixer
|
autoprefixer: bin/autoprefixer
|
||||||
checksum: 46987bc3de6612f0276c3643061901e33cc5721d07aaeb6f0daf237554448884a59c0b17087bf0f00a07d940abcb5a6eaf2203b962c24fe33d52f76aa845cb70
|
checksum: d9c6cb1ee3497f6f9346e0ea8619a8bc85844cd7ec6a86dcd6e9f8d29eed2b1a7c80135852af53b2380fb8347cc5b080ea77c294faae707e799e7b9025a40e70
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -2492,14 +2485,14 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"babel-plugin-polyfill-corejs3@npm:^0.2.2":
|
"babel-plugin-polyfill-corejs3@npm:^0.2.2":
|
||||||
version: 0.2.4
|
version: 0.2.5
|
||||||
resolution: "babel-plugin-polyfill-corejs3@npm:0.2.4"
|
resolution: "babel-plugin-polyfill-corejs3@npm:0.2.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-define-polyfill-provider": ^0.2.2
|
"@babel/helper-define-polyfill-provider": ^0.2.2
|
||||||
core-js-compat: ^3.14.0
|
core-js-compat: ^3.16.2
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@babel/core": ^7.0.0-0
|
"@babel/core": ^7.0.0-0
|
||||||
checksum: 49e9b1709fd76bff8b577da38548d05ec0317acaa9cba893bf447af7b0f26494d635b70814452782d079b2b6f25c09dd8fa76e151c0e4ae1397e8295af14e685
|
checksum: 7d464001f6cecc6b85aef71307e3ef17980b15aae4b2ae75d38a3fc3166005f6354932f9c694566970a3fb428f8fbc44f94c46e055a5a85b7fe8820ca16f85b6
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -2734,18 +2727,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.16.6, browserslist@npm:^4.17.0, browserslist@npm:^4.6.4":
|
"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.16.6, browserslist@npm:^4.17.1, browserslist@npm:^4.6.4":
|
||||||
version: 4.17.0
|
version: 4.17.2
|
||||||
resolution: "browserslist@npm:4.17.0"
|
resolution: "browserslist@npm:4.17.2"
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: ^1.0.30001254
|
caniuse-lite: ^1.0.30001261
|
||||||
colorette: ^1.3.0
|
electron-to-chromium: ^1.3.854
|
||||||
electron-to-chromium: ^1.3.830
|
|
||||||
escalade: ^3.1.1
|
escalade: ^3.1.1
|
||||||
node-releases: ^1.1.75
|
nanocolors: ^0.2.12
|
||||||
|
node-releases: ^1.1.76
|
||||||
bin:
|
bin:
|
||||||
browserslist: cli.js
|
browserslist: cli.js
|
||||||
checksum: 9b45ec283d7ba1513bd8be6143dadb34a65e8be7f7210b3a2bce947e019184408df6126238e54f8061e9be74362b19d04eaba739b3ee0d5d41d57ac0ae5fe4cd
|
checksum: 9102023e8a8f541110c2905854d8398245811dfa6a02c3c94a0862c402f11fd42900cd595cb8494e5ee1104120b40e4721108219931bdbb4c59855f138e684da
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -2968,10 +2961,10 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001228, caniuse-lite@npm:^1.0.30001254":
|
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001228, caniuse-lite@npm:^1.0.30001261":
|
||||||
version: 1.0.30001258
|
version: 1.0.30001263
|
||||||
resolution: "caniuse-lite@npm:1.0.30001258"
|
resolution: "caniuse-lite@npm:1.0.30001263"
|
||||||
checksum: 2e87875a7792444f18060f836dbe1a3fcf58dcdd4608c63725dac503aadd617c2bb771c766963fb31528c10fd55201a7cf3ece555a3e754f94ee4a991626c302
|
checksum: 0657b995276a35aaa9ff6900b6e9d3876ef049c8d6065fe9f162cc0b9ac00d8b9c6e6740e87def73876a522dce8e9124170334c157cfbf5c383b7c6db79e520e
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -3079,7 +3072,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ci-info@npm:^3.0.0, ci-info@npm:^3.1.1":
|
"ci-info@npm:^3.1.1":
|
||||||
version: 3.2.0
|
version: 3.2.0
|
||||||
resolution: "ci-info@npm:3.2.0"
|
resolution: "ci-info@npm:3.2.0"
|
||||||
checksum: c68995a94e95ce3f233ff845e62dfc56f2e8ff1e3f5c1361bcdd520cbbc9726d8a54cbc1a685cb9ee19c3c5e71a1dade6dda23eb364b59b8e6c32508a9b761bc
|
checksum: c68995a94e95ce3f233ff845e62dfc56f2e8ff1e3f5c1361bcdd520cbbc9726d8a54cbc1a685cb9ee19c3c5e71a1dade6dda23eb364b59b8e6c32508a9b761bc
|
||||||
@ -3227,7 +3220,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"colorette@npm:^1.2.1, colorette@npm:^1.2.2, colorette@npm:^1.3.0":
|
"colorette@npm:^1.2.2":
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
resolution: "colorette@npm:1.4.0"
|
resolution: "colorette@npm:1.4.0"
|
||||||
checksum: 01c3c16058b182a4ab4c126a65a75faa4d38a20fa7c845090b25453acec6c371bb2c5dceb0a2338511f17902b9d1a9af0cadd8509c9403894b79311032c256c3
|
checksum: 01c3c16058b182a4ab4c126a65a75faa4d38a20fa7c845090b25453acec6c371bb2c5dceb0a2338511f17902b9d1a9af0cadd8509c9403894b79311032c256c3
|
||||||
@ -3398,13 +3391,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"core-js-compat@npm:^3.12.1, core-js-compat@npm:^3.14.0, core-js-compat@npm:^3.16.0":
|
"core-js-compat@npm:^3.12.1, core-js-compat@npm:^3.16.0, core-js-compat@npm:^3.16.2":
|
||||||
version: 3.18.0
|
version: 3.18.1
|
||||||
resolution: "core-js-compat@npm:3.18.0"
|
resolution: "core-js-compat@npm:3.18.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: ^4.17.0
|
browserslist: ^4.17.1
|
||||||
semver: 7.0.0
|
semver: 7.0.0
|
||||||
checksum: 2bf11676215d912c099078564bbbd837ff6b4a18635661414f3d72b4b78bee883117d583645629999407f910be311624d0380aefec69b3b77ef91001bcb30b19
|
checksum: d7afbd879fa1fd6bd20778308bfafc8b4993b13a4c24cb0793baad4b027d13f59fef78b867137b0a570df708ea2d0766a067d8c5b3dc4e5e4747d70dc91e1c98
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -3416,9 +3409,9 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"core-js@npm:^3":
|
"core-js@npm:^3":
|
||||||
version: 3.18.0
|
version: 3.18.1
|
||||||
resolution: "core-js@npm:3.18.0"
|
resolution: "core-js@npm:3.18.1"
|
||||||
checksum: 192c345eb0c8b9d582ebed798cf124e00cd8241303c3c801987563f8ebb8cb991e2ff91494c258752014c29d5515070d2c0a862687401c7d7e1e2f96f8980d42
|
checksum: 89cac0fe657df722d10b0e658ee76af12a614c0a75fe3fb11e87c2e3f27f6d7e609e3bf40748da5d8feb055b0535766a583ff1d1ac89dba57105f6f1ad64dc21
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -4096,10 +4089,10 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"electron-to-chromium@npm:^1.3.830":
|
"electron-to-chromium@npm:^1.3.854":
|
||||||
version: 1.3.843
|
version: 1.3.857
|
||||||
resolution: "electron-to-chromium@npm:1.3.843"
|
resolution: "electron-to-chromium@npm:1.3.857"
|
||||||
checksum: 4adb18cf1c0f3ee8014fe6976c3e9a2c5f05353a9fd9712cf95a578ede66cd3d85106a764b6d0291c81ca31edcd8f5da4a2f7606858a11e31e410c1e6ea3f303
|
checksum: 59d3dcf7ec7d3c8209647cadb6cc9d2a14b9ef9cb2ae7c9837c9dbe38301838e6629bfa002121d3dc4c00e982327d6337d6d5460902f02f8a80d0d81c63f1728
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -4118,13 +4111,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"emoji-regex@npm:^7.0.1":
|
|
||||||
version: 7.0.3
|
|
||||||
resolution: "emoji-regex@npm:7.0.3"
|
|
||||||
checksum: 9159b2228b1511f2870ac5920f394c7e041715429a68459ebe531601555f11ea782a8e1718f969df2711d38c66268174407cbca57ce36485544f695c2dfdc96e
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"emoji-regex@npm:^8.0.0":
|
"emoji-regex@npm:^8.0.0":
|
||||||
version: 8.0.0
|
version: 8.0.0
|
||||||
resolution: "emoji-regex@npm:8.0.0"
|
resolution: "emoji-regex@npm:8.0.0"
|
||||||
@ -4226,8 +4212,8 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"es-abstract@npm:^1.17.2, es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.18.2":
|
"es-abstract@npm:^1.17.2, es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.18.2":
|
||||||
version: 1.18.6
|
version: 1.19.0
|
||||||
resolution: "es-abstract@npm:1.18.6"
|
resolution: "es-abstract@npm:1.19.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind: ^1.0.2
|
call-bind: ^1.0.2
|
||||||
es-to-primitive: ^1.2.1
|
es-to-primitive: ^1.2.1
|
||||||
@ -4240,14 +4226,16 @@ __metadata:
|
|||||||
is-callable: ^1.2.4
|
is-callable: ^1.2.4
|
||||||
is-negative-zero: ^2.0.1
|
is-negative-zero: ^2.0.1
|
||||||
is-regex: ^1.1.4
|
is-regex: ^1.1.4
|
||||||
|
is-shared-array-buffer: ^1.0.1
|
||||||
is-string: ^1.0.7
|
is-string: ^1.0.7
|
||||||
|
is-weakref: ^1.0.1
|
||||||
object-inspect: ^1.11.0
|
object-inspect: ^1.11.0
|
||||||
object-keys: ^1.1.1
|
object-keys: ^1.1.1
|
||||||
object.assign: ^4.1.2
|
object.assign: ^4.1.2
|
||||||
string.prototype.trimend: ^1.0.4
|
string.prototype.trimend: ^1.0.4
|
||||||
string.prototype.trimstart: ^1.0.4
|
string.prototype.trimstart: ^1.0.4
|
||||||
unbox-primitive: ^1.0.1
|
unbox-primitive: ^1.0.1
|
||||||
checksum: 8903ed187a9f66a8b21385401770124b37ded75a9cd99c7ea22e709ca667e7b549f37dc8bf9bf458a6cdb908c95a16fed389e2871bb3a28bfaab46db555cb1f3
|
checksum: 107eaf54c72405c4956211aae5ee13fab95582ad40efa3890355a4f6a65fe48b6968fe9e36e9a4f408d330d56655703cf214fa750776c07990dc189ffe67cd26
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -4911,8 +4899,8 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7":
|
"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7":
|
||||||
version: 7.1.7
|
version: 7.2.0
|
||||||
resolution: "glob@npm:7.1.7"
|
resolution: "glob@npm:7.2.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
fs.realpath: ^1.0.0
|
fs.realpath: ^1.0.0
|
||||||
inflight: ^1.0.4
|
inflight: ^1.0.4
|
||||||
@ -4920,7 +4908,7 @@ fsevents@~2.3.2:
|
|||||||
minimatch: ^3.0.4
|
minimatch: ^3.0.4
|
||||||
once: ^1.3.0
|
once: ^1.3.0
|
||||||
path-is-absolute: ^1.0.0
|
path-is-absolute: ^1.0.0
|
||||||
checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb8
|
checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -5597,11 +5585,11 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"is-core-module@npm:^2.2.0":
|
"is-core-module@npm:^2.2.0":
|
||||||
version: 2.6.0
|
version: 2.7.0
|
||||||
resolution: "is-core-module@npm:2.6.0"
|
resolution: "is-core-module@npm:2.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
has: ^1.0.3
|
has: ^1.0.3
|
||||||
checksum: 183b3b96fed19822b13959876b0317e61fc2cb5ebcbc21639904c81f7ae328af57f8e18cc4750a9c4abebd686130c70d34a89521e57dbe002edfa4614507ce18
|
checksum: 8ec6dc714438ef9dc4dae10c94d21bd5aa67244da7e85bd9e42f0fd298514181214f6bebe358a486477c1242458b170ad7a8c936be0be15d465862fa61d3d1c7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -5726,11 +5714,11 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1":
|
"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1":
|
||||||
version: 4.0.1
|
version: 4.0.3
|
||||||
resolution: "is-glob@npm:4.0.1"
|
resolution: "is-glob@npm:4.0.3"
|
||||||
dependencies:
|
dependencies:
|
||||||
is-extglob: ^2.1.1
|
is-extglob: ^2.1.1
|
||||||
checksum: 84627cad11b4e745f5db5a163f32c47b711585a5ff6e14f8f8d026db87f4cdd3e2c95f6fa1f94ad22e469f36d819ae2814f03f9c668b164422ac3354a94672d3
|
checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -5813,6 +5801,13 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"is-shared-array-buffer@npm:^1.0.1":
|
||||||
|
version: 1.0.1
|
||||||
|
resolution: "is-shared-array-buffer@npm:1.0.1"
|
||||||
|
checksum: 2ffb92533e64e2876e6cfe6906871d28400b6f1a53130fe652ec8007bc0e5044d05e7af8e31bdc992fbba520bd92938cfbeedd0f286be92f250c7c76191c4d90
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"is-ssh@npm:^1.3.0":
|
"is-ssh@npm:^1.3.0":
|
||||||
version: 1.3.3
|
version: 1.3.3
|
||||||
resolution: "is-ssh@npm:1.3.3"
|
resolution: "is-ssh@npm:1.3.3"
|
||||||
@ -5847,6 +5842,15 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"is-weakref@npm:^1.0.1":
|
||||||
|
version: 1.0.1
|
||||||
|
resolution: "is-weakref@npm:1.0.1"
|
||||||
|
dependencies:
|
||||||
|
call-bind: ^1.0.0
|
||||||
|
checksum: fdafb7b955671dd2f9658ff47c86e4025c0650fc68a3542a40e5a75898a763b1abd6b1e1f9f13207eed49541cdd76af67d73c44989ea358b201b70274cf8f6c1
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"is-windows@npm:^1.0.2":
|
"is-windows@npm:^1.0.2":
|
||||||
version: 1.0.2
|
version: 1.0.2
|
||||||
resolution: "is-windows@npm:1.0.2"
|
resolution: "is-windows@npm:1.0.2"
|
||||||
@ -5903,11 +5907,11 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"jiti@npm:^1.9.2":
|
"jiti@npm:^1.9.2":
|
||||||
version: 1.12.0
|
version: 1.12.5
|
||||||
resolution: "jiti@npm:1.12.0"
|
resolution: "jiti@npm:1.12.5"
|
||||||
bin:
|
bin:
|
||||||
jiti: bin/jiti.js
|
jiti: bin/jiti.js
|
||||||
checksum: 7490f80be8504f107c0983f9e6dd38ff55764f295a334075580468d01d63a2c7057be1847e389ae3c86e09cfcd60e653b51a2c00ca4d175a26e392eb3471f96a
|
checksum: 00a1674f38b77c725597c175389da67894d08b386d1d3dac9ecafec3abaf75793b2ea369ed2e688f2e03f495488c843da790c111cc5e24aa533c09051a6fe704
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -6436,14 +6440,7 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"mime-db@npm:1.49.0":
|
"mime-db@npm:1.50.0, mime-db@npm:>= 1.43.0 < 2":
|
||||||
version: 1.49.0
|
|
||||||
resolution: "mime-db@npm:1.49.0"
|
|
||||||
checksum: 3744efc45b17896ff8a5934a761c434d5ffe3c7816662002d799ca9934347e00f99ae4d9b4ddf1c48d391cc9e522cc4523a6e77e7701f8e27c426e3e1d6e215a
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"mime-db@npm:>= 1.43.0 < 2":
|
|
||||||
version: 1.50.0
|
version: 1.50.0
|
||||||
resolution: "mime-db@npm:1.50.0"
|
resolution: "mime-db@npm:1.50.0"
|
||||||
checksum: 95fcc19c3664ae72391c8a7e4015dde7fb6817c98c951493ca3a1d48050feb8ee08810a372ce7d9e16310042d26e5bda168916f600583a9a583655eeea8ff5f5
|
checksum: 95fcc19c3664ae72391c8a7e4015dde7fb6817c98c951493ca3a1d48050feb8ee08810a372ce7d9e16310042d26e5bda168916f600583a9a583655eeea8ff5f5
|
||||||
@ -6451,11 +6448,11 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"mime-types@npm:^2.1.19, mime-types@npm:^2.1.27, mime-types@npm:^2.1.30, mime-types@npm:~2.1.24":
|
"mime-types@npm:^2.1.19, mime-types@npm:^2.1.27, mime-types@npm:^2.1.30, mime-types@npm:~2.1.24":
|
||||||
version: 2.1.32
|
version: 2.1.33
|
||||||
resolution: "mime-types@npm:2.1.32"
|
resolution: "mime-types@npm:2.1.33"
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db: 1.49.0
|
mime-db: 1.50.0
|
||||||
checksum: 4487dfd2f872126d2c219ec731ad47a6169a438d5a4cce6ecef7594ce08eaefaf0d85429485a76ec005f095016c7ec488a24cf8bfcc0ea06de0355e23395746f
|
checksum: 05f2a0b3f169fbc51d79bdc7674ceb379dd07dbeadb0143059a7def865224686ee9f9051aeb340e98b6c11dbc06794ce0122181db4312cb1ad054fd90b0d510e
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -6706,12 +6703,19 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"nanocolors@npm:^0.2.12, nanocolors@npm:^0.2.2, nanocolors@npm:^0.2.8":
|
||||||
|
version: 0.2.12
|
||||||
|
resolution: "nanocolors@npm:0.2.12"
|
||||||
|
checksum: a34a63dcca29eede3db41afd1421f130423fc99e73f6c89166f57815bbf0441f02a6112651b068acfd309707215f48eec15dd38e790a8225d6762503a7c175c6
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"nanoid@npm:^3.1.23":
|
"nanoid@npm:^3.1.23":
|
||||||
version: 3.1.25
|
version: 3.1.28
|
||||||
resolution: "nanoid@npm:3.1.25"
|
resolution: "nanoid@npm:3.1.28"
|
||||||
bin:
|
bin:
|
||||||
nanoid: bin/nanoid.cjs
|
nanoid: bin/nanoid.cjs
|
||||||
checksum: e2353828c7d8fde65265e9c981380102e2021f292038a93fd27288bad390339833286e8cbc7531abe1cb2c6b317e55f38b895dcb775151637bb487388558e0ff
|
checksum: ae2fa9f3ce7a690ec62fc2fdf92345f023b20db760024f767c25ad392bde6414dc0b44a8e66dc1209426f36e4771e63b09ad2b49d8f1b04063b37e21b46af8d0
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -6768,9 +6772,11 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"node-fetch@npm:^2.6.1":
|
"node-fetch@npm:^2.6.1":
|
||||||
version: 2.6.2
|
version: 2.6.5
|
||||||
resolution: "node-fetch@npm:2.6.2"
|
resolution: "node-fetch@npm:2.6.5"
|
||||||
checksum: de367eae1dfbc0e12283c1cf92256ea7fba7eac8655e2e51ebb217727162396fc6cf24689ef9fc6accf075e3991e2ffaa061f7cfaa958215329649b2297ff06d
|
dependencies:
|
||||||
|
whatwg-url: ^5.0.0
|
||||||
|
checksum: 4e83db450718e70762882f00d96f647a7f2f3170035225934ddd5450cb1d91ef339ceb180d3687bcb0a6ed78c3fa5636ce8d3e44ec81ab59e0224ebf8965f65f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -6842,10 +6848,10 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"node-releases@npm:^1.1.75":
|
"node-releases@npm:^1.1.76":
|
||||||
version: 1.1.76
|
version: 1.1.77
|
||||||
resolution: "node-releases@npm:1.1.76"
|
resolution: "node-releases@npm:1.1.77"
|
||||||
checksum: 10174cb880fffbb2896954599a2551da66127dd3c65703c827536fe9a4b4431545a9e3378c2006fb5ba59d0f0764ceff87c9f7eb0e84fabf7958411fccd0edd1
|
checksum: eb2fcb45310e7d77f82bfdadeca546a698d258e011f15d88ad9a452a5e838a672ec532906581096ca19c66284a788330c3b09227ffc540e67228730f41b9c2e2
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -8249,13 +8255,12 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"postcss@npm:^7.0.0, postcss@npm:^7.0.1, postcss@npm:^7.0.14, postcss@npm:^7.0.17, postcss@npm:^7.0.2, postcss@npm:^7.0.27, postcss@npm:^7.0.32, postcss@npm:^7.0.36, postcss@npm:^7.0.5, postcss@npm:^7.0.6":
|
"postcss@npm:^7.0.0, postcss@npm:^7.0.1, postcss@npm:^7.0.14, postcss@npm:^7.0.17, postcss@npm:^7.0.2, postcss@npm:^7.0.27, postcss@npm:^7.0.32, postcss@npm:^7.0.36, postcss@npm:^7.0.5, postcss@npm:^7.0.6":
|
||||||
version: 7.0.36
|
version: 7.0.38
|
||||||
resolution: "postcss@npm:7.0.36"
|
resolution: "postcss@npm:7.0.38"
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: ^2.4.2
|
nanocolors: ^0.2.2
|
||||||
source-map: ^0.6.1
|
source-map: ^0.6.1
|
||||||
supports-color: ^6.1.0
|
checksum: 737ba0355721880532167d3fbdc580a5ba95a5398b86f3ace610eff99aa11f3c32eb8eac0cfd8ea201a5372f43af3ed7bb6e7643263956fe1d36e927aaf3c4d4
|
||||||
checksum: 4cfc0989b9ad5d0e8971af80d87f9c5beac5c84cb89ff22ad69852edf73c0a2fa348e7e0a135b5897bf893edad0fe86c428769050431ad9b532f072ff530828d
|
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -9117,9 +9122,9 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3":
|
"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3":
|
||||||
version: 3.0.4
|
version: 3.0.5
|
||||||
resolution: "signal-exit@npm:3.0.4"
|
resolution: "signal-exit@npm:3.0.5"
|
||||||
checksum: e72633b05df8d65035a0b31718b1a587f55b25953a8e7b959f6c3a963cc0abcb70a0d78a7e0792bc104c874525efdc619e823095d382a775641e3867b1b68c54
|
checksum: a1d3d0d63f581bd298b30ed8f6de21b73a0fe5a0c0f123b2e8ed7168bbff8f4c1a45e681de12a1966a89bb725d8eb727816be1c436e136951f31953e4a201587
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -9377,11 +9382,11 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"std-env@npm:^2.2.1, std-env@npm:^2.3.0":
|
"std-env@npm:^2.2.1, std-env@npm:^2.3.0":
|
||||||
version: 2.3.0
|
version: 2.3.1
|
||||||
resolution: "std-env@npm:2.3.0"
|
resolution: "std-env@npm:2.3.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
ci-info: ^3.0.0
|
ci-info: ^3.1.1
|
||||||
checksum: da0b81e217d920770448e53d660b6b0800d3f6fde201812cb7f5505a6fffe578b21188301214fecc227cc2db6849eb736f6d1975e5fa7ee179e9240da81fc88b
|
checksum: 049be0d6fb7ff544b3061a53ccaddd3ab2f6930f50b432f54dc82b22cb813c6e408ed69807c7c6bc592fccfc92d5c431dcc1aacd7c9ca99d304948f3149a08da
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -9460,25 +9465,14 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"string-width@npm:^3.0.0":
|
|
||||||
version: 3.1.0
|
|
||||||
resolution: "string-width@npm:3.1.0"
|
|
||||||
dependencies:
|
|
||||||
emoji-regex: ^7.0.1
|
|
||||||
is-fullwidth-code-point: ^2.0.0
|
|
||||||
strip-ansi: ^5.1.0
|
|
||||||
checksum: 57f7ca73d201682816d573dc68bd4bb8e1dff8dc9fcf10470fdfc3474135c97175fec12ea6a159e67339b41e86963112355b64529489af6e7e70f94a7caf08b2
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.2":
|
"string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.2":
|
||||||
version: 4.2.2
|
version: 4.2.3
|
||||||
resolution: "string-width@npm:4.2.2"
|
resolution: "string-width@npm:4.2.3"
|
||||||
dependencies:
|
dependencies:
|
||||||
emoji-regex: ^8.0.0
|
emoji-regex: ^8.0.0
|
||||||
is-fullwidth-code-point: ^3.0.0
|
is-fullwidth-code-point: ^3.0.0
|
||||||
strip-ansi: ^6.0.0
|
strip-ansi: ^6.0.1
|
||||||
checksum: 343e089b0e66e0f72aab4ad1d9b6f2c9cc5255844b0c83fd9b53f2a3b3fd0421bdd6cb05be96a73117eb012db0887a6c1d64ca95aaa50c518e48980483fea0ab
|
checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -9538,21 +9532,12 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"strip-ansi@npm:^5.1.0":
|
"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
|
||||||
version: 5.2.0
|
version: 6.0.1
|
||||||
resolution: "strip-ansi@npm:5.2.0"
|
resolution: "strip-ansi@npm:6.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex: ^4.1.0
|
ansi-regex: ^5.0.1
|
||||||
checksum: bdb5f76ade97062bd88e7723aa019adbfacdcba42223b19ccb528ffb9fb0b89a5be442c663c4a3fb25268eaa3f6ea19c7c3fbae830bd1562d55adccae1fcec46
|
checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"strip-ansi@npm:^6.0.0":
|
|
||||||
version: 6.0.0
|
|
||||||
resolution: "strip-ansi@npm:6.0.0"
|
|
||||||
dependencies:
|
|
||||||
ansi-regex: ^5.0.0
|
|
||||||
checksum: 04c3239ede44c4d195b0e66c0ad58b932f08bec7d05290416d361ff908ad282ecdaf5d9731e322c84f151d427436bde01f05b7422c3ec26dd927586736b0e5d0
|
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -9603,15 +9588,6 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"supports-color@npm:^6.1.0":
|
|
||||||
version: 6.1.0
|
|
||||||
resolution: "supports-color@npm:6.1.0"
|
|
||||||
dependencies:
|
|
||||||
has-flag: ^3.0.0
|
|
||||||
checksum: 74358f9535c83ee113fbaac354b11e808060f6e7d8722082ee43af3578469134e89d00026dce2a6b93ce4e5b89d0e9a10f638b2b9f64c7838c2fb2883a47b3d5
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0":
|
"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0":
|
||||||
version: 7.2.0
|
version: 7.2.0
|
||||||
resolution: "supports-color@npm:7.2.0"
|
resolution: "supports-color@npm:7.2.0"
|
||||||
@ -9724,15 +9700,15 @@ fsevents@~2.3.2:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"terser@npm:^5.3.4":
|
"terser@npm:^5.3.4":
|
||||||
version: 5.8.0
|
version: 5.9.0
|
||||||
resolution: "terser@npm:5.8.0"
|
resolution: "terser@npm:5.9.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
commander: ^2.20.0
|
commander: ^2.20.0
|
||||||
source-map: ~0.7.2
|
source-map: ~0.7.2
|
||||||
source-map-support: ~0.5.20
|
source-map-support: ~0.5.20
|
||||||
bin:
|
bin:
|
||||||
terser: bin/terser
|
terser: bin/terser
|
||||||
checksum: 770b7d3fad7eece4a423464a9774e4456b7aca70b869d0c783bde42d7453fac2670ef7532dbce0a5a6f79038c367f2cb6353995190b730e2c52cb4914f3d671e
|
checksum: 11c1246b1991015a8881742878af779e3863fad42f626ffda957dbf28c94bf51e7994cffb9ffbec86ff3c23ab45ffa6d79d453c15e664306e35fc7b2c4eee5f4
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -9877,6 +9853,13 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"tr46@npm:~0.0.3":
|
||||||
|
version: 0.0.3
|
||||||
|
resolution: "tr46@npm:0.0.3"
|
||||||
|
checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"ts-pnp@npm:^1.1.6":
|
"ts-pnp@npm:^1.1.6":
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
resolution: "ts-pnp@npm:1.2.0"
|
resolution: "ts-pnp@npm:1.2.0"
|
||||||
@ -10380,6 +10363,13 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"webidl-conversions@npm:^3.0.0":
|
||||||
|
version: 3.0.1
|
||||||
|
resolution: "webidl-conversions@npm:3.0.1"
|
||||||
|
checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"webpack-bundle-analyzer@npm:^4.4.1":
|
"webpack-bundle-analyzer@npm:^4.4.1":
|
||||||
version: 4.4.2
|
version: 4.4.2
|
||||||
resolution: "webpack-bundle-analyzer@npm:4.4.2"
|
resolution: "webpack-bundle-analyzer@npm:4.4.2"
|
||||||
@ -10500,6 +10490,16 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"whatwg-url@npm:^5.0.0":
|
||||||
|
version: 5.0.0
|
||||||
|
resolution: "whatwg-url@npm:5.0.0"
|
||||||
|
dependencies:
|
||||||
|
tr46: ~0.0.3
|
||||||
|
webidl-conversions: ^3.0.0
|
||||||
|
checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"which-boxed-primitive@npm:^1.0.2":
|
"which-boxed-primitive@npm:^1.0.2":
|
||||||
version: 1.0.2
|
version: 1.0.2
|
||||||
resolution: "which-boxed-primitive@npm:1.0.2"
|
resolution: "which-boxed-primitive@npm:1.0.2"
|
||||||
|
@ -9,11 +9,11 @@ import { fixtureDir, resolveWorkspace } from '../utils.mjs'
|
|||||||
|
|
||||||
const isBridge = Boolean(process.env.TEST_BRIDGE)
|
const isBridge = Boolean(process.env.TEST_BRIDGE)
|
||||||
|
|
||||||
export function importModule (path) {
|
export function importModule(path) {
|
||||||
return import(pathToFileURL(path).href)
|
return import(pathToFileURL(path).href)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupTest (preset) {
|
export function setupTest(preset) {
|
||||||
const fixture = isBridge ? 'bridge' : 'basic'
|
const fixture = isBridge ? 'bridge' : 'basic'
|
||||||
const rootDir = fixtureDir(fixture)
|
const rootDir = fixtureDir(fixture)
|
||||||
const buildDir = resolve(rootDir, '.nuxt-' + preset)
|
const buildDir = resolve(rootDir, '.nuxt-' + preset)
|
||||||
@ -28,7 +28,7 @@ export function setupTest (preset) {
|
|||||||
this.timeout(60000)
|
this.timeout(60000)
|
||||||
const nuxtCLI = isBridge
|
const nuxtCLI = isBridge
|
||||||
? resolve(ctx.rootDir, 'node_modules/nuxt/bin/nuxt.js')
|
? resolve(ctx.rootDir, 'node_modules/nuxt/bin/nuxt.js')
|
||||||
: resolveWorkspace('packages/nuxi/bin/nuxi.cjs')
|
: resolveWorkspace('packages/nuxi/bin/nuxi.mjs')
|
||||||
|
|
||||||
await execa('node', [nuxtCLI, 'build', ctx.rootDir], {
|
await execa('node', [nuxtCLI, 'build', ctx.rootDir], {
|
||||||
env: {
|
env: {
|
||||||
@ -49,11 +49,11 @@ export function setupTest (preset) {
|
|||||||
return ctx
|
return ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function startServer (ctx, handle) {
|
export async function startServer(ctx, handle) {
|
||||||
ctx.server = await listen(handle)
|
ctx.server = await listen(handle)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function testNitroBehavior (_ctx, getHandler) {
|
export function testNitroBehavior(_ctx, getHandler) {
|
||||||
let handler
|
let handler
|
||||||
|
|
||||||
it('setup handler', async () => {
|
it('setup handler', async () => {
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
import { existsSync, readFileSync, writeFileSync, rmSync, mkdirSync } from 'fs'
|
import { existsSync, readFileSync, writeFileSync, rmSync, mkdirSync } from 'fs'
|
||||||
import { execSync } from 'child_process'
|
import { execSync } from 'child_process'
|
||||||
import { resolve, dirname } from 'pathe'
|
import { resolve, dirname } from 'pathe'
|
||||||
import { fileURLToPath } from 'url'
|
|
||||||
import defu from 'defu'
|
import defu from 'defu'
|
||||||
import hash from 'object-hash'
|
import hash from 'object-hash'
|
||||||
import execa from 'execa'
|
import execa from 'execa'
|
||||||
|
import { createCommonJS } from 'mlly'
|
||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
const cjs = createCommonJS(import.meta.url)
|
||||||
|
|
||||||
export function resolveWorkspace (name) {
|
export function resolveWorkspace (name) {
|
||||||
return resolve(__dirname, '../', name)
|
return resolve(cjs.__dirname, '../', name)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function fixtureDir (name) {
|
export function fixtureDir (name) {
|
||||||
return resolve(__dirname, 'fixtures', name)
|
return resolve(cjs.__dirname, 'fixtures', name)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function execNuxtCLI (args, opts) {
|
export async function execNuxtCLI (args, opts) {
|
||||||
const nuxtCLI = resolveWorkspace('packages/nuxi/bin/nuxi.cjs')
|
const nuxtCLI = resolveWorkspace('packages/nuxi/bin/nuxi.mjs')
|
||||||
await execa('node', [nuxtCLI, ...args], opts)
|
await execa('node', [nuxtCLI, ...args], opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": false,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"target": "ESNext",
|
"target": "ESNext",
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
@ -15,8 +16,12 @@
|
|||||||
"chai"
|
"chai"
|
||||||
],
|
],
|
||||||
"paths": {
|
"paths": {
|
||||||
"#app": ["./packages/nuxt3/src/app/index"],
|
"#app": [
|
||||||
"#app/*": ["./packages/nuxt3/src/app/*"]
|
"./packages/nuxt3/src/app/index"
|
||||||
|
],
|
||||||
|
"#app/*": [
|
||||||
|
"./packages/nuxt3/src/app/*"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
|
38
yarn.lock
38
yarn.lock
@ -1448,6 +1448,7 @@ __metadata:
|
|||||||
estree-walker: ^2.0.2
|
estree-walker: ^2.0.2
|
||||||
fs-extra: ^10.0.0
|
fs-extra: ^10.0.0
|
||||||
magic-string: ^0.25.7
|
magic-string: ^0.25.7
|
||||||
|
mlly: ^0.2.2
|
||||||
node-fetch: ^3.0.0
|
node-fetch: ^3.0.0
|
||||||
nuxi: ^0.10.0
|
nuxi: ^0.10.0
|
||||||
nuxt-swc: ^0.1.0
|
nuxt-swc: ^0.1.0
|
||||||
@ -1492,7 +1493,7 @@ __metadata:
|
|||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@nuxt/kit@workspace:packages/kit"
|
resolution: "@nuxt/kit@workspace:packages/kit"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/lodash": ^4.14.175
|
"@types/lodash.template": ^4
|
||||||
consola: ^2.15.3
|
consola: ^2.15.3
|
||||||
create-require: ^1.1.1
|
create-require: ^1.1.1
|
||||||
defu: ^5.0.0
|
defu: ^5.0.0
|
||||||
@ -1501,7 +1502,7 @@ __metadata:
|
|||||||
hash-sum: ^2.0.0
|
hash-sum: ^2.0.0
|
||||||
hookable: ^5.0.0
|
hookable: ^5.0.0
|
||||||
jiti: ^1.12.6
|
jiti: ^1.12.6
|
||||||
lodash: ^4.17.21
|
lodash.template: ^4.5.0
|
||||||
pathe: ^0.2.0
|
pathe: ^0.2.0
|
||||||
rc9: ^1.2.0
|
rc9: ^1.2.0
|
||||||
scule: ^0.2.1
|
scule: ^0.2.1
|
||||||
@ -1559,6 +1560,7 @@ __metadata:
|
|||||||
jiti: ^1.12.6
|
jiti: ^1.12.6
|
||||||
listhen: ^0.2.4
|
listhen: ^0.2.4
|
||||||
mime: ^2.5.2
|
mime: ^2.5.2
|
||||||
|
mlly: ^0.2.2
|
||||||
node-fetch: ^3.0.0
|
node-fetch: ^3.0.0
|
||||||
ohmyfetch: ^0.3.1
|
ohmyfetch: ^0.3.1
|
||||||
ora: ^6.0.1
|
ora: ^6.0.1
|
||||||
@ -1575,7 +1577,6 @@ __metadata:
|
|||||||
unbuild: latest
|
unbuild: latest
|
||||||
unenv: ^0.3.10
|
unenv: ^0.3.10
|
||||||
unstorage: ^0.2.8
|
unstorage: ^0.2.8
|
||||||
upath: ^2.0.1
|
|
||||||
vue: 3.2.19
|
vue: 3.2.19
|
||||||
vue-bundle-renderer: ^0.3.1
|
vue-bundle-renderer: ^0.3.1
|
||||||
vue-server-renderer: ^2.6.14
|
vue-server-renderer: ^2.6.14
|
||||||
@ -1643,9 +1644,10 @@ __metadata:
|
|||||||
fs-extra: ^10.0.0
|
fs-extra: ^10.0.0
|
||||||
glob: ^7.2.0
|
glob: ^7.2.0
|
||||||
hash-sum: ^2.0.0
|
hash-sum: ^2.0.0
|
||||||
lodash: ^4.17.21
|
lodash-es: ^4.17.21
|
||||||
memfs: ^3.3.0
|
memfs: ^3.3.0
|
||||||
mini-css-extract-plugin: ^2.3.0
|
mini-css-extract-plugin: ^2.3.0
|
||||||
|
mlly: ^0.2.2
|
||||||
pathe: ^0.2.0
|
pathe: ^0.2.0
|
||||||
pify: ^5.0.0
|
pify: ^5.0.0
|
||||||
postcss: ^8.3.8
|
postcss: ^8.3.8
|
||||||
@ -2281,7 +2283,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/lodash@npm:^4.14.175":
|
"@types/lodash.template@npm:^4":
|
||||||
|
version: 4.5.0
|
||||||
|
resolution: "@types/lodash.template@npm:4.5.0"
|
||||||
|
dependencies:
|
||||||
|
"@types/lodash": "*"
|
||||||
|
checksum: 7650ecfad4ee1d51404913891f74f48c7837ba9b66fd4681624c943fa8df85231e5efb5339927f6542e9ef4bedb6aaac99f6e878118f2bdb04198bc86013209a
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/lodash@npm:*":
|
||||||
version: 4.14.175
|
version: 4.14.175
|
||||||
resolution: "@types/lodash@npm:4.14.175"
|
resolution: "@types/lodash@npm:4.14.175"
|
||||||
checksum: 50721f33faa542f1b9f62f2ba769ed353c6036711e92bd89ce569f2ed247e38fb2a2899f6fd46466b1690fea7ae0239471e6a6093c54e8f2b0613e43e8eac19c
|
checksum: 50721f33faa542f1b9f62f2ba769ed353c6036711e92bd89ce569f2ed247e38fb2a2899f6fd46466b1690fea7ae0239471e6a6093c54e8f2b0613e43e8eac19c
|
||||||
@ -8827,6 +8838,13 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"lodash-es@npm:^4.17.21":
|
||||||
|
version: 4.17.21
|
||||||
|
resolution: "lodash-es@npm:4.17.21"
|
||||||
|
checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"lodash._reinterpolate@npm:^3.0.0":
|
"lodash._reinterpolate@npm:^3.0.0":
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
resolution: "lodash._reinterpolate@npm:3.0.0"
|
resolution: "lodash._reinterpolate@npm:3.0.0"
|
||||||
@ -9460,7 +9478,7 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"mlly@npm:^0.2.4":
|
"mlly@npm:^0.2.2, mlly@npm:^0.2.4":
|
||||||
version: 0.2.4
|
version: 0.2.4
|
||||||
resolution: "mlly@npm:0.2.4"
|
resolution: "mlly@npm:0.2.4"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -10050,6 +10068,7 @@ fsevents@~2.3.2:
|
|||||||
fsevents: ~2.3.2
|
fsevents: ~2.3.2
|
||||||
jiti: ^1.12.6
|
jiti: ^1.12.6
|
||||||
listhen: ^0.2.4
|
listhen: ^0.2.4
|
||||||
|
mlly: ^0.2.2
|
||||||
mri: ^1.2.0
|
mri: ^1.2.0
|
||||||
pathe: ^0.2.0
|
pathe: ^0.2.0
|
||||||
scule: ^0.2.1
|
scule: ^0.2.1
|
||||||
@ -10059,8 +10078,8 @@ fsevents@~2.3.2:
|
|||||||
fsevents:
|
fsevents:
|
||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
nu: ./bin/nuxi.cjs
|
nu: ./bin/nuxi.mjs
|
||||||
nuxi: ./bin/nuxi.cjs
|
nuxi: ./bin/nuxi.mjs
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
@ -10153,6 +10172,7 @@ fsevents@~2.3.2:
|
|||||||
hash-sum: ^2.0.0
|
hash-sum: ^2.0.0
|
||||||
hookable: ^5.0.0
|
hookable: ^5.0.0
|
||||||
ignore: ^5.1.8
|
ignore: ^5.1.8
|
||||||
|
mlly: ^0.2.2
|
||||||
nuxi: ^0.10.0
|
nuxi: ^0.10.0
|
||||||
ohmyfetch: ^0.3.1
|
ohmyfetch: ^0.3.1
|
||||||
pathe: ^0.2.0
|
pathe: ^0.2.0
|
||||||
@ -10169,7 +10189,7 @@ fsevents@~2.3.2:
|
|||||||
"@vue/shared": 3.2.19
|
"@vue/shared": 3.2.19
|
||||||
vue: 3.2.19
|
vue: 3.2.19
|
||||||
bin:
|
bin:
|
||||||
nuxt: ./bin/nuxt.cjs
|
nuxt: ./bin/nuxt.mjs
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user