Feat: support astro add
without npm installing (#3183)
* deps: update to latest proload * feat: avoid parsing config on resolveConfigUrl * chore: changeset * fix: bump proload * fix: bump proload * fix: bump proload * fix: bump proload * fix: bump proload Co-authored-by: Nate Moore <nate@skypack.dev>
This commit is contained in:
parent
e4bb2767d5
commit
7a61977db1
6 changed files with 49 additions and 30 deletions
6
.changeset/giant-impalas-design.md
Normal file
6
.changeset/giant-impalas-design.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
'astro': patch
|
||||||
|
'@astrojs/tailwind': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Support "astro add" before installing project dependencies
|
|
@ -84,8 +84,8 @@
|
||||||
"@babel/generator": "^7.17.9",
|
"@babel/generator": "^7.17.9",
|
||||||
"@babel/parser": "^7.17.9",
|
"@babel/parser": "^7.17.9",
|
||||||
"@babel/traverse": "^7.17.9",
|
"@babel/traverse": "^7.17.9",
|
||||||
"@proload/core": "^0.2.2",
|
"@proload/core": "^0.3.2-next.4",
|
||||||
"@proload/plugin-tsm": "^0.1.1",
|
"@proload/plugin-tsm": "^0.2.1-next.0",
|
||||||
"ast-types": "^0.14.2",
|
"ast-types": "^0.14.2",
|
||||||
"boxen": "^6.2.1",
|
"boxen": "^6.2.1",
|
||||||
"ci-info": "^3.3.0",
|
"ci-info": "^3.3.0",
|
||||||
|
|
|
@ -104,15 +104,6 @@ export async function cli(args: string[]) {
|
||||||
logging.level = 'silent';
|
logging.level = 'silent';
|
||||||
}
|
}
|
||||||
|
|
||||||
let config: AstroConfig;
|
|
||||||
try {
|
|
||||||
// Note: ideally, `loadConfig` would return the config AND its filePath
|
|
||||||
// For now, `add` has to resolve the config again internally
|
|
||||||
config = await loadConfig({ cwd: root, flags, cmd });
|
|
||||||
} catch (err) {
|
|
||||||
return throwAndExit(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case 'add': {
|
case 'add': {
|
||||||
try {
|
try {
|
||||||
|
@ -124,6 +115,7 @@ export async function cli(args: string[]) {
|
||||||
}
|
}
|
||||||
case 'dev': {
|
case 'dev': {
|
||||||
try {
|
try {
|
||||||
|
const config = await loadConfig({ cwd: root, flags, cmd });
|
||||||
await devServer(config, { logging });
|
await devServer(config, { logging });
|
||||||
return await new Promise(() => {}); // lives forever
|
return await new Promise(() => {}); // lives forever
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -133,6 +125,7 @@ export async function cli(args: string[]) {
|
||||||
|
|
||||||
case 'build': {
|
case 'build': {
|
||||||
try {
|
try {
|
||||||
|
const config = await loadConfig({ cwd: root, flags, cmd });
|
||||||
return await build(config, { logging });
|
return await build(config, { logging });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return throwAndExit(err);
|
return throwAndExit(err);
|
||||||
|
@ -140,12 +133,14 @@ export async function cli(args: string[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'check': {
|
case 'check': {
|
||||||
|
const config = await loadConfig({ cwd: root, flags, cmd });
|
||||||
const ret = await check(config);
|
const ret = await check(config);
|
||||||
return process.exit(ret);
|
return process.exit(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'preview': {
|
case 'preview': {
|
||||||
try {
|
try {
|
||||||
|
const config = await loadConfig({ cwd: root, flags, cmd });
|
||||||
const server = await preview(config, { logging });
|
const server = await preview(config, { logging });
|
||||||
return await server.closed(); // keep alive until the server is closed
|
return await server.closed(); // keep alive until the server is closed
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { pathToFileURL, fileURLToPath } from 'url';
|
||||||
import { mergeConfig as mergeViteConfig } from 'vite';
|
import { mergeConfig as mergeViteConfig } from 'vite';
|
||||||
import { BUNDLED_THEMES } from 'shiki';
|
import { BUNDLED_THEMES } from 'shiki';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import load, { ProloadError } from '@proload/core';
|
import load, { resolve, ProloadError } from '@proload/core';
|
||||||
import loadTypeScript from '@proload/plugin-tsm';
|
import loadTypeScript from '@proload/plugin-tsm';
|
||||||
import postcssrc from 'postcss-load-config';
|
import postcssrc from 'postcss-load-config';
|
||||||
import { arraify, isObject } from './util.js';
|
import { arraify, isObject } from './util.js';
|
||||||
|
@ -385,11 +385,15 @@ export async function resolveConfigURL(
|
||||||
userConfigPath = /^\.*\//.test(flags.config) ? flags.config : `./${flags.config}`;
|
userConfigPath = /^\.*\//.test(flags.config) ? flags.config : `./${flags.config}`;
|
||||||
userConfigPath = fileURLToPath(new URL(userConfigPath, `file://${root}/`));
|
userConfigPath = fileURLToPath(new URL(userConfigPath, `file://${root}/`));
|
||||||
}
|
}
|
||||||
// Automatically load config file using Proload
|
// Resolve config file path using Proload
|
||||||
// If `userConfigPath` is `undefined`, Proload will search for `astro.config.[cm]?[jt]s`
|
// If `userConfigPath` is `undefined`, Proload will search for `astro.config.[cm]?[jt]s`
|
||||||
const config = await load('astro', { mustExist: false, cwd: root, filePath: userConfigPath });
|
const configPath = await resolve('astro', {
|
||||||
if (config) {
|
mustExist: false,
|
||||||
return pathToFileURL(config.filePath);
|
cwd: root,
|
||||||
|
filePath: userConfigPath,
|
||||||
|
});
|
||||||
|
if (configPath) {
|
||||||
|
return pathToFileURL(configPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
"dev": "astro-scripts dev \"src/**/*.ts\""
|
"dev": "astro-scripts dev \"src/**/*.ts\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@proload/core": "^0.2.2",
|
"@proload/core": "^0.3.1",
|
||||||
"autoprefixer": "^10.4.4",
|
"autoprefixer": "^10.4.4",
|
||||||
"postcss": "^8.4.12",
|
"postcss": "^8.4.12",
|
||||||
"tailwindcss": "^3.0.24"
|
"tailwindcss": "^3.0.24"
|
||||||
|
|
|
@ -457,8 +457,8 @@ importers:
|
||||||
'@babel/parser': ^7.17.9
|
'@babel/parser': ^7.17.9
|
||||||
'@babel/traverse': ^7.17.9
|
'@babel/traverse': ^7.17.9
|
||||||
'@babel/types': ^7.17.0
|
'@babel/types': ^7.17.0
|
||||||
'@proload/core': ^0.2.2
|
'@proload/core': ^0.3.2-next.4
|
||||||
'@proload/plugin-tsm': ^0.1.1
|
'@proload/plugin-tsm': ^0.2.1-next.0
|
||||||
'@types/babel__core': ^7.1.19
|
'@types/babel__core': ^7.1.19
|
||||||
'@types/babel__generator': ^7.6.4
|
'@types/babel__generator': ^7.6.4
|
||||||
'@types/babel__traverse': ^7.17.0
|
'@types/babel__traverse': ^7.17.0
|
||||||
|
@ -542,8 +542,8 @@ importers:
|
||||||
'@babel/generator': 7.17.9
|
'@babel/generator': 7.17.9
|
||||||
'@babel/parser': 7.17.9
|
'@babel/parser': 7.17.9
|
||||||
'@babel/traverse': 7.17.9
|
'@babel/traverse': 7.17.9
|
||||||
'@proload/core': 0.2.2
|
'@proload/core': 0.3.2-next.4
|
||||||
'@proload/plugin-tsm': 0.1.1_@proload+core@0.2.2
|
'@proload/plugin-tsm': 0.2.1-next.0_@proload+core@0.3.2-next.4
|
||||||
ast-types: 0.14.2
|
ast-types: 0.14.2
|
||||||
boxen: 6.2.1
|
boxen: 6.2.1
|
||||||
ci-info: 3.3.0
|
ci-info: 3.3.0
|
||||||
|
@ -1412,7 +1412,7 @@ importers:
|
||||||
|
|
||||||
packages/integrations/tailwind:
|
packages/integrations/tailwind:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@proload/core': ^0.2.2
|
'@proload/core': ^0.3.1
|
||||||
'@types/tailwindcss': ^3.0.10
|
'@types/tailwindcss': ^3.0.10
|
||||||
astro: workspace:*
|
astro: workspace:*
|
||||||
astro-scripts: workspace:*
|
astro-scripts: workspace:*
|
||||||
|
@ -1420,7 +1420,7 @@ importers:
|
||||||
postcss: ^8.4.12
|
postcss: ^8.4.12
|
||||||
tailwindcss: ^3.0.24
|
tailwindcss: ^3.0.24
|
||||||
dependencies:
|
dependencies:
|
||||||
'@proload/core': 0.2.2
|
'@proload/core': 0.3.1
|
||||||
autoprefixer: 10.4.4_postcss@8.4.12
|
autoprefixer: 10.4.4_postcss@8.4.12
|
||||||
postcss: 8.4.12
|
postcss: 8.4.12
|
||||||
tailwindcss: 3.0.24
|
tailwindcss: 3.0.24
|
||||||
|
@ -3652,19 +3652,27 @@ packages:
|
||||||
/@polka/url/1.0.0-next.21:
|
/@polka/url/1.0.0-next.21:
|
||||||
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
|
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
|
||||||
|
|
||||||
/@proload/core/0.2.2:
|
/@proload/core/0.3.1:
|
||||||
resolution: {integrity: sha512-HYQEblYXIpW77kvGyW4penEl9D9e9MouPhTqVaDz9+QVFliYjsq18inTfnfTa81s3oraPVtTk60tqCWOf2fKGQ==}
|
resolution: {integrity: sha512-u902sdjipQ6WjpV6rxcF0CnQP6Z6Gd54MBPuMbZ5amCcdb/meWY6UtCQSLIJmG+zbXtf8Hwzf6ePBey158QAQQ==}
|
||||||
|
dependencies:
|
||||||
|
deepmerge: 4.2.2
|
||||||
|
escalade: 3.1.1
|
||||||
|
resolve-pkg: 2.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@proload/core/0.3.2-next.4:
|
||||||
|
resolution: {integrity: sha512-58nw3h4+qBDizhlTbt/Q4iGWiiSWcYqdRgIAy3KMla1nqNFO8stG5vzDjPGMPyX6DsAhEj3PCqb4G0d82b2kqQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
deepmerge: 4.2.2
|
deepmerge: 4.2.2
|
||||||
escalade: 3.1.1
|
escalade: 3.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@proload/plugin-tsm/0.1.1_@proload+core@0.2.2:
|
/@proload/plugin-tsm/0.2.1-next.0_@proload+core@0.3.2-next.4:
|
||||||
resolution: {integrity: sha512-qfGegg6I3YBCZDjYR9xb41MTc2EfL0sQQmw49Z/yi9OstIpUa/67MBy4AuNhoyG9FuOXia9gPoeBk5pGnBOGtA==}
|
resolution: {integrity: sha512-76NvJmWD1MBip1oifMLohTJfdi4DQihTUnwWacscsLxUaT/5/FNNolD5CIoH/+qhsU6HyVpz8JfEzVpkMuxKfA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@proload/core': ^0.2.1
|
'@proload/core': ^0.3.2-next.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@proload/core': 0.2.2
|
'@proload/core': 0.3.2-next.4
|
||||||
tsm: 2.2.1
|
tsm: 2.2.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
@ -8963,7 +8971,13 @@ packages:
|
||||||
/resolve-from/5.0.0:
|
/resolve-from/5.0.0:
|
||||||
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
|
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
|
||||||
|
/resolve-pkg/2.0.0:
|
||||||
|
resolution: {integrity: sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
dependencies:
|
||||||
|
resolve-from: 5.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/resolve/1.22.0:
|
/resolve/1.22.0:
|
||||||
resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
|
resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
|
||||||
|
|
Loading…
Reference in a new issue