diff --git a/packages/qwik/package.json b/packages/qwik/package.json index d4ba13ab38c..d34a7070142 100644 --- a/packages/qwik/package.json +++ b/packages/qwik/package.json @@ -28,8 +28,7 @@ "devDependencies": { "@builder.io/qwik-dom": "workspace:*", "image-size": "^1.0.2", - "kleur": "4.1.5", - "vitefu": "^0.2.5" + "kleur": "4.1.5" }, "engines": { "node": ">=16.8.0 <18.0.0 || >=18.11" diff --git a/packages/qwik/src/optimizer/src/plugins/vite.ts b/packages/qwik/src/optimizer/src/plugins/vite.ts index 41331bbcc20..b1b85a43033 100644 --- a/packages/qwik/src/optimizer/src/plugins/vite.ts +++ b/packages/qwik/src/optimizer/src/plugins/vite.ts @@ -1,5 +1,4 @@ import type { UserConfig, ViteDevServer, Plugin as VitePlugin } from 'vite'; -import { findDepPkgJsonPath } from 'vitefu'; import { QWIK_LOADER_DEFAULT_DEBUG, QWIK_LOADER_DEFAULT_MINIFIED } from '../scripts'; import type { EntryStrategy, @@ -687,6 +686,7 @@ const findQwikRoots = async ( ): Promise => { if (sys.env === 'node') { const fs: typeof import('fs') = await sys.dynamicImport('node:fs'); + const { resolvePackageData }: typeof import('vite') = await sys.strictDynamicImport('vite'); try { const data = await fs.promises.readFile(packageJsonPath, { encoding: 'utf-8' }); @@ -705,23 +705,21 @@ const findQwikRoots = async ( } const basedir = sys.cwd(); - const qwikDirs = await Promise.all( - packages.map(async (id) => { - const pkgJsonPath = await findDepPkgJsonPath(id, basedir); - if (pkgJsonPath) { - const pkgJsonContent = await fs.promises.readFile(pkgJsonPath, 'utf-8'); - const pkgJson = JSON.parse(pkgJsonContent); - const qwikPath = pkgJson['qwik']; + const qwikDirs = packages + .map((id) => { + const pkgData = resolvePackageData(id, basedir); + if (pkgData) { + const qwikPath = pkgData.data['qwik']; if (qwikPath) { return { id, - path: sys.path.resolve(sys.path.dirname(pkgJsonPath), qwikPath), + path: sys.path.resolve(pkgData.dir, qwikPath), }; } } }) - ); - return qwikDirs.filter(isNotNullable); + .filter(isNotNullable); + return qwikDirs; } catch (e) { console.error(e); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a894544996b..0132bc30540 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -477,9 +477,6 @@ importers: kleur: specifier: 4.1.5 version: 4.1.5 - vitefu: - specifier: ^0.2.5 - version: 0.2.5(vite@4.4.11) packages/qwik-auth: devDependencies: @@ -6857,7 +6854,7 @@ packages: unist-util-visit: 4.1.2 vfile: 6.0.1 vite: 4.4.11(@types/node@20.8.4)(terser@5.21.0) - vitefu: 0.2.5(vite@4.4.11) + vitefu: 0.2.4(vite@4.4.11) which-pm: 2.0.0 yargs-parser: 21.1.1 zod: 3.22.4 @@ -18208,10 +18205,10 @@ packages: fsevents: 2.3.2 dev: true - /vitefu@0.2.5(vite@4.4.11): - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + /vitefu@0.2.4(vite@4.4.11): + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + vite: ^3.0.0 || ^4.0.0 peerDependenciesMeta: vite: optional: true diff --git a/scripts/submodule-optimizer.ts b/scripts/submodule-optimizer.ts index 2dc97ae57c3..cc1344172cc 100644 --- a/scripts/submodule-optimizer.ts +++ b/scripts/submodule-optimizer.ts @@ -2,7 +2,6 @@ import { build, type BuildOptions } from 'esbuild'; import { access, type BuildConfig, - editDeps, getBanner, nodeTarget, readFile, @@ -30,7 +29,6 @@ export async function submoduleOptimizer(config: BuildConfig) { outdir: config.distQwikPkgDir, bundle: true, sourcemap: false, - platform: 'node', target, external: [ /* no Node.js built-in externals allowed! */ @@ -51,7 +49,7 @@ export async function submoduleOptimizer(config: BuildConfig) { 'globalThis.QWIK_VERSION': JSON.stringify(config.distVersion), ...qwikloaderScripts, }, - plugins: [RawPlugin(), editDeps()], + plugins: [RawPlugin()], }); const cjsBanner = [`globalThis.qwikOptimizer = (function (module) {`].join('\n'); @@ -70,8 +68,9 @@ export async function submoduleOptimizer(config: BuildConfig) { 'globalThis.QWIK_VERSION': JSON.stringify(config.distVersion), ...qwikloaderScripts, }, + platform: 'node', target: nodeTarget, - plugins: [RawPlugin(), editDeps()], + plugins: [RawPlugin()], }); await Promise.all([esmBuild, cjsBuild]); diff --git a/scripts/submodule-server.ts b/scripts/submodule-server.ts index e0b1828822f..b924a900f4b 100644 --- a/scripts/submodule-server.ts +++ b/scripts/submodule-server.ts @@ -22,7 +22,6 @@ export async function submoduleServer(config: BuildConfig) { outdir: config.distQwikPkgDir, sourcemap: config.dev, bundle: true, - platform: 'node', target, external: [ /* no Node.js built-in externals allowed! */ '@builder.io/qwik-dom', @@ -62,6 +61,7 @@ export async function submoduleServer(config: BuildConfig) { }, outExtension: { '.js': '.cjs' }, plugins: [importPath(/^@builder\.io\/qwik$/, '@builder.io/qwik'), qwikDomPlugin], + platform: 'node', target: nodeTarget, define: { ...(await inlineQwikScriptsEsBuild(config)), diff --git a/scripts/util.ts b/scripts/util.ts index bf140a587a8..134d334fe40 100644 --- a/scripts/util.ts +++ b/scripts/util.ts @@ -1,5 +1,5 @@ import type { Plugin } from 'esbuild'; -import { dirname, join } from 'node:path'; +import { join } from 'node:path'; import mri from 'mri'; import { access as fsAccess, @@ -134,50 +134,6 @@ export function importPath(filter: RegExp, newModulePath: string) { return plugin; } -const depEdits: Record = { - // Replace top-level await with a top-level import - 'vitefu/src/index.js': [ - { - src: `import path from 'node:path'`, - replacement: `import path from 'node:path'\nimport _module from 'node:module'`, - }, - { - src: `(await import('module')).default`, - replacement: `_module`, - }, - ], -}; - -/** Esbuild plugin to edit dependency code so it builds successfully */ -export function editDeps() { - const plugin: Plugin = { - name: 'editDepsPlugin', - setup(build) { - const filter = new RegExp( - `^.*(${Object.keys(depEdits) - .map((mod) => { - return mod - .replace('.', '\\.') - .replace('/', process.platform === 'win32' ? '\\\\' : '\\/'); - }) - .join('|')})$` - ); - build.onLoad({ filter }, async (args) => { - let contents = await readFile(args.path, 'utf-8'); - for (const modPath in depEdits) { - if (args.path.endsWith(modPath)) { - for (const edit of depEdits[modPath]) { - contents = contents.replace(edit.src, edit.replacement); - } - } - } - return { contents, resolveDir: dirname(args.path) }; - }); - }, - }; - return plugin; -} - /** Standard license banner to place at the top of the generated files. */ export const getBanner = (moduleName: string, version: string) => { return `