astro/packages/create-astro
Michael Rienstra 7481ffda02
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 <princssdev@gmail.com>
2022-09-22 14:37:01 -04:00
..
src create-astro: always create tsconfig.json (#4810) 2022-09-22 14:37:01 -04:00
test create-astro: always create tsconfig.json (#4810) 2022-09-22 14:37:01 -04:00
CHANGELOG.md [ci] release (#4811) 2022-09-20 15:15:54 -04:00
create-astro.mjs SImplify "astro add" by removing confusing multi-select (#3715) 2022-06-27 14:15:51 -07:00
package.json create-astro: always create tsconfig.json (#4810) 2022-09-22 14:37:01 -04:00
README.md .md only: npm init astro --> npm create astro (#4760) 2022-09-16 12:40:06 -05:00
tsconfig.json Support Node v14.15+ (#2202) 2021-12-16 18:53:22 -05:00

create-astro

Scaffolding for Astro projects

With NPM:

npm create astro@latest

With Yarn:

yarn create astro

create-astro automatically runs in interactive mode, but you can also specify your project name and template with command line arguments.

# npm 6.x
npm create astro@latest my-astro-project --template starter

# npm 7+, extra double-dash is needed:
npm create astro@latest my-astro-project -- --template starter

# yarn
yarn create astro my-astro-project --template starter

Check out the full list of example starter templates, available on GitHub.

You can also use any GitHub repo as a template:

npm create astro@latest my-astro-project -- --template cassidoo/shopify-react-astro

CLI Flags

May be provided in place of prompts

Name Description
--template Specify the template name (list)
--commit Specify a specific Git commit or branch to use from this repo (by default, main branch of this repo will be used)

Debugging

To debug create-astro, you can use the --verbose flag which will log the output of degit and some more information about the command, this can be useful when you encounter an error and want to report it.

# npm 6.x
npm create astro@latest my-astro-project --verbose

# npm 7+, extra double-dash is needed:
npm create astro@latest my-astro-project -- --verbose

# yarn
yarn create astro my-astro-project --verbose