rsnext/test/lib/use-temp-dir.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

31 lines
666 B
TypeScript
Raw Normal View History

feat(create-next-app): JS/TS prompt (with appDir support); enhanced testing (#42012) Resubmitting this PR following this comment from Tim. This work has been done already and we can build off of it to get this in faster. > Just to be clear we're planning to rework create-next-app to give you the option to choose between JavaScript or TypeScript so it'll solve this request. For `app` right now it'll stay TypeScript till that is implemented. > > _Originally posted by @timneutkens in https://github.com/vercel/next.js/discussions/41745#discussioncomment-3985833_ --- I added the `--ts, --typescript` flag to `create-next-app` in https://github.com/vercel/next.js/pull/24655, and since then I have seen it used very frequently, including in recent issues (such as https://github.com/vercel/next.js/issues/33314) and most Next.js tutorials on YouTube. I noticed the template logic added in this PR was also used to add the `appDir` configuration as well. We discussed a while ago adding the following user flow: - `create-next-app --js, --javascript` creates a JS project - `create-next-app --ts, --typescript` creates a TS project - `create-next-app [name]` (no `--js, --ts`) prompts the user to choose either JS or TS, with TS selected by default. ### Review Adding support for appDir and refactoring the templates brought the pain-of-review up a bit, but it's not so bad when broken into increments. The original 8-file diff is here: https://github.com/ctjlewis/next.js/commit/1f47d9b0bf5b2c59dce893ca6634c1a9bfd3dd19 And the PR that brought the diff up to 59 files (mostly owed to `app` template dirs and file structure refactors): https://github.com/ctjlewis/next.js/commit/bd3ae4afd31f787dd41df2c6ab2e8145deef2138 ([PR link](https://github.com/ctjlewis/next.js/pull/3/files)) ### Demo https://user-images.githubusercontent.com/1657236/198586216-4691ff4c-48d4-4c6c-b7c1-705c38dd0194.mov Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-10-31 06:43:39 +01:00
import fs from 'fs-extra'
import os from 'os'
import path from 'path'
/**
* Create a randomly-named directory in `os.tmpdir()`, await a function call,
* and delete the directory when finished, unless `NEXT_TEST_SKIP_CLEANUP` is set.
feat(create-next-app): JS/TS prompt (with appDir support); enhanced testing (#42012) Resubmitting this PR following this comment from Tim. This work has been done already and we can build off of it to get this in faster. > Just to be clear we're planning to rework create-next-app to give you the option to choose between JavaScript or TypeScript so it'll solve this request. For `app` right now it'll stay TypeScript till that is implemented. > > _Originally posted by @timneutkens in https://github.com/vercel/next.js/discussions/41745#discussioncomment-3985833_ --- I added the `--ts, --typescript` flag to `create-next-app` in https://github.com/vercel/next.js/pull/24655, and since then I have seen it used very frequently, including in recent issues (such as https://github.com/vercel/next.js/issues/33314) and most Next.js tutorials on YouTube. I noticed the template logic added in this PR was also used to add the `appDir` configuration as well. We discussed a while ago adding the following user flow: - `create-next-app --js, --javascript` creates a JS project - `create-next-app --ts, --typescript` creates a TS project - `create-next-app [name]` (no `--js, --ts`) prompts the user to choose either JS or TS, with TS selected by default. ### Review Adding support for appDir and refactoring the templates brought the pain-of-review up a bit, but it's not so bad when broken into increments. The original 8-file diff is here: https://github.com/ctjlewis/next.js/commit/1f47d9b0bf5b2c59dce893ca6634c1a9bfd3dd19 And the PR that brought the diff up to 59 files (mostly owed to `app` template dirs and file structure refactors): https://github.com/ctjlewis/next.js/commit/bd3ae4afd31f787dd41df2c6ab2e8145deef2138 ([PR link](https://github.com/ctjlewis/next.js/pull/3/files)) ### Demo https://user-images.githubusercontent.com/1657236/198586216-4691ff4c-48d4-4c6c-b7c1-705c38dd0194.mov Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-10-31 06:43:39 +01:00
*/
export async function useTempDir(
fn: (folder: string) => void | Promise<void>,
mode?: string | number
) {
Add prompt for ESLint to CNA (#42218) Following up https://github.com/vercel/next.js/pull/42012 this adds an additional prompt for include ESLint config/dependencies or not. As discussed, this also removes the slow down from doing separate `dependencies` and `devDependencies` installs since this separation is no longer required now that we have `output: 'standalone'` which ensures only actual necessary dependency files are used for production builds. <details> <summary>Before</summary> https://user-images.githubusercontent.com/22380829/198953290-116b422d-4359-4aa9-9d82-b3265fde7b3f.mp4 </details> <details> <summary>After</summary> https://user-images.githubusercontent.com/22380829/198953347-20dbf897-92b3-45ea-a9d2-cfb61622251d.mp4 </details> ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have a helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have a helpful link attached, see `contributing.md` ## Documentation / Examples - [ ] Make sure the linting passes by running `pnpm build && pnpm lint` - [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2022-10-31 16:51:50 +01:00
const folder = path.join(
os.tmpdir(),
'next-test-' + Math.random().toString(36).slice(2)
)
feat(create-next-app): JS/TS prompt (with appDir support); enhanced testing (#42012) Resubmitting this PR following this comment from Tim. This work has been done already and we can build off of it to get this in faster. > Just to be clear we're planning to rework create-next-app to give you the option to choose between JavaScript or TypeScript so it'll solve this request. For `app` right now it'll stay TypeScript till that is implemented. > > _Originally posted by @timneutkens in https://github.com/vercel/next.js/discussions/41745#discussioncomment-3985833_ --- I added the `--ts, --typescript` flag to `create-next-app` in https://github.com/vercel/next.js/pull/24655, and since then I have seen it used very frequently, including in recent issues (such as https://github.com/vercel/next.js/issues/33314) and most Next.js tutorials on YouTube. I noticed the template logic added in this PR was also used to add the `appDir` configuration as well. We discussed a while ago adding the following user flow: - `create-next-app --js, --javascript` creates a JS project - `create-next-app --ts, --typescript` creates a TS project - `create-next-app [name]` (no `--js, --ts`) prompts the user to choose either JS or TS, with TS selected by default. ### Review Adding support for appDir and refactoring the templates brought the pain-of-review up a bit, but it's not so bad when broken into increments. The original 8-file diff is here: https://github.com/ctjlewis/next.js/commit/1f47d9b0bf5b2c59dce893ca6634c1a9bfd3dd19 And the PR that brought the diff up to 59 files (mostly owed to `app` template dirs and file structure refactors): https://github.com/ctjlewis/next.js/commit/bd3ae4afd31f787dd41df2c6ab2e8145deef2138 ([PR link](https://github.com/ctjlewis/next.js/pull/3/files)) ### Demo https://user-images.githubusercontent.com/1657236/198586216-4691ff4c-48d4-4c6c-b7c1-705c38dd0194.mov Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-10-31 06:43:39 +01:00
await fs.mkdirp(folder)
if (mode) {
await fs.chmod(folder, mode)
feat(create-next-app): JS/TS prompt (with appDir support); enhanced testing (#42012) Resubmitting this PR following this comment from Tim. This work has been done already and we can build off of it to get this in faster. > Just to be clear we're planning to rework create-next-app to give you the option to choose between JavaScript or TypeScript so it'll solve this request. For `app` right now it'll stay TypeScript till that is implemented. > > _Originally posted by @timneutkens in https://github.com/vercel/next.js/discussions/41745#discussioncomment-3985833_ --- I added the `--ts, --typescript` flag to `create-next-app` in https://github.com/vercel/next.js/pull/24655, and since then I have seen it used very frequently, including in recent issues (such as https://github.com/vercel/next.js/issues/33314) and most Next.js tutorials on YouTube. I noticed the template logic added in this PR was also used to add the `appDir` configuration as well. We discussed a while ago adding the following user flow: - `create-next-app --js, --javascript` creates a JS project - `create-next-app --ts, --typescript` creates a TS project - `create-next-app [name]` (no `--js, --ts`) prompts the user to choose either JS or TS, with TS selected by default. ### Review Adding support for appDir and refactoring the templates brought the pain-of-review up a bit, but it's not so bad when broken into increments. The original 8-file diff is here: https://github.com/ctjlewis/next.js/commit/1f47d9b0bf5b2c59dce893ca6634c1a9bfd3dd19 And the PR that brought the diff up to 59 files (mostly owed to `app` template dirs and file structure refactors): https://github.com/ctjlewis/next.js/commit/bd3ae4afd31f787dd41df2c6ab2e8145deef2138 ([PR link](https://github.com/ctjlewis/next.js/pull/3/files)) ### Demo https://user-images.githubusercontent.com/1657236/198586216-4691ff4c-48d4-4c6c-b7c1-705c38dd0194.mov Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-10-31 06:43:39 +01:00
}
try {
await fn(folder)
} finally {
if (!process.env.NEXT_TEST_SKIP_CLEANUP) {
await fs.remove(folder)
}
feat(create-next-app): JS/TS prompt (with appDir support); enhanced testing (#42012) Resubmitting this PR following this comment from Tim. This work has been done already and we can build off of it to get this in faster. > Just to be clear we're planning to rework create-next-app to give you the option to choose between JavaScript or TypeScript so it'll solve this request. For `app` right now it'll stay TypeScript till that is implemented. > > _Originally posted by @timneutkens in https://github.com/vercel/next.js/discussions/41745#discussioncomment-3985833_ --- I added the `--ts, --typescript` flag to `create-next-app` in https://github.com/vercel/next.js/pull/24655, and since then I have seen it used very frequently, including in recent issues (such as https://github.com/vercel/next.js/issues/33314) and most Next.js tutorials on YouTube. I noticed the template logic added in this PR was also used to add the `appDir` configuration as well. We discussed a while ago adding the following user flow: - `create-next-app --js, --javascript` creates a JS project - `create-next-app --ts, --typescript` creates a TS project - `create-next-app [name]` (no `--js, --ts`) prompts the user to choose either JS or TS, with TS selected by default. ### Review Adding support for appDir and refactoring the templates brought the pain-of-review up a bit, but it's not so bad when broken into increments. The original 8-file diff is here: https://github.com/ctjlewis/next.js/commit/1f47d9b0bf5b2c59dce893ca6634c1a9bfd3dd19 And the PR that brought the diff up to 59 files (mostly owed to `app` template dirs and file structure refactors): https://github.com/ctjlewis/next.js/commit/bd3ae4afd31f787dd41df2c6ab2e8145deef2138 ([PR link](https://github.com/ctjlewis/next.js/pull/3/files)) ### Demo https://user-images.githubusercontent.com/1657236/198586216-4691ff4c-48d4-4c6c-b7c1-705c38dd0194.mov Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-10-31 06:43:39 +01:00
}
}