diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1bb927ee4b56a1..04c8d6bf58f6bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -241,7 +241,7 @@ jobs: run: pnpm run lint - name: Check formatting - run: pnpm prettier --write --log-level=warn . && git diff --exit-code + run: pnpm oxfmt --check && git diff --exit-code - name: Typecheck run: pnpm run typecheck diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 00000000000000..957f3a2ef9bdcb --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,39 @@ +{ + "semi": false, + "singleQuote": true, + "printWidth": 80, + "experimentalSortPackageJson": false, + "overrides": [ + { + "files": ["*.json5"], + "options": { + "singleQuote": false, + "quoteProps": "preserve" + } + }, + { + "files": ["*.yml"], + "options": { + "singleQuote": false + } + } + ], + "ignorePatterns": [ + "packages/*/CHANGELOG.md", + "packages/vite/src/node/ssr/__tests__/fixtures/errors/syntax-error.*", + "playground-temp/", + "dist/", + "LICENSE.md", + "pnpm-lock.yaml", + "pnpm-workspace.yaml", + "playground/tsconfig-json-load-error/has-error/tsconfig.json", + "playground/html/invalid.html", + "playground/html/invalidClick.html", + "playground/html/invalidEscape.html", + "playground/html/valid.html", + "playground/external/public/slash@3.0.0.js", + "playground/ssr-html/public/slash@3.0.0.js", + "playground/worker/classic-worker.js", + "playground/css/weapp.wxss" + ] +} diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 3db2606045deaf..00000000000000 --- a/.prettierignore +++ /dev/null @@ -1,16 +0,0 @@ -packages/*/CHANGELOG.md -packages/vite/src/node/ssr/__tests__/fixtures/errors/syntax-error.* -playground-temp/ -dist/ -LICENSE.md -pnpm-lock.yaml -pnpm-workspace.yaml -playground/tsconfig-json-load-error/has-error/tsconfig.json -playground/html/invalid.html -playground/html/invalidClick.html -playground/html/invalidEscape.html -playground/html/valid.html -playground/external/public/slash@3.0.0.js -playground/ssr-html/public/slash@3.0.0.js -playground/worker/classic-worker.js -playground/css/weapp.wxss diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 6a3a2f9ac833f9..00000000000000 --- a/.prettierrc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "semi": false, - "singleQuote": true, - "overrides": [ - { - "files": ["*.json5"], - "options": { - "singleQuote": false, - "quoteProps": "preserve" - } - }, - { - "files": ["*.yml"], - "options": { - "singleQuote": false - } - } - ] -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7419fd08f30c06..fc76c592c9bf5c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -245,7 +245,7 @@ For a mock dependency, make sure you add a `@vitejs/test-` prefix to the package - Make sure tests pass! -- No need to worry about code style as long as you have installed the dev dependencies. Modified files are automatically formatted with Prettier on commit (by invoking [Git Hooks](https://git-scm.com/docs/githooks) via [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks)). +- No need to worry about code style as long as you have installed the dev dependencies. Modified files are automatically formatted with Oxfmt on commit (by invoking [Git Hooks](https://git-scm.com/docs/githooks) via [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks)). - PR title must follow the [commit message convention](./.github/commit-convention.md) so that changelogs can be automatically generated. diff --git a/netlify.toml b/netlify.toml index 5245ce766e8f31..e1c7a292c43e89 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,8 +1,8 @@ [build.environment] - NODE_VERSION = "24" - # don't need playwright for docs build - PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1" +NODE_VERSION = "24" +# don't need playwright for docs build +PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1" [build] - publish = "docs/.vitepress/dist" - command = "pnpm ci-docs" - ignore = "./scripts/docs-check.sh" +publish = "docs/.vitepress/dist" +command = "pnpm ci-docs" +ignore = "./scripts/docs-check.sh" diff --git a/package.json b/package.json index 367b3a685e5e2d..51714cf63be5b6 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "scripts": { "preinstall": "npx only-allow pnpm", "postinstall": "simple-git-hooks", - "format": "prettier --write --cache .", + "format": "oxfmt", "lint": "eslint --cache .", "typecheck": "tsc -p scripts && pnpm -r --parallel run typecheck", "test": "pnpm test-unit && pnpm test-serve && pnpm test-build", @@ -61,9 +61,9 @@ "execa": "^9.6.1", "globals": "^17.3.0", "lint-staged": "^16.2.7", + "oxfmt": "^0.28.0", "picocolors": "^1.1.1", "playwright-chromium": "^1.58.1", - "prettier": "3.8.1", "rolldown": "1.0.0-rc.2", "rollup": "^4.43.0", "simple-git-hooks": "^2.13.1", @@ -78,7 +78,7 @@ }, "lint-staged": { "*": [ - "prettier --write --cache --ignore-unknown" + "oxfmt --no-error-on-unmatched-pattern" ], "packages/*/{src,types}/**/*.ts": [ "eslint --cache --fix" diff --git a/packages/create-vite/template-lit-ts/src/my-element.ts b/packages/create-vite/template-lit-ts/src/my-element.ts index ae1a86f9a12fbe..3e2d1d370fd8b1 100644 --- a/packages/create-vite/template-lit-ts/src/my-element.ts +++ b/packages/create-vite/template-lit-ts/src/my-element.ts @@ -159,8 +159,7 @@ export class MyElement extends LitElement { --accent-border: rgba(192, 132, 252, 0.5); --social-bg: rgba(47, 48, 58, 0.5); --shadow: - rgba(0, 0, 0, 0.4) 0 10px 15px -3px, - rgba(0, 0, 0, 0.25) 0 4px 6px -2px; + rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px; } #social .button-icon { @@ -255,8 +254,8 @@ export class MyElement extends LitElement { z-index: 1; top: 34px; height: 28px; - transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) - rotateY(39deg) scale(1.4); + transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg) + scale(1.4); } .hero .vite { @@ -265,8 +264,8 @@ export class MyElement extends LitElement { height: 26px; width: auto; color: var(--vite-logo); - transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) - rotateY(39deg) scale(0.8); + transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg) + scale(0.8); } #center { diff --git a/packages/create-vite/template-lit/src/my-element.js b/packages/create-vite/template-lit/src/my-element.js index 66c1f4f8f4f2f9..ddeae11fb44fde 100644 --- a/packages/create-vite/template-lit/src/my-element.js +++ b/packages/create-vite/template-lit/src/my-element.js @@ -133,8 +133,7 @@ export class MyElement extends LitElement { --accent-border: rgba(170, 59, 255, 0.5); --social-bg: rgba(244, 243, 236, 0.5); --shadow: - rgba(0, 0, 0, 0.1) 0 10px 15px -3px, - rgba(0, 0, 0, 0.05) 0 4px 6px -2px; + rgba(0, 0, 0, 0.1) 0 10px 15px -3px, rgba(0, 0, 0, 0.05) 0 4px 6px -2px; --sans: system-ui, 'Segoe UI', Roboto, sans-serif; --heading: system-ui, 'Segoe UI', Roboto, sans-serif; @@ -167,8 +166,7 @@ export class MyElement extends LitElement { --accent-border: rgba(192, 132, 252, 0.5); --social-bg: rgba(47, 48, 58, 0.5); --shadow: - rgba(0, 0, 0, 0.4) 0 10px 15px -3px, - rgba(0, 0, 0, 0.25) 0 4px 6px -2px; + rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px; } #social .button-icon { @@ -263,8 +261,8 @@ export class MyElement extends LitElement { z-index: 1; top: 34px; height: 28px; - transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) - rotateY(39deg) scale(1.4); + transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg) + scale(1.4); } .hero .vite { @@ -272,8 +270,8 @@ export class MyElement extends LitElement { top: 107px; height: 26px; width: auto; - transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) - rotateY(39deg) scale(0.8); + transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg) + scale(0.8); } #center { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6cc3c6b3341cf..9dafa3a7bc8f04 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,15 +92,15 @@ importers: lint-staged: specifier: ^16.2.7 version: 16.2.7 + oxfmt: + specifier: ^0.28.0 + version: 0.28.0 picocolors: specifier: ^1.1.1 version: 1.1.1 playwright-chromium: specifier: ^1.58.1 version: 1.58.1 - prettier: - specifier: 3.8.1 - version: 3.8.1 rolldown: specifier: 1.0.0-rc.2 version: 1.0.0-rc.2 @@ -3064,6 +3064,50 @@ packages: '@oxc-project/types@0.111.0': resolution: {integrity: sha512-bh54LJMafgRGl2cPQ/QM+tI5rWaShm/wK9KywEj/w36MhiPKXYM67H2y3q+9pr4YO7ufwg2AKdBAZkhHBD8ClA==} + '@oxfmt/darwin-arm64@0.28.0': + resolution: {integrity: sha512-jmUfF7cNJPw57bEK7sMIqrYRgn4LH428tSgtgLTCtjuGuu1ShREyrkeB7y8HtkXRfhBs4lVY+HMLhqElJvZ6ww==} + cpu: [arm64] + os: [darwin] + + '@oxfmt/darwin-x64@0.28.0': + resolution: {integrity: sha512-S6vlV8S7jbjzJOSjfVg2CimUC0r7/aHDLdUm/3+/B/SU/s1jV7ivqWkMv1/8EB43d1BBwT9JQ60ZMTkBqeXSFA==} + cpu: [x64] + os: [darwin] + + '@oxfmt/linux-arm64-gnu@0.28.0': + resolution: {integrity: sha512-TfJkMZjePbLiskmxFXVAbGI/OZtD+y+fwS0wyW8O6DWG0ARTf0AipY9zGwGoOdpFuXOJceXvN4SHGLbYNDMY4Q==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/linux-arm64-musl@0.28.0': + resolution: {integrity: sha512-7fyQUdW203v4WWGr1T3jwTz4L7KX9y5DeATryQ6fLT6QQp9GEuct8/k0lYhd+ys42iTV/IkJF20e3YkfSOOILg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/linux-x64-gnu@0.28.0': + resolution: {integrity: sha512-sRKqAvEonuz0qr1X1ncUZceOBJerKzkO2gZIZmosvy/JmqyffpIFL3OE2tqacFkeDhrC+dNYQpusO8zsfHo3pw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/linux-x64-musl@0.28.0': + resolution: {integrity: sha512-fW6czbXutX/tdQe8j4nSIgkUox9RXqjyxwyWXUDItpoDkoXllq17qbD7GVc0whrEhYQC6hFE1UEAcDypLJoSzw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/win32-arm64@0.28.0': + resolution: {integrity: sha512-D/HDeQBAQRjTbD9OLV6kRDcStrIfO+JsUODDCdGmhRfNX8LPCx95GpfyybpZfn3wVF8Jq/yjPXV1xLkQ+s7RcA==} + cpu: [arm64] + os: [win32] + + '@oxfmt/win32-x64@0.28.0': + resolution: {integrity: sha512-4+S2j4OxOIyo8dz5osm5dZuL0yVmxXvtmNdHB5xyGwAWVvyWNvf7tCaQD7w2fdSsAXQLOvK7KFQrHFe33nJUCA==} + cpu: [x64] + os: [win32] + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -6174,6 +6218,11 @@ packages: resolution: {integrity: sha512-tooT6OU4dv8esdLxpELcBYc3R3zN+Bn0llM58RP8djBrxN57l7E5KqfTFq035kEaYl58C0fEgsOEL9G6zO6oQA==} engines: {node: ^20.19.0 || >=22.12.0} + oxfmt@0.28.0: + resolution: {integrity: sha512-3+hhBqPE6Kp22KfJmnstrZbl+KdOVSEu1V0ABaFIg1rYLtrMgrupx9znnHgHLqKxAVHebjTdiCJDk30CXOt6cw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -6397,11 +6446,6 @@ packages: engines: {node: '>=6'} hasBin: true - prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} - engines: {node: '>=14'} - hasBin: true - pretty-bytes@7.1.0: resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} engines: {node: '>=20'} @@ -7107,6 +7151,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + tinyrainbow@3.0.3: resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} @@ -8833,6 +8881,30 @@ snapshots: '@oxc-project/types@0.111.0': {} + '@oxfmt/darwin-arm64@0.28.0': + optional: true + + '@oxfmt/darwin-x64@0.28.0': + optional: true + + '@oxfmt/linux-arm64-gnu@0.28.0': + optional: true + + '@oxfmt/linux-arm64-musl@0.28.0': + optional: true + + '@oxfmt/linux-x64-gnu@0.28.0': + optional: true + + '@oxfmt/linux-x64-musl@0.28.0': + optional: true + + '@oxfmt/win32-arm64@0.28.0': + optional: true + + '@oxfmt/win32-x64@0.28.0': + optional: true + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11959,6 +12031,19 @@ snapshots: '@oxc-minify/binding-win32-ia32-msvc': 0.111.0 '@oxc-minify/binding-win32-x64-msvc': 0.111.0 + oxfmt@0.28.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/darwin-arm64': 0.28.0 + '@oxfmt/darwin-x64': 0.28.0 + '@oxfmt/linux-arm64-gnu': 0.28.0 + '@oxfmt/linux-arm64-musl': 0.28.0 + '@oxfmt/linux-x64-gnu': 0.28.0 + '@oxfmt/linux-x64-musl': 0.28.0 + '@oxfmt/win32-arm64': 0.28.0 + '@oxfmt/win32-x64': 0.28.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -12152,8 +12237,6 @@ snapshots: premove@4.0.0: {} - prettier@3.8.1: {} - pretty-bytes@7.1.0: {} pretty-ms@9.2.0: @@ -12981,6 +13064,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinypool@2.1.0: {} + tinyrainbow@3.0.3: {} tinyspy@2.2.0: {}