From 7481ffda028d9028d8e28bc7c6e9960ab80acf0f Mon Sep 17 00:00:00 2001 From: Michael Rienstra Date: Thu, 22 Sep 2022 11:37:01 -0700 Subject: `create-astro`: always create `tsconfig.json` (#4810) * `create-astro`: always create `tsconfig.json` Currently, we only make sure `tsconfig.json` exists when `strict` or `strictest` is selected. Both `default` & `optout` are intended to correspond to `base` -- and will do so for all [23 official templates](https://github.com/withastro/astro/tree/main/examples), but not necessarily for third-party templates. The [example command for installing a third-party template](https://github.com/withastro/astro/blob/a800bf7/packages/create-astro/README.md?plain=1#L31-L35) is (rather conveniently for the sake of this PR!) an example of a template without a `tsconfig.json` file, and installing it with the `default` ("Relaxed") Typescript option results in no `tsconfig.json` file, rather than a `tsconfig.json` file containing `{ "extends": "astro/tsconfigs/base" }` as would be expected. This PR addresses this scenario. It also explicitly sets the `tsconfig.json` file to `{ "extends": "astro/tsconfigs/base" }` when `default` (which I renamed to `base`, still presented to the user as "Relaxed") or `optout` is selected (`optout` has always printed a warning about the importance of `tsconfig.json` & `src/env.d.ts` but otherwise behaved identically to `default`). This is necessary in two scenarios: 1. When the `tsconfig.json` file was created by this script. 2. When it either didn't already include `"extends"`, or it extended a different config by default. For example, some third-party templates might default to `strict`, in which case I'm guessing we'd want to respect the user's choice and change that to `base`. * update `del` 6.1.1 --> 7.0.0 * test: prevent excess writes (without this it triggers many times) * test: create-astro typescript prompt * changeset * fix: recursive `mkdirSync` * test: longer timeout for `windows-latest` OS (see if this fixes failing tests) * better glob path creation, don't hardcode `/` * test: longer timeout for windows-latest OS (since I'm about to trigger another CI run by pushing a commit, might as well try this too) * create-astro test: show last CLI output on timeout * drop variable timeout Typescript tests are slower than directory tests, but they are all usually less than 5000 ms. Less complexity, easier to maintain. * DRY new error output * Update lockfile * Sync lockfile with main * Update lockfile Co-authored-by: Princesseuh --- scripts/cmd/build.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts/cmd/build.js') diff --git a/scripts/cmd/build.js b/scripts/cmd/build.js index 5d59f5180..1f543d70a 100644 --- a/scripts/cmd/build.js +++ b/scripts/cmd/build.js @@ -1,6 +1,6 @@ import esbuild from 'esbuild'; import svelte from '../utils/svelte-plugin.js'; -import del from 'del'; +import { deleteAsync } from 'del'; import { promises as fs } from 'fs'; import { dim, green, red, yellow } from 'kleur/colors'; import glob from 'tiny-glob'; @@ -109,5 +109,5 @@ export default async function build(...args) { } async function clean(outdir) { - return del([`${outdir}/**`, `!${outdir}/**/*.d.ts`]); + return deleteAsync([`${outdir}/**`, `!${outdir}/**/*.d.ts`]); } -- cgit v1.2.3