From 1739443aa235c61c615cce5bd30a7a196957c3a5 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 28 May 2021 12:44:26 +0200 Subject: [PATCH] create-svelte: add svelte-check for TS (#1556) This add svelte-check along with two validate scripts to the package.json if the user selects TS. This uncovered missing type definitions for the cookie package in the default template, which are now added as well if the user selects TS. Closes #1536 --- .changeset/seven-bags-sniff.md | 5 +++++ packages/create-svelte/bin.js | 15 +++++++++++++-- .../shared/+default+typescript/package.json | 5 +++++ .../create-svelte/shared/+typescript/package.json | 5 +++++ packages/create-svelte/types/internal.d.ts | 6 ++++-- 5 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 .changeset/seven-bags-sniff.md create mode 100644 packages/create-svelte/shared/+default+typescript/package.json diff --git a/.changeset/seven-bags-sniff.md b/.changeset/seven-bags-sniff.md new file mode 100644 index 000000000000..1e1c948b013a --- /dev/null +++ b/.changeset/seven-bags-sniff.md @@ -0,0 +1,5 @@ +--- +'create-svelte': patch +--- + +Add svelte-check to TS templates diff --git a/packages/create-svelte/bin.js b/packages/create-svelte/bin.js index 0dea68b0d536..ca02e73de111 100755 --- a/packages/create-svelte/bin.js +++ b/packages/create-svelte/bin.js @@ -184,8 +184,8 @@ function write_common_files(cwd, options) { const pkg = /** @type {any} */ (JSON.parse(fs.readFileSync(pkg_file, 'utf-8'))); files.forEach((file) => { - const include = file.include.every((condition) => options[condition]); - const exclude = file.exclude.some((condition) => options[condition]); + const include = file.include.every((condition) => matchesCondition(condition, options)); + const exclude = file.exclude.some((condition) => matchesCondition(condition, options)); if (exclude || !include) return; @@ -205,6 +205,17 @@ function write_common_files(cwd, options) { fs.writeFileSync(pkg_file, JSON.stringify(pkg, null, ' ')); } +/** + * @param {import('./types/internal').Condition} condition + * @param {import('./types/internal').Options} options + * @returns {boolean} + */ +function matchesCondition(condition, options) { + return condition === 'default' || condition === 'skeleton' + ? options.template === condition + : options[condition]; +} + /** * @param {any} target * @param {any} source diff --git a/packages/create-svelte/shared/+default+typescript/package.json b/packages/create-svelte/shared/+default+typescript/package.json new file mode 100644 index 000000000000..9e7682209403 --- /dev/null +++ b/packages/create-svelte/shared/+default+typescript/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "@types/cookie": "^0.4.0" + } +} diff --git a/packages/create-svelte/shared/+typescript/package.json b/packages/create-svelte/shared/+typescript/package.json index 343a1d723cb6..334b96b584bf 100644 --- a/packages/create-svelte/shared/+typescript/package.json +++ b/packages/create-svelte/shared/+typescript/package.json @@ -1,7 +1,12 @@ { + "scripts": { + "check": "svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch" + }, "devDependencies": { "typescript": "^4.0.0", "tslib": "^2.0.0", + "svelte-check": "^2.0.0", "svelte-preprocess": "^4.0.0" } } diff --git a/packages/create-svelte/types/internal.d.ts b/packages/create-svelte/types/internal.d.ts index c5e70871a7ae..81a10b96fd07 100644 --- a/packages/create-svelte/types/internal.d.ts +++ b/packages/create-svelte/types/internal.d.ts @@ -10,11 +10,13 @@ export type File = { contents: string; }; +export type Condition = 'eslint' | 'prettier' | 'typescript' | 'skeleton' | 'default'; + export type Common = { files: Array<{ name: string; - include: Array<'eslint' | 'prettier' | 'typescript'>; - exclude: Array<'eslint' | 'prettier' | 'typescript'>; + include: Array; + exclude: Array; contents: string; }>; };