From 434df790ff1cb2f78099bf961161f0a05bd800b2 Mon Sep 17 00:00:00 2001 From: Dominik G Date: Mon, 19 Sep 2022 11:01:05 +0200 Subject: [PATCH] [fix] prettier not working for svelte files in create-svelte projects (#6866) Fixes #6804 Also updates the test script for create-svelte to ensure to always install the Vite version that is part of the lock file to prevent type/etc mismatches --- .changeset/light-eagles-call.md | 5 +++++ .../shared/+eslint+prettier/package.json | 4 ++-- .../create-svelte/shared/+prettier/.prettierrc | 1 + .../shared/-eslint+prettier/package.json | 4 ++-- packages/create-svelte/test/check.js | 15 ++++++++++++--- 5 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 .changeset/light-eagles-call.md diff --git a/.changeset/light-eagles-call.md b/.changeset/light-eagles-call.md new file mode 100644 index 000000000000..c5aa2bba6ce6 --- /dev/null +++ b/.changeset/light-eagles-call.md @@ -0,0 +1,5 @@ +--- +'create-svelte': patch +--- + +[fix] prettier not formatting svelte files diff --git a/packages/create-svelte/shared/+eslint+prettier/package.json b/packages/create-svelte/shared/+eslint+prettier/package.json index a8b937b25b10..a6492f3856ab 100644 --- a/packages/create-svelte/shared/+eslint+prettier/package.json +++ b/packages/create-svelte/shared/+eslint+prettier/package.json @@ -3,7 +3,7 @@ "eslint-config-prettier": "^8.3.0" }, "scripts": { - "lint": "prettier --check . && eslint .", - "format": "prettier --write ." + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." } } diff --git a/packages/create-svelte/shared/+prettier/.prettierrc b/packages/create-svelte/shared/+prettier/.prettierrc index d177cd62dd13..a77fddea9097 100644 --- a/packages/create-svelte/shared/+prettier/.prettierrc +++ b/packages/create-svelte/shared/+prettier/.prettierrc @@ -3,6 +3,7 @@ "singleQuote": true, "trailingComma": "none", "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], "pluginSearchDirs": ["."], "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } diff --git a/packages/create-svelte/shared/-eslint+prettier/package.json b/packages/create-svelte/shared/-eslint+prettier/package.json index bcdff7cf9402..0193de97cbb4 100644 --- a/packages/create-svelte/shared/-eslint+prettier/package.json +++ b/packages/create-svelte/shared/-eslint+prettier/package.json @@ -1,6 +1,6 @@ { "scripts": { - "lint": "prettier --check .", - "format": "prettier --write ." + "lint": "prettier --plugin-search-dir . --check .", + "format": "prettier --plugin-search-dir . --write ." } } diff --git a/packages/create-svelte/test/check.js b/packages/create-svelte/test/check.js index 5e74a81da785..31d14e7f772b 100644 --- a/packages/create-svelte/test/check.js +++ b/packages/create-svelte/test/check.js @@ -2,7 +2,6 @@ import fs from 'fs'; import { execSync } from 'child_process'; import path from 'path'; import { test } from 'uvu'; -import { Writable } from 'stream'; import * as assert from 'uvu/assert'; import { create } from '../index.js'; import { fileURLToPath } from 'url'; @@ -25,6 +24,16 @@ const overrides = { ...existing_workspace_overrides }; overrides[name] = path.dirname(path.resolve(pkgPath)); }); +try { + const kit_dir = fileURLToPath(new URL('../../../packages/kit', import.meta.url)); + const ls_vite_result = execSync(`pnpm ls --json vite`, { cwd: kit_dir }); + const vite_version = JSON.parse(ls_vite_result)[0].devDependencies.vite.version; + overrides.vite = vite_version; +} catch (e) { + console.error('failed to parse installed vite version from packages/kit'); + throw e; +} + test.before(() => { try { // prepare test pnpm workspace @@ -90,7 +99,7 @@ for (const template of fs.readdirSync('templates')) { execSync('pnpm install --no-frozen-lockfile', { cwd, stdio: 'ignore' }); // run provided scripts that are non-blocking. All of them should exit with 0 - const scripts_to_test = ['prepare', 'check', 'lint', 'build', 'sync']; + const scripts_to_test = ['sync', 'format', 'lint', 'check', 'build']; // package script requires lib dir if (fs.existsSync(path.join(cwd, 'src', 'lib'))) { @@ -99,7 +108,7 @@ for (const template of fs.readdirSync('templates')) { // not all templates have all scripts console.group(`${template}-${types}`); - for (const script of Object.keys(pkg.scripts).filter((s) => scripts_to_test.includes(s))) { + for (const script of scripts_to_test.filter((s) => !!pkg.scripts[s])) { try { execSync(`pnpm run ${script}`, { cwd, stdio: 'pipe' }); console.log(`✅ ${script}`);