aboutsummaryrefslogtreecommitdiff
path: root/packages/create-astro/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/create-astro/src')
-rw-r--r--packages/create-astro/src/actions/context.ts2
-rw-r--r--packages/create-astro/src/actions/typescript.ts20
-rw-r--r--packages/create-astro/src/messages.ts4
3 files changed, 14 insertions, 12 deletions
diff --git a/packages/create-astro/src/actions/context.ts b/packages/create-astro/src/actions/context.ts
index 51ee6280b..8c173191d 100644
--- a/packages/create-astro/src/actions/context.ts
+++ b/packages/create-astro/src/actions/context.ts
@@ -93,7 +93,7 @@ export async function getContext(argv: string[]): Promise<Context> {
prompt,
packageManager,
username: getName(),
- version: getVersion(packageManager),
+ version: getVersion(packageManager, 'astro'),
skipHouston,
fancy,
dryRun,
diff --git a/packages/create-astro/src/actions/typescript.ts b/packages/create-astro/src/actions/typescript.ts
index 0ac1c753d..886a005c9 100644
--- a/packages/create-astro/src/actions/typescript.ts
+++ b/packages/create-astro/src/actions/typescript.ts
@@ -4,7 +4,7 @@ import { color } from '@astrojs/cli-kit';
import { readFile, rm, writeFile } from 'node:fs/promises';
import path from 'node:path';
import stripJsonComments from 'strip-json-comments';
-import { error, info, title, typescriptByDefault } from '../messages.js';
+import { error, getVersion, info, title, typescriptByDefault } from '../messages.js';
import { shell } from '../shell.js';
type PickedTypeScriptContext = Pick<
@@ -89,13 +89,6 @@ const FILES_TO_UPDATE = {
options: { value: string; ctx: PickedTypeScriptContext }
) => {
try {
- // add required dependencies for astro check
- if (options.ctx.install)
- await shell(options.ctx.packageManager, ['add', '@astrojs/check', 'typescript'], {
- cwd: path.dirname(file),
- stdio: 'ignore',
- });
-
// inject additional command to build script
const data = await readFile(file, { encoding: 'utf-8' });
const indent = /(^\s+)/m.exec(data)?.[1] ?? '\t';
@@ -107,8 +100,17 @@ const FILES_TO_UPDATE = {
if (typeof buildScript === 'string' && !buildScript.includes('astro check')) {
// Mutate the existing object to avoid changing user-defined script order
parsedPackageJson.scripts.build = `astro check && ${buildScript}`;
- await writeFile(file, JSON.stringify(parsedPackageJson, null, indent), 'utf-8');
}
+
+ const [astroCheckVersion, typescriptVersion] = await Promise.all([
+ getVersion(options.ctx.packageManager, '@astrojs/check'),
+ getVersion(options.ctx.packageManager, 'typescript'),
+ ]);
+ parsedPackageJson.dependencies ??= {};
+ parsedPackageJson.dependencies['@astrojs/check'] = `^${astroCheckVersion}`;
+ parsedPackageJson.dependencies.typescript = `^${typescriptVersion}`;
+
+ await writeFile(file, JSON.stringify(parsedPackageJson, null, indent), 'utf-8');
} catch (err) {
// if there's no package.json (which is very unlikely), then do nothing
if (err && (err as any).code === 'ENOENT') return;
diff --git a/packages/create-astro/src/messages.ts b/packages/create-astro/src/messages.ts
index e912e757d..c9006b292 100644
--- a/packages/create-astro/src/messages.ts
+++ b/packages/create-astro/src/messages.ts
@@ -55,11 +55,11 @@ export const getName = () =>
});
let v: string;
-export const getVersion = (packageManager: string) =>
+export const getVersion = (packageManager: string, packageName: string) =>
new Promise<string>(async (resolve) => {
if (v) return resolve(v);
let registry = await getRegistry(packageManager);
- const { version } = await fetch(`${registry}/astro/latest`, { redirect: 'follow' }).then(
+ const { version } = await fetch(`${registry}/${packageName}/latest`, { redirect: 'follow' }).then(
(res) => res.json(),
() => ({ version: '' })
);