Respect Vite user config for third-party packages (#5345)

This commit is contained in:
Bjorn Lu 2022-11-11 14:22:43 +08:00 committed by GitHub
parent 7ec016fec3
commit 3ae2a961b7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 25 additions and 16 deletions

View file

@ -0,0 +1,6 @@
---
'astro': patch
'@astrojs/solid-js': patch
---
Respect Vite user config for third-party packages config handling

View file

@ -158,7 +158,7 @@
"unist-util-visit": "^4.1.0", "unist-util-visit": "^4.1.0",
"vfile": "^5.3.2", "vfile": "^5.3.2",
"vite": "~3.2.1", "vite": "~3.2.1",
"vitefu": "^0.1.0", "vitefu": "^0.2.0",
"yargs-parser": "^21.0.1", "yargs-parser": "^21.0.1",
"zod": "^3.17.3" "zod": "^3.17.3"
}, },

View file

@ -62,6 +62,7 @@ export async function createVite(
const astroPkgsConfig = await crawlFrameworkPkgs({ const astroPkgsConfig = await crawlFrameworkPkgs({
root: fileURLToPath(settings.config.root), root: fileURLToPath(settings.config.root),
isBuild: mode === 'build', isBuild: mode === 'build',
viteUserConfig: settings.config.vite,
isFrameworkPkgByJson(pkgJson) { isFrameworkPkgByJson(pkgJson) {
return ( return (
// Attempt: package relies on `astro`. ✅ Definitely an Astro package // Attempt: package relies on `astro`. ✅ Definitely an Astro package

View file

@ -33,7 +33,7 @@
}, },
"dependencies": { "dependencies": {
"babel-preset-solid": "^1.4.2", "babel-preset-solid": "^1.4.2",
"vitefu": "^0.1.0" "vitefu": "^0.2.0"
}, },
"devDependencies": { "devDependencies": {
"astro": "workspace:*", "astro": "workspace:*",

View file

@ -1,10 +1,12 @@
import type { AstroConfig } from 'astro';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
import { crawlFrameworkPkgs } from 'vitefu'; import { crawlFrameworkPkgs } from 'vitefu';
export async function getSolidPkgsConfig(root: URL, isBuild: boolean) { export async function getSolidPkgsConfig(isBuild: boolean, astroConfig: AstroConfig) {
return await crawlFrameworkPkgs({ return await crawlFrameworkPkgs({
root: fileURLToPath(root), root: fileURLToPath(astroConfig.root),
isBuild, isBuild,
viteUserConfig: astroConfig.vite,
isFrameworkPkgByJson(pkgJson) { isFrameworkPkgByJson(pkgJson) {
return containsSolidField(pkgJson.exports || {}); return containsSolidField(pkgJson.exports || {});
}, },

View file

@ -1,4 +1,4 @@
import type { AstroIntegration, AstroRenderer } from 'astro'; import type { AstroConfig, AstroIntegration, AstroRenderer } from 'astro';
import { getSolidPkgsConfig } from './dependencies.js'; import { getSolidPkgsConfig } from './dependencies.js';
function getRenderer(): AstroRenderer { function getRenderer(): AstroRenderer {
@ -24,11 +24,11 @@ function getRenderer(): AstroRenderer {
}; };
} }
async function getViteConfiguration(isDev: boolean, root: URL) { async function getViteConfiguration(isDev: boolean, astroConfig: AstroConfig) {
// https://github.com/solidjs/vite-plugin-solid // https://github.com/solidjs/vite-plugin-solid
// We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode
const nestedDeps = ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']; const nestedDeps = ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h'];
const solidPkgsConfig = await getSolidPkgsConfig(root, !isDev); const solidPkgsConfig = await getSolidPkgsConfig(!isDev, astroConfig);
return { return {
/** /**
* We only need esbuild on .ts or .js files. * We only need esbuild on .ts or .js files.
@ -58,7 +58,7 @@ export default function (): AstroIntegration {
hooks: { hooks: {
'astro:config:setup': async ({ command, addRenderer, updateConfig, config }) => { 'astro:config:setup': async ({ command, addRenderer, updateConfig, config }) => {
addRenderer(getRenderer()); addRenderer(getRenderer());
updateConfig({ vite: await getViteConfiguration(command === 'dev', config.root) }); updateConfig({ vite: await getViteConfiguration(command === 'dev', config) });
}, },
}, },
}; };

View file

@ -465,7 +465,7 @@ importers:
unist-util-visit: ^4.1.0 unist-util-visit: ^4.1.0
vfile: ^5.3.2 vfile: ^5.3.2
vite: ~3.2.1 vite: ~3.2.1
vitefu: ^0.1.0 vitefu: ^0.2.0
yargs-parser: ^21.0.1 yargs-parser: ^21.0.1
zod: ^3.17.3 zod: ^3.17.3
dependencies: dependencies:
@ -527,7 +527,7 @@ importers:
unist-util-visit: 4.1.1 unist-util-visit: 4.1.1
vfile: 5.3.5 vfile: 5.3.5
vite: 3.2.3_sass@1.56.1 vite: 3.2.3_sass@1.56.1
vitefu: 0.1.1_vite@3.2.3 vitefu: 0.2.0_vite@3.2.3
yargs-parser: 21.1.1 yargs-parser: 21.1.1
zod: 3.19.1 zod: 3.19.1
devDependencies: devDependencies:
@ -3115,10 +3115,10 @@ importers:
astro-scripts: workspace:* astro-scripts: workspace:*
babel-preset-solid: ^1.4.2 babel-preset-solid: ^1.4.2
solid-js: ^1.5.1 solid-js: ^1.5.1
vitefu: ^0.1.0 vitefu: ^0.2.0
dependencies: dependencies:
babel-preset-solid: 1.6.1 babel-preset-solid: 1.6.1
vitefu: 0.1.1 vitefu: 0.2.0
devDependencies: devDependencies:
astro: link:../../astro astro: link:../../astro
astro-scripts: link:../../../scripts astro-scripts: link:../../../scripts
@ -18131,8 +18131,8 @@ packages:
fsevents: 2.3.2 fsevents: 2.3.2
dev: false dev: false
/vitefu/0.1.1: /vitefu/0.2.0:
resolution: {integrity: sha512-HClD14fjMJ+NQgXBqT3dC3RdO/+Chayil+cCPYZKY3kT+KcJomKzrdgzfCHJkIL2L0OAY+VPvrSW615iPtc7ag==} resolution: {integrity: sha512-58946QxFCr0OnNbF73JPA3nyzfI65G82bWwKV8zxAcQfTeAyGU99ejSFIG7RBUDBUr1RonXI/VEMzIrNl/euXA==}
peerDependencies: peerDependencies:
vite: ^3.0.0 vite: ^3.0.0
peerDependenciesMeta: peerDependenciesMeta:
@ -18140,8 +18140,8 @@ packages:
optional: true optional: true
dev: false dev: false
/vitefu/0.1.1_vite@3.2.3: /vitefu/0.2.0_vite@3.2.3:
resolution: {integrity: sha512-HClD14fjMJ+NQgXBqT3dC3RdO/+Chayil+cCPYZKY3kT+KcJomKzrdgzfCHJkIL2L0OAY+VPvrSW615iPtc7ag==} resolution: {integrity: sha512-58946QxFCr0OnNbF73JPA3nyzfI65G82bWwKV8zxAcQfTeAyGU99ejSFIG7RBUDBUr1RonXI/VEMzIrNl/euXA==}
peerDependencies: peerDependencies:
vite: ^3.0.0 vite: ^3.0.0
peerDependenciesMeta: peerDependenciesMeta: