From 6dabb848a5fec5f6fc5daf0ae3219f522ae8d2af Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Fri, 13 Mar 2026 21:56:08 +0800 Subject: [PATCH] build: migrate formatting pipeline to oxfmt --- .prettierignore | 23 -- .prettierrc.mjs | 1 - .../lint-configs/eslint-config/package.json | 1 - .../eslint-config/src/configs/index.ts | 1 - .../eslint-config/src/configs/prettier.ts | 17 - .../lint-configs/eslint-config/src/index.ts | 2 - .../lint-configs/oxfmt-config/build.config.ts | 7 + .../package.json | 17 +- .../lint-configs/oxfmt-config/src/index.ts | 22 ++ .../lint-configs/oxfmt-config/tsconfig.json | 6 + .../lint-configs/prettier-config/index.mjs | 17 - .../lint-configs/stylelint-config/index.mjs | 8 +- .../stylelint-config/package.json | 4 +- lefthook.yml | 12 +- oxfmt.config.ts | 26 ++ package.json | 3 +- pnpm-lock.yaml | 313 +++++++++++++----- pnpm-workspace.yaml | 6 +- scripts/vsh/src/check-dep/index.ts | 2 +- scripts/vsh/src/lint/index.ts | 4 +- vben-admin.code-workspace | 4 +- vitest.config.ts | 2 +- 22 files changed, 318 insertions(+), 180 deletions(-) delete mode 100644 .prettierignore delete mode 100644 .prettierrc.mjs delete mode 100644 internal/lint-configs/eslint-config/src/configs/prettier.ts create mode 100644 internal/lint-configs/oxfmt-config/build.config.ts rename internal/lint-configs/{prettier-config => oxfmt-config}/package.json (54%) create mode 100644 internal/lint-configs/oxfmt-config/src/index.ts create mode 100644 internal/lint-configs/oxfmt-config/tsconfig.json delete mode 100644 internal/lint-configs/prettier-config/index.mjs create mode 100644 oxfmt.config.ts diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index d0cf12365..000000000 --- a/.prettierignore +++ /dev/null @@ -1,23 +0,0 @@ -dist -dev-dist -.local -.claude -.agent -.agents -.codex -.output.js -node_modules -.nvmrc -coverage -CODEOWNERS -.nitro -.output - - -**/*.svg -**/*.sh - -public -.npmrc -*-lock.yaml -skills-lock.json diff --git a/.prettierrc.mjs b/.prettierrc.mjs deleted file mode 100644 index 3e25d2cfa..000000000 --- a/.prettierrc.mjs +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@vben/prettier-config'; diff --git a/internal/lint-configs/eslint-config/package.json b/internal/lint-configs/eslint-config/package.json index 8f29254fd..d7971dd1d 100644 --- a/internal/lint-configs/eslint-config/package.json +++ b/internal/lint-configs/eslint-config/package.json @@ -42,7 +42,6 @@ "eslint-plugin-oxlint": "catalog:", "eslint-plugin-perfectionist": "catalog:", "eslint-plugin-pnpm": "catalog:", - "eslint-plugin-prettier": "catalog:", "eslint-plugin-unicorn": "catalog:", "eslint-plugin-unused-imports": "catalog:", "eslint-plugin-vue": "catalog:", diff --git a/internal/lint-configs/eslint-config/src/configs/index.ts b/internal/lint-configs/eslint-config/src/configs/index.ts index cd13343ac..00ca56690 100644 --- a/internal/lint-configs/eslint-config/src/configs/index.ts +++ b/internal/lint-configs/eslint-config/src/configs/index.ts @@ -8,7 +8,6 @@ export * from './node'; export * from './oxlint'; export * from './perfectionist'; export * from './pnpm'; -export * from './prettier'; export * from './turbo'; export * from './typescript'; export * from './unicorn'; diff --git a/internal/lint-configs/eslint-config/src/configs/prettier.ts b/internal/lint-configs/eslint-config/src/configs/prettier.ts deleted file mode 100644 index e0dc92fc9..000000000 --- a/internal/lint-configs/eslint-config/src/configs/prettier.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Linter } from 'eslint'; - -import { interopDefault } from '../util'; - -export async function prettier(): Promise { - const pluginPrettier = await interopDefault(import('eslint-plugin-prettier')); - return [ - { - plugins: { - prettier: pluginPrettier, - }, - rules: { - 'prettier/prettier': 'error', - }, - }, - ]; -} diff --git a/internal/lint-configs/eslint-config/src/index.ts b/internal/lint-configs/eslint-config/src/index.ts index ea3d62604..e0658df1f 100644 --- a/internal/lint-configs/eslint-config/src/index.ts +++ b/internal/lint-configs/eslint-config/src/index.ts @@ -11,7 +11,6 @@ import { oxcCompat, perfectionist, pnpm, - prettier, turbo, typescript, unicorn, @@ -33,7 +32,6 @@ async function defineConfig(config: FlatConfig[] = []) { vue(), javascript(), ignores(), - prettier(), typescript(), jsonc(), disableds(), diff --git a/internal/lint-configs/oxfmt-config/build.config.ts b/internal/lint-configs/oxfmt-config/build.config.ts new file mode 100644 index 000000000..97e572c56 --- /dev/null +++ b/internal/lint-configs/oxfmt-config/build.config.ts @@ -0,0 +1,7 @@ +import { defineBuildConfig } from 'unbuild'; + +export default defineBuildConfig({ + clean: true, + declaration: true, + entries: ['src/index'], +}); diff --git a/internal/lint-configs/prettier-config/package.json b/internal/lint-configs/oxfmt-config/package.json similarity index 54% rename from internal/lint-configs/prettier-config/package.json rename to internal/lint-configs/oxfmt-config/package.json index acdd228ad..08ef8d1f8 100644 --- a/internal/lint-configs/prettier-config/package.json +++ b/internal/lint-configs/oxfmt-config/package.json @@ -1,5 +1,5 @@ { - "name": "@vben/prettier-config", + "name": "@vben/oxfmt-config", "version": "5.6.0", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", @@ -7,21 +7,26 @@ "repository": { "type": "git", "url": "git+https://github.com/vbenjs/vue-vben-admin.git", - "directory": "internal/lint-configs/prettier-config" + "directory": "internal/lint-configs/oxfmt-config" }, "license": "MIT", "type": "module", + "scripts": { + "stub": "pnpm unbuild --stub" + }, "files": [ "dist" ], - "main": "./index.mjs", - "module": "./index.mjs", + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", "exports": { ".": { - "default": "./index.mjs" + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs" } }, "dependencies": { - "prettier": "catalog:" + "oxfmt": "catalog:" } } diff --git a/internal/lint-configs/oxfmt-config/src/index.ts b/internal/lint-configs/oxfmt-config/src/index.ts new file mode 100644 index 000000000..748d470bb --- /dev/null +++ b/internal/lint-configs/oxfmt-config/src/index.ts @@ -0,0 +1,22 @@ +import { defineConfig as defineOxfmtConfig } from 'oxfmt'; + +type OxfmtConfig = Parameters[0]; + +const oxfmtConfig = defineOxfmtConfig({ + printWidth: 80, + proseWrap: 'never', + semi: true, + singleQuote: true, + sortPackageJson: false, + trailingComma: 'all', +}); + +function defineConfig(config: OxfmtConfig = {}) { + return defineOxfmtConfig({ + ...oxfmtConfig, + ...config, + }); +} + +export { defineConfig, oxfmtConfig }; +export type { OxfmtConfig }; diff --git a/internal/lint-configs/oxfmt-config/tsconfig.json b/internal/lint-configs/oxfmt-config/tsconfig.json new file mode 100644 index 000000000..b2ec3b61e --- /dev/null +++ b/internal/lint-configs/oxfmt-config/tsconfig.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@vben/tsconfig/node.json", + "include": ["src"], + "exclude": ["node_modules"] +} diff --git a/internal/lint-configs/prettier-config/index.mjs b/internal/lint-configs/prettier-config/index.mjs deleted file mode 100644 index 386b2bd0c..000000000 --- a/internal/lint-configs/prettier-config/index.mjs +++ /dev/null @@ -1,17 +0,0 @@ -export default { - endOfLine: 'auto', - overrides: [ - { - files: ['*.json5'], - options: { - quoteProps: 'preserve', - singleQuote: false, - }, - }, - ], - printWidth: 80, - proseWrap: 'never', - semi: true, - singleQuote: true, - trailingComma: 'all', -}; diff --git a/internal/lint-configs/stylelint-config/index.mjs b/internal/lint-configs/stylelint-config/index.mjs index fac2fd319..1395d5ec0 100644 --- a/internal/lint-configs/stylelint-config/index.mjs +++ b/internal/lint-configs/stylelint-config/index.mjs @@ -36,12 +36,7 @@ export default { files: ['*.scss', '**/*.scss'], }, ], - plugins: [ - 'stylelint-order', - '@stylistic/stylelint-plugin', - 'stylelint-prettier', - 'stylelint-scss', - ], + plugins: ['stylelint-order', '@stylistic/stylelint-plugin', 'stylelint-scss'], rules: { 'at-rule-no-deprecated': null, 'at-rule-no-unknown': [ @@ -106,7 +101,6 @@ export default { ], { severity: 'error' }, ], - 'prettier/prettier': true, 'rule-empty-line-before': [ 'always', { diff --git a/internal/lint-configs/stylelint-config/package.json b/internal/lint-configs/stylelint-config/package.json index 4d0c26fc6..16064e073 100644 --- a/internal/lint-configs/stylelint-config/package.json +++ b/internal/lint-configs/stylelint-config/package.json @@ -31,13 +31,11 @@ "postcss": "catalog:", "postcss-html": "catalog:", "postcss-scss": "catalog:", - "prettier": "catalog:", "stylelint": "catalog:", "stylelint-config-recommended": "catalog:", "stylelint-config-recommended-scss": "catalog:", "stylelint-config-recommended-vue": "catalog:", "stylelint-config-standard": "catalog:", - "stylelint-order": "catalog:", - "stylelint-prettier": "catalog:" + "stylelint-order": "catalog:" } } diff --git a/lefthook.yml b/lefthook.yml index 554fb2467..a37ae775b 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -47,22 +47,22 @@ pre-commit: code-workspace: run: pnpm vsh code-workspace --auto-commit lint-md: - run: pnpm prettier --cache --ignore-unknown --write {staged_files} + run: pnpm oxfmt {staged_files} glob: '*.md' lint-vue: - run: pnpm prettier --write {staged_files} && pnpm oxlint --fix {staged_files} && pnpm eslint --cache --fix {staged_files} && pnpm stylelint --fix --allow-empty-input {staged_files} + run: pnpm oxfmt {staged_files} && pnpm oxlint --fix {staged_files} && pnpm eslint --cache --fix {staged_files} && pnpm stylelint --fix --allow-empty-input {staged_files} glob: '*.vue' lint-js: - run: pnpm prettier --cache --ignore-unknown --write {staged_files} && pnpm oxlint --fix {staged_files} && pnpm eslint --cache --fix {staged_files} + run: pnpm oxfmt {staged_files} && pnpm oxlint --fix {staged_files} && pnpm eslint --cache --fix {staged_files} glob: '*.{js,jsx,ts,tsx}' lint-style: - run: pnpm prettier --cache --ignore-unknown --write {staged_files} && pnpm stylelint --fix --allow-empty-input {staged_files} + run: pnpm oxfmt {staged_files} && pnpm stylelint --fix --allow-empty-input {staged_files} glob: '*.{scss,less,styl,html,vue,css}' lint-package: - run: pnpm prettier --cache --write {staged_files} + run: pnpm oxfmt {staged_files} glob: 'package.json' lint-json: - run: pnpm prettier --cache --write --parser json {staged_files} + run: pnpm oxfmt {staged_files} glob: '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}' post-merge: diff --git a/oxfmt.config.ts b/oxfmt.config.ts new file mode 100644 index 000000000..9ad7fe1bf --- /dev/null +++ b/oxfmt.config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from '@vben/oxfmt-config'; + +export default defineConfig({ + ignorePatterns: [ + 'dist', + 'dev-dist', + '.local', + '.claude', + '.agent', + '.agents', + '.codex', + '.output.js', + 'node_modules', + '.nvmrc', + 'coverage', + 'CODEOWNERS', + '.nitro', + '.output', + '**/*.svg', + '**/*.sh', + 'public', + '.npmrc', + '*-lock.yaml', + 'skills-lock.json', + ], +}); diff --git a/package.json b/package.json index c4437b0dc..7ce428088 100644 --- a/package.json +++ b/package.json @@ -72,8 +72,8 @@ "@types/node": "catalog:", "@vben/commitlint-config": "workspace:*", "@vben/eslint-config": "workspace:*", + "@vben/oxfmt-config": "workspace:*", "@vben/oxlint-config": "workspace:*", - "@vben/prettier-config": "workspace:*", "@vben/stylelint-config": "workspace:*", "@vben/tsconfig": "workspace:*", "@vben/turbo-run": "workspace:*", @@ -87,6 +87,7 @@ "happy-dom": "catalog:", "is-ci": "catalog:", "lefthook": "catalog:", + "oxfmt": "catalog:", "oxlint": "catalog:", "playwright": "catalog:", "rimraf": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 92bb92436..b371f2d3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -237,9 +237,6 @@ catalogs: eslint-plugin-pnpm: specifier: ^1.6.0 version: 1.6.0 - eslint-plugin-prettier: - specifier: ^5.5.5 - version: 5.5.5 eslint-plugin-unicorn: specifier: ^63.0.0 version: 63.0.0 @@ -306,6 +303,9 @@ catalogs: ora: specifier: ^9.3.0 version: 9.3.0 + oxfmt: + specifier: ^0.40.0 + version: 0.40.0 oxlint: specifier: ^1.55.0 version: 1.55.0 @@ -327,9 +327,6 @@ catalogs: postcss-scss: specifier: ^4.0.9 version: 4.0.9 - prettier: - specifier: ^3.8.1 - version: 3.8.1 publint: specifier: ^0.3.18 version: 0.3.18 @@ -387,9 +384,6 @@ catalogs: stylelint-order: specifier: ^8.0.0 version: 8.0.0 - stylelint-prettier: - specifier: ^5.0.3 - version: 5.0.3 stylelint-scss: specifier: ^7.0.0 version: 7.0.0 @@ -523,12 +517,12 @@ importers: '@vben/eslint-config': specifier: workspace:* version: link:internal/lint-configs/eslint-config + '@vben/oxfmt-config': + specifier: workspace:* + version: link:internal/lint-configs/oxfmt-config '@vben/oxlint-config': specifier: workspace:* version: link:internal/lint-configs/oxlint-config - '@vben/prettier-config': - specifier: workspace:* - version: link:internal/lint-configs/prettier-config '@vben/stylelint-config': specifier: workspace:* version: link:internal/lint-configs/stylelint-config @@ -568,6 +562,9 @@ importers: lefthook: specifier: 'catalog:' version: 2.1.4 + oxfmt: + specifier: 'catalog:' + version: 0.40.0 oxlint: specifier: 'catalog:' version: 1.55.0 @@ -1055,9 +1052,6 @@ importers: eslint-plugin-pnpm: specifier: 'catalog:' version: 1.6.0(eslint@10.0.3(jiti@2.6.1)) - eslint-plugin-prettier: - specifier: 'catalog:' - version: 5.5.5(eslint@10.0.3(jiti@2.6.1))(prettier@3.8.1) eslint-plugin-unicorn: specifier: 'catalog:' version: 63.0.0(eslint@10.0.3(jiti@2.6.1)) @@ -1080,6 +1074,12 @@ importers: specifier: 'catalog:' version: 2.0.0 + internal/lint-configs/oxfmt-config: + dependencies: + oxfmt: + specifier: 'catalog:' + version: 0.40.0 + internal/lint-configs/oxlint-config: dependencies: eslint-plugin-better-tailwindcss: @@ -1089,12 +1089,6 @@ importers: specifier: 'catalog:' version: 1.55.0 - internal/lint-configs/prettier-config: - dependencies: - prettier: - specifier: 'catalog:' - version: 3.8.1 - internal/lint-configs/stylelint-config: dependencies: '@stylistic/stylelint-plugin': @@ -1116,9 +1110,6 @@ importers: postcss-scss: specifier: 'catalog:' version: 4.0.9(postcss@8.5.8) - prettier: - specifier: 'catalog:' - version: 3.8.1 stylelint: specifier: 'catalog:' version: 17.4.0(typescript@5.9.3) @@ -1137,9 +1128,6 @@ importers: stylelint-order: specifier: 'catalog:' version: 8.0.0(stylelint@17.4.0(typescript@5.9.3)) - stylelint-prettier: - specifier: 'catalog:' - version: 5.0.3(prettier@3.8.1)(stylelint@17.4.0(typescript@5.9.3)) internal/node-utils: dependencies: @@ -1170,9 +1158,6 @@ importers: pkg-types: specifier: 'catalog:' version: 2.3.0 - prettier: - specifier: 'catalog:' - version: 3.8.1 rimraf: specifier: 'catalog:' version: 6.1.3 @@ -3726,6 +3711,128 @@ packages: '@oxc-project/types@0.115.0': resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@oxfmt/binding-android-arm-eabi@0.40.0': + resolution: {integrity: sha512-S6zd5r1w/HmqR8t0CTnGjFTBLDq2QKORPwriCHxo4xFNuhmOTABGjPaNvCJJVnrKBLsohOeiDX3YqQfJPF+FXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.40.0': + resolution: {integrity: sha512-/mbS9UUP/5Vbl2D6osIdcYiP0oie63LKMoTyGj5hyMCK/SFkl3EhtyRAfdjPvuvHC0SXdW6ePaTKkBSq1SNcIw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.40.0': + resolution: {integrity: sha512-wRt8fRdfLiEhnRMBonlIbKrJWixoEmn6KCjKE9PElnrSDSXETGZfPb8ee+nQNTobXkCVvVLytp2o0obAsxl78Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.40.0': + resolution: {integrity: sha512-fzowhqbOE/NRy+AE5ob0+Y4X243WbWzDb00W+pKwD7d9tOqsAFbtWUwIyqqCoCLxj791m2xXIEeLH/3uz7zCCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.40.0': + resolution: {integrity: sha512-agZ9ITaqdBjcerRRFEHB8s0OyVcQW8F9ZxsszjxzeSthQ4fcN2MuOtQFWec1ed8/lDa50jSLHVE2/xPmTgtCfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.40.0': + resolution: {integrity: sha512-ZM2oQ47p28TP1DVIp7HL1QoMUgqlBFHey0ksHct7tMXoU5BqjNvPWw7888azzMt25lnyPODVuye1wvNbvVUFOA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.40.0': + resolution: {integrity: sha512-RBFPAxRAIsMisKM47Oe6Lwdv6agZYLz02CUhVCD1sOv5ajAcRMrnwCFBPWwGXpazToW2mjnZxFos8TuFjTU15A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.40.0': + resolution: {integrity: sha512-Nb2XbQ+wV3W2jSIihXdPj7k83eOxeSgYP3N/SRXvQ6ZYPIk6Q86qEh5Gl/7OitX3bQoQrESqm1yMLvZV8/J7dA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.40.0': + resolution: {integrity: sha512-tGmWhLD/0YMotCdfezlT6tC/MJG/wKpo4vnQ3Cq+4eBk/BwNv7EmkD0VkD5F/dYkT3b8FNU01X2e8vvJuWoM1w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.40.0': + resolution: {integrity: sha512-rVbFyM3e7YhkVnp0IVYjaSHfrBWcTRWb60LEcdNAJcE2mbhTpbqKufx0FrhWfoxOrW/+7UJonAOShoFFLigDqQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.40.0': + resolution: {integrity: sha512-3ZqBw14JtWeEoLiioJcXSJz8RQyPE+3jLARnYM1HdPzZG4vk+Ua8CUupt2+d+vSAvMyaQBTN2dZK+kbBS/j5mA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.40.0': + resolution: {integrity: sha512-JJ4PPSdcbGBjPvb+O7xYm2FmAsKCyuEMYhqatBAHMp/6TA6rVlf9Z/sYPa4/3Bommb+8nndm15SPFRHEPU5qFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.40.0': + resolution: {integrity: sha512-Kp0zNJoX9Ik77wUya2tpBY3W9f40VUoMQLWVaob5SgCrblH/t2xr/9B2bWHfs0WCefuGmqXcB+t0Lq77sbBmZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.40.0': + resolution: {integrity: sha512-7YTCNzleWTaQTqNGUNQ66qVjpoV6DjbCOea+RnpMBly2bpzrI/uu7Rr+2zcgRfNxyjXaFTVQKaRKjqVdeUfeVA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.40.0': + resolution: {integrity: sha512-hWnSzJ0oegeOwfOEeejYXfBqmnRGHusgtHfCPzmvJvHTwy1s3Neo59UKc1CmpE3zxvrCzJoVHos0rr97GHMNPw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.40.0': + resolution: {integrity: sha512-28sJC1lR4qtBJGzSRRbPnSW3GxU2+4YyQFE6rCmsUYqZ5XYH8jg0/w+CvEzQ8TuAQz5zLkcA25nFQGwoU0PT3Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.40.0': + resolution: {integrity: sha512-cDkRnyT0dqwF5oIX1Cv59HKCeZQFbWWdUpXa3uvnHFT2iwYSSZspkhgjXjU6iDp5pFPaAEAe9FIbMoTgkTmKPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.40.0': + resolution: {integrity: sha512-7rPemBJjqm5Gkv6ZRCPvK8lE6AqQ/2z31DRdWazyx2ZvaSgL7QGofHXHNouRpPvNsT9yxRNQJgigsWkc+0qg4w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.40.0': + resolution: {integrity: sha512-/Zmj0yTYSvmha6TG1QnoLqVT7ZMRDqXvFXXBQpIjteEwx9qvUYMBH2xbiOFhDeMUJkGwC3D6fdKsFtaqUvkwNA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxlint/binding-android-arm-eabi@1.55.0': resolution: {integrity: sha512-NhvgAhncTSOhRahQSCnkK/4YIGPjTmhPurQQ2dwt2IvwCMTvZRW5vF2K10UBOxFve4GZDMw6LtXZdC2qeuYIVQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -6665,20 +6772,6 @@ packages: peerDependencies: eslint: ^9.0.0 || ^10.0.0 - eslint-plugin-prettier@5.5.5: - resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - eslint-plugin-turbo@2.8.16: resolution: {integrity: sha512-fhvTLe0PnyV72npfBi/IwwVMzkTnUw9MxS2S2Q0Oo1aed7woAtHwSL5DEdTTV6tXZSKbqRHaIbjV6rwx+1iRYA==} peerDependencies: @@ -6830,9 +6923,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-equals@6.0.0: resolution: {integrity: sha512-PFhhIGgdM79r5Uztdj9Zb6Tt1zKafqVfdMGwVca1z5z6fbX7DmsySSuJd8HiP6I1j505DCS83cLxo5rmSNeVEA==} engines: {node: '>=6.0.0'} @@ -8543,6 +8633,11 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxfmt@0.40.0: + resolution: {integrity: sha512-g0C3I7xUj4b4DcagevM9kgH6+pUHytikxUcn3/VUkvzTNaaXBeyZqb7IBsHwojeXm4mTBEC/aBjBTMVUkZwWUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + oxlint@1.55.0: resolution: {integrity: sha512-T+FjepiyWpaZMhekqRpH8Z3I4vNM610p6w+Vjfqgj5TZUxHXl7N8N5IPvmOU8U4XdTRxqtNNTh9Y4hLtr7yvFg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9003,20 +9098,11 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.1: - resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} - engines: {node: '>=6.0.0'} - prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} - engines: {node: '>=14'} - hasBin: true - pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} @@ -9855,13 +9941,6 @@ packages: peerDependencies: stylelint: ^16.18.0 || ^17.0.0 - stylelint-prettier@5.0.3: - resolution: {integrity: sha512-B6V0oa35ekRrKZlf+6+jA+i50C4GXJ7X1PPmoCqSUoXN6BrNF6NhqqhanvkLjqw2qgvrS0wjdpeC+Tn06KN3jw==} - engines: {node: '>=18.12.0'} - peerDependencies: - prettier: '>=3.0.0' - stylelint: '>=16.0.0' - stylelint-scss@7.0.0: resolution: {integrity: sha512-H88kCC+6Vtzj76NsC8rv6x/LW8slBzIbyeSjsKVlS+4qaEJoDrcJR4L+8JdrR2ORdTscrBzYWiiT2jq6leYR1Q==} engines: {node: '>=20.19.0'} @@ -10017,6 +10096,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.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -13056,6 +13139,63 @@ snapshots: '@oxc-project/types@0.115.0': {} + '@oxfmt/binding-android-arm-eabi@0.40.0': + optional: true + + '@oxfmt/binding-android-arm64@0.40.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.40.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.40.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.40.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.40.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.40.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.40.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.40.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.40.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.40.0': + optional: true + '@oxlint/binding-android-arm-eabi@1.55.0': optional: true @@ -16153,13 +16293,6 @@ snapshots: yaml: 2.8.2 yaml-eslint-parser: 2.0.0 - eslint-plugin-prettier@5.5.5(eslint@10.0.3(jiti@2.6.1))(prettier@3.8.1): - dependencies: - eslint: 10.0.3(jiti@2.6.1) - prettier: 3.8.1 - prettier-linter-helpers: 1.0.1 - synckit: 0.11.12 - eslint-plugin-turbo@2.8.16(eslint@10.0.3(jiti@2.6.1))(turbo@2.8.16): dependencies: dotenv: 16.0.3 @@ -16360,8 +16493,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.3.0: {} - fast-equals@6.0.0: {} fast-fifo@1.3.2: {} @@ -18129,6 +18260,30 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxfmt@0.40.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.40.0 + '@oxfmt/binding-android-arm64': 0.40.0 + '@oxfmt/binding-darwin-arm64': 0.40.0 + '@oxfmt/binding-darwin-x64': 0.40.0 + '@oxfmt/binding-freebsd-x64': 0.40.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.40.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.40.0 + '@oxfmt/binding-linux-arm64-gnu': 0.40.0 + '@oxfmt/binding-linux-arm64-musl': 0.40.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.40.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.40.0 + '@oxfmt/binding-linux-riscv64-musl': 0.40.0 + '@oxfmt/binding-linux-s390x-gnu': 0.40.0 + '@oxfmt/binding-linux-x64-gnu': 0.40.0 + '@oxfmt/binding-linux-x64-musl': 0.40.0 + '@oxfmt/binding-openharmony-arm64': 0.40.0 + '@oxfmt/binding-win32-arm64-msvc': 0.40.0 + '@oxfmt/binding-win32-ia32-msvc': 0.40.0 + '@oxfmt/binding-win32-x64-msvc': 0.40.0 + oxlint@1.55.0: optionalDependencies: '@oxlint/binding-android-arm-eabi': 1.55.0 @@ -18550,14 +18705,8 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.1: - dependencies: - fast-diff: 1.3.0 - prettier@2.8.8: {} - prettier@3.8.1: {} - pretty-bytes@5.6.0: {} pretty-bytes@6.1.1: {} @@ -19451,12 +19600,6 @@ snapshots: postcss-sorting: 10.0.0(postcss@8.5.8) stylelint: 17.4.0(typescript@5.9.3) - stylelint-prettier@5.0.3(prettier@3.8.1)(stylelint@17.4.0(typescript@5.9.3)): - dependencies: - prettier: 3.8.1 - prettier-linter-helpers: 1.0.1 - stylelint: 17.4.0(typescript@5.9.3) - stylelint-scss@7.0.0(stylelint@17.4.0(typescript@5.9.3)): dependencies: css-tree: 3.2.1 @@ -19670,6 +19813,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinypool@2.1.0: {} + tinyrainbow@3.1.0: {} tippy.js@6.3.7: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8a4546bb7..af5e8107e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -63,7 +63,6 @@ catalog: '@vite-pwa/vitepress': ^1.1.0 '@vitejs/plugin-vue': ^6.0.5 '@vitejs/plugin-vue-jsx': ^5.1.5 - '@vitest/eslint-plugin': ^1.6.11 '@vue/shared': ^3.5.30 '@vue/test-utils': ^2.4.6 '@vueuse/core': ^14.2.1 @@ -98,13 +97,11 @@ catalog: eslint-config-turbo: ^2.8.16 eslint-plugin-better-tailwindcss: ^4.3.2 eslint-plugin-command: ^3.5.2 - eslint-plugin-import-x: ^4.16.2 eslint-plugin-jsonc: ^3.1.2 eslint-plugin-n: ^17.24.0 eslint-plugin-oxlint: ^1.55.0 eslint-plugin-perfectionist: ^5.6.0 eslint-plugin-pnpm: ^1.6.0 - eslint-plugin-prettier: ^5.5.5 eslint-plugin-unicorn: ^63.0.0 eslint-plugin-unused-imports: ^4.4.1 eslint-plugin-vue: ^10.8.0 @@ -127,6 +124,7 @@ catalog: nitropack: ^2.13.1 nprogress: ^0.2.0 ora: ^9.3.0 + oxfmt: ^0.40.0 oxlint: ^1.55.0 pinia: ^3.0.4 pinia-plugin-persistedstate: ^4.7.1 @@ -135,7 +133,6 @@ catalog: postcss: ^8.5.8 postcss-html: ^1.8.1 postcss-scss: ^4.0.9 - prettier: ^3.8.1 publint: ^0.3.18 qrcode: ^1.5.4 qs: ^6.15.0 @@ -155,7 +152,6 @@ catalog: stylelint-config-recommended-vue: ^1.6.1 stylelint-config-standard: ^40.0.0 stylelint-order: ^8.0.0 - stylelint-prettier: ^5.0.3 stylelint-scss: ^7.0.0 tailwind-merge: ^3.5.0 tailwindcss: ^4.2.1 diff --git a/scripts/vsh/src/check-dep/index.ts b/scripts/vsh/src/check-dep/index.ts index 8f6a171e2..ba8ed4c3f 100644 --- a/scripts/vsh/src/check-dep/index.ts +++ b/scripts/vsh/src/check-dep/index.ts @@ -22,8 +22,8 @@ const DEFAULT_CONFIG = { '@vben/commitlint-config', '@vben/eslint-config', '@vben/node-utils', + '@vben/oxfmt-config', '@vben/oxlint-config', - '@vben/prettier-config', '@vben/stylelint-config', '@vben/tsconfig', '@vben/vite-config', diff --git a/scripts/vsh/src/lint/index.ts b/scripts/vsh/src/lint/index.ts index 0ce74752d..141d2008a 100644 --- a/scripts/vsh/src/lint/index.ts +++ b/scripts/vsh/src/lint/index.ts @@ -16,7 +16,7 @@ async function runLint({ format }: LintCommandOptions) { await execaCommand(`stylelint "**/*.{vue,css,less,scss}" --cache --fix`, { stdio: 'inherit', }); - await execaCommand(`prettier . --write --cache --log-level warn`, { + await execaCommand(`oxfmt .`, { stdio: 'inherit', }); await execaCommand(`oxlint . --fix`, { @@ -31,7 +31,7 @@ async function runLint({ format }: LintCommandOptions) { execaCommand(`eslint . --cache`, { stdio: 'inherit', }), - execaCommand(`prettier . --ignore-unknown --check --cache`, { + execaCommand(`oxfmt --check .`, { stdio: 'inherit', }), execaCommand(`stylelint "**/*.{vue,css,less,scss}" --cache`, { diff --git a/vben-admin.code-workspace b/vben-admin.code-workspace index f65f00f84..6a87e8f45 100644 --- a/vben-admin.code-workspace +++ b/vben-admin.code-workspace @@ -41,8 +41,8 @@ "path": "internal/lint-configs/oxlint-config", }, { - "name": "@vben/prettier-config", - "path": "internal/lint-configs/prettier-config", + "name": "@vben/oxfmt-config", + "path": "internal/lint-configs/oxfmt-config", }, { "name": "@vben/stylelint-config", diff --git a/vitest.config.ts b/vitest.config.ts index 6a93801e0..cdfd2c6dc 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -22,7 +22,7 @@ export default defineConfig({ '**/.{idea,git,cache,output,temp}/**', '**/node_modules/**', '**/{stylelint,eslint}.config.*', - '.prettierrc.mjs', + 'oxfmt.config.ts', ], }, });