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:
Ben Holmes 2022-04-26 14:35:44 -04:00 committed by GitHub
parent e4bb2767d5
commit 7a61977db1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 49 additions and 30 deletions

View file

@ -0,0 +1,6 @@
---
'astro': patch
'@astrojs/tailwind': patch
---
Support "astro add" before installing project dependencies

View file

@ -84,8 +84,8 @@
"@babel/generator": "^7.17.9",
"@babel/parser": "^7.17.9",
"@babel/traverse": "^7.17.9",
"@proload/core": "^0.2.2",
"@proload/plugin-tsm": "^0.1.1",
"@proload/core": "^0.3.2-next.4",
"@proload/plugin-tsm": "^0.2.1-next.0",
"ast-types": "^0.14.2",
"boxen": "^6.2.1",
"ci-info": "^3.3.0",

View file

@ -104,15 +104,6 @@ export async function cli(args: string[]) {
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) {
case 'add': {
try {
@ -124,6 +115,7 @@ export async function cli(args: string[]) {
}
case 'dev': {
try {
const config = await loadConfig({ cwd: root, flags, cmd });
await devServer(config, { logging });
return await new Promise(() => {}); // lives forever
} catch (err) {
@ -133,6 +125,7 @@ export async function cli(args: string[]) {
case 'build': {
try {
const config = await loadConfig({ cwd: root, flags, cmd });
return await build(config, { logging });
} catch (err) {
return throwAndExit(err);
@ -140,12 +133,14 @@ export async function cli(args: string[]) {
}
case 'check': {
const config = await loadConfig({ cwd: root, flags, cmd });
const ret = await check(config);
return process.exit(ret);
}
case 'preview': {
try {
const config = await loadConfig({ cwd: root, flags, cmd });
const server = await preview(config, { logging });
return await server.closed(); // keep alive until the server is closed
} catch (err) {

View file

@ -10,7 +10,7 @@ import { pathToFileURL, fileURLToPath } from 'url';
import { mergeConfig as mergeViteConfig } from 'vite';
import { BUNDLED_THEMES } from 'shiki';
import { z } from 'zod';
import load, { ProloadError } from '@proload/core';
import load, { resolve, ProloadError } from '@proload/core';
import loadTypeScript from '@proload/plugin-tsm';
import postcssrc from 'postcss-load-config';
import { arraify, isObject } from './util.js';
@ -385,11 +385,15 @@ export async function resolveConfigURL(
userConfigPath = /^\.*\//.test(flags.config) ? flags.config : `./${flags.config}`;
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`
const config = await load('astro', { mustExist: false, cwd: root, filePath: userConfigPath });
if (config) {
return pathToFileURL(config.filePath);
const configPath = await resolve('astro', {
mustExist: false,
cwd: root,
filePath: userConfigPath,
});
if (configPath) {
return pathToFileURL(configPath);
}
}

View file

@ -27,7 +27,7 @@
"dev": "astro-scripts dev \"src/**/*.ts\""
},
"dependencies": {
"@proload/core": "^0.2.2",
"@proload/core": "^0.3.1",
"autoprefixer": "^10.4.4",
"postcss": "^8.4.12",
"tailwindcss": "^3.0.24"

View file

@ -457,8 +457,8 @@ importers:
'@babel/parser': ^7.17.9
'@babel/traverse': ^7.17.9
'@babel/types': ^7.17.0
'@proload/core': ^0.2.2
'@proload/plugin-tsm': ^0.1.1
'@proload/core': ^0.3.2-next.4
'@proload/plugin-tsm': ^0.2.1-next.0
'@types/babel__core': ^7.1.19
'@types/babel__generator': ^7.6.4
'@types/babel__traverse': ^7.17.0
@ -542,8 +542,8 @@ importers:
'@babel/generator': 7.17.9
'@babel/parser': 7.17.9
'@babel/traverse': 7.17.9
'@proload/core': 0.2.2
'@proload/plugin-tsm': 0.1.1_@proload+core@0.2.2
'@proload/core': 0.3.2-next.4
'@proload/plugin-tsm': 0.2.1-next.0_@proload+core@0.3.2-next.4
ast-types: 0.14.2
boxen: 6.2.1
ci-info: 3.3.0
@ -1412,7 +1412,7 @@ importers:
packages/integrations/tailwind:
specifiers:
'@proload/core': ^0.2.2
'@proload/core': ^0.3.1
'@types/tailwindcss': ^3.0.10
astro: workspace:*
astro-scripts: workspace:*
@ -1420,7 +1420,7 @@ importers:
postcss: ^8.4.12
tailwindcss: ^3.0.24
dependencies:
'@proload/core': 0.2.2
'@proload/core': 0.3.1
autoprefixer: 10.4.4_postcss@8.4.12
postcss: 8.4.12
tailwindcss: 3.0.24
@ -3652,19 +3652,27 @@ packages:
/@polka/url/1.0.0-next.21:
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
/@proload/core/0.2.2:
resolution: {integrity: sha512-HYQEblYXIpW77kvGyW4penEl9D9e9MouPhTqVaDz9+QVFliYjsq18inTfnfTa81s3oraPVtTk60tqCWOf2fKGQ==}
/@proload/core/0.3.1:
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:
deepmerge: 4.2.2
escalade: 3.1.1
dev: false
/@proload/plugin-tsm/0.1.1_@proload+core@0.2.2:
resolution: {integrity: sha512-qfGegg6I3YBCZDjYR9xb41MTc2EfL0sQQmw49Z/yi9OstIpUa/67MBy4AuNhoyG9FuOXia9gPoeBk5pGnBOGtA==}
/@proload/plugin-tsm/0.2.1-next.0_@proload+core@0.3.2-next.4:
resolution: {integrity: sha512-76NvJmWD1MBip1oifMLohTJfdi4DQihTUnwWacscsLxUaT/5/FNNolD5CIoH/+qhsU6HyVpz8JfEzVpkMuxKfA==}
peerDependencies:
'@proload/core': ^0.2.1
'@proload/core': ^0.3.2-next.0
dependencies:
'@proload/core': 0.2.2
'@proload/core': 0.3.2-next.4
tsm: 2.2.1
dev: false
@ -8963,7 +8971,13 @@ packages:
/resolve-from/5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
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:
resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}