Browse Source

build: migrate formatting pipeline to oxfmt

pull/7645/head
xingyu4j 1 week ago
parent
commit
6dabb848a5
  1. 23
      .prettierignore
  2. 1
      .prettierrc.mjs
  3. 1
      internal/lint-configs/eslint-config/package.json
  4. 1
      internal/lint-configs/eslint-config/src/configs/index.ts
  5. 17
      internal/lint-configs/eslint-config/src/configs/prettier.ts
  6. 2
      internal/lint-configs/eslint-config/src/index.ts
  7. 7
      internal/lint-configs/oxfmt-config/build.config.ts
  8. 17
      internal/lint-configs/oxfmt-config/package.json
  9. 22
      internal/lint-configs/oxfmt-config/src/index.ts
  10. 6
      internal/lint-configs/oxfmt-config/tsconfig.json
  11. 17
      internal/lint-configs/prettier-config/index.mjs
  12. 8
      internal/lint-configs/stylelint-config/index.mjs
  13. 4
      internal/lint-configs/stylelint-config/package.json
  14. 12
      lefthook.yml
  15. 26
      oxfmt.config.ts
  16. 3
      package.json
  17. 313
      pnpm-lock.yaml
  18. 6
      pnpm-workspace.yaml
  19. 2
      scripts/vsh/src/check-dep/index.ts
  20. 4
      scripts/vsh/src/lint/index.ts
  21. 4
      vben-admin.code-workspace
  22. 2
      vitest.config.ts

23
.prettierignore

@ -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

1
.prettierrc.mjs

@ -1 +0,0 @@
export { default } from '@vben/prettier-config';

1
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:",

1
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';

17
internal/lint-configs/eslint-config/src/configs/prettier.ts

@ -1,17 +0,0 @@
import type { Linter } from 'eslint';
import { interopDefault } from '../util';
export async function prettier(): Promise<Linter.Config[]> {
const pluginPrettier = await interopDefault(import('eslint-plugin-prettier'));
return [
{
plugins: {
prettier: pluginPrettier,
},
rules: {
'prettier/prettier': 'error',
},
},
];
}

2
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(),

7
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'],
});

17
internal/lint-configs/prettier-config/package.json → 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:"
}
}

22
internal/lint-configs/oxfmt-config/src/index.ts

@ -0,0 +1,22 @@
import { defineConfig as defineOxfmtConfig } from 'oxfmt';
type OxfmtConfig = Parameters<typeof defineOxfmtConfig>[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 };

6
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"]
}

17
internal/lint-configs/prettier-config/index.mjs

@ -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',
};

8
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',
{

4
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:"
}
}

12
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:

26
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',
],
});

3
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:",

313
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:

6
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

2
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',

4
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`, {

4
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",

2
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',
],
},
});

Loading…
Cancel
Save