diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..0939504f5 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,10 @@ +# Ignore artifacts: +dist-* +pnpm-lock.yaml + +# Ignore generated files: +auto-imports.d.ts +components.d.ts +**/@mf-types +**/http-import.lock.data +**/__snapshots__ diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..5ac85e271 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 100, + "singleQuote": true +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 699ed7331..f172f18c4 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["biomejs.biome"] + "recommendations": ["rstack.rslint", "esbenp.prettier-vscode"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 85b3b8121..95ed24415 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,15 +13,13 @@ "files.exclude": { "**/.DS_Store": true }, - "editor.defaultFormatter": "biomejs.biome", + "editor.defaultFormatter": "esbenp.prettier-vscode", "mdx.validate.validateFileLinks": "ignore", "[javascript]": { - "editor.defaultFormatter": "biomejs.biome" + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[typescript]": { - "editor.defaultFormatter": "biomejs.biome" + "editor.defaultFormatter": "esbenp.prettier-vscode" }, - "cSpell.words": [ - "rstest" - ] + "cSpell.words": ["rstest"] } diff --git a/AGENTS.md b/AGENTS.md index 020a4b961..94c1903a2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,6 +13,7 @@ This file provides guidance for AI coding agents working in this repository. **The primary goal of each example is to demonstrate "how a specific API achieves a specific effect through specific configuration".** When creating or modifying examples: + - **Keep it minimal**: Only include code necessary to demonstrate the target feature/API - **Avoid over-engineering**: Don't add complex business logic that distracts from the core demonstration - **Focus on the tool, not the ecosystem**: For example, in a test runner example, focus on the test runner's APIs (mocking, assertions, configuration), not on complex DOM manipulation or third-party library integrations @@ -20,6 +21,7 @@ When creating or modifying examples: - **Clarity over completeness**: A simple, clear example is better than a comprehensive but confusing one Example of good vs bad: + ``` # Good: Demonstrates rstest's mocking API - Simple mock function usage @@ -35,10 +37,12 @@ Example of good vs bad: ## Quick Start (Local) Prerequisites: + - Node.js per `.nvmrc` - `corepack` enabled Common commands: + - Install deps: `corepack enable && pnpm i` - Build everything: `pnpm run build` - Build a group: @@ -50,6 +54,7 @@ Common commands: - Test Rspack examples: `pnpm run test:rspack` Working in a single example: + - `cd rspack/basic` (or any other example dir) - `pnpm i` (workspace install is preferred at repo root) - `pnpm run dev` / `pnpm run build` / `pnpm run test` (depends on the example) @@ -57,6 +62,7 @@ Working in a single example: ## Where Things Live Top-level directories: + - `rspack/`: Rspack examples (often package name prefix `example-*`). - `rsbuild/`: Rsbuild examples (often package name prefix `rsbuild-*`). - `rspress/`: Rspress examples (often package name prefix `rspress-*`). @@ -65,7 +71,7 @@ Top-level directories: ## Coding Conventions -- Formatting and linting: `Biome` is used (see `biome.json`). +- Formatting and linting: `Rslint` and `Prettier` are used (see `rslint.config.ts` and `.prettierrc`). - Default JS/TS quote style is single quotes. - Line width is 100. - Prefer minimal, example-focused changes. This repo is a collection of runnable examples; avoid refactors that reduce clarity. @@ -87,6 +93,7 @@ Top-level directories: ## Agent Workflow Expectations When making changes: + - Identify the single example/package impacted. - Keep changes scoped to that example unless explicitly requested. - Update configuration consistently with the conventions in that subtree. diff --git a/README.md b/README.md index f88e09127..6f63f0482 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,12 @@ This repository contains comprehensive examples that demonstrate the Rstack ecos ## List of Examples -| [Rspack](https://github.com/web-infra-dev/rspack) | | [Examples](./rspack) | [Document](https://rspack.rs/) | -| :---------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------: | :----------------------------------: | -| [Rsbuild](https://github.com/web-infra-dev/rsbuild) | | [Examples](./rsbuild) | [Document](https://rsbuild.rs/) | -| [Rspress](https://github.com/web-infra-dev/rspress) | | [Examples](./rspress/) | [Document](https://rspress.rs/) | -| [Rsdoctor](https://github.com/web-infra-dev/rsdoctor) | | [Examples](./rsdoctor/) | [Document](https://rsdoctor.rs/) | -| [Rslib](https://github.com/web-infra-dev/rslib) | | [Examples](./rslib) | [Document](https://rslib.rs/) | +| [Rspack](https://github.com/web-infra-dev/rspack) | | [Examples](./rspack) | [Document](https://rspack.rs/) | +| :---------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------: | :------------------------------: | +| [Rsbuild](https://github.com/web-infra-dev/rsbuild) | | [Examples](./rsbuild) | [Document](https://rsbuild.rs/) | +| [Rspress](https://github.com/web-infra-dev/rspress) | | [Examples](./rspress/) | [Document](https://rspress.rs/) | +| [Rsdoctor](https://github.com/web-infra-dev/rsdoctor) | | [Examples](./rsdoctor/) | [Document](https://rsdoctor.rs/) | +| [Rslib](https://github.com/web-infra-dev/rslib) | | [Examples](./rslib) | [Document](https://rslib.rs/) | ## How to Use diff --git a/biome.json b/biome.json deleted file mode 100644 index 135e84195..000000000 --- a/biome.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", - "vcs": { - "enabled": true, - "defaultBranch": "main", - "clientKind": "git", - "useIgnoreFile": true - }, - "files": { - "includes": [ - "**/rspack/**", - "**/rsbuild/**", - "**/rspress/**", - "**/rsdoctor/**", - "**/rslib/**", - "**/rstest/**", - "!**/dist", - "!**/dist-*", - "!**/doc_build", - "!**/auto-imports.d.ts", - "!**/components.d.ts", - "!**/__snapshots__" - ], - "ignoreUnknown": true - }, - "javascript": { - "formatter": { - "quoteStyle": "single" - } - }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 2, - "lineWidth": 100, - "lineEnding": "lf" - }, - "linter": { - "rules": { - "recommended": false, - "suspicious": { - "recommended": true, - "noExplicitAny": "off", - "noArrayIndexKey": "off" - }, - "correctness": { - "recommended": true, - "useExhaustiveDependencies": "off" - } - } - }, - "overrides": [ - { - "includes": [ - "**/.vscode/*.json", - "**/tsconfig.json", - "**/tsconfig.*.json", - "**/tsconfig-*.json" - ], - "json": { - "parser": { - "allowComments": true, - "allowTrailingCommas": true - } - } - }, - { - "includes": ["**/worker.js", "**/*-worker.js"], - "linter": { - "rules": { - "suspicious": { - "noGlobalAssign": "off" - } - } - } - } - ] -} diff --git a/package.json b/package.json index 3270e4a46..8cbdc9c8d 100644 --- a/package.json +++ b/package.json @@ -11,21 +11,28 @@ "build:rspack": "pnpm --filter \"@rspack-example/*\" --stream build", "build:rspress": "pnpm --filter \"@rspress-example/*\" --stream build", "bump": "taze -l", + "lint": "rslint && prettier -c \"*.{json,jsonc,md,yml,yaml,ts}\" \".vscode/*.json\" \"{rspack,rsbuild,rspress,rsdoctor,rslib,rstest}/**/*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}\"", + "lint:write": "rslint --fix && prettier -w \"*.{json,jsonc,md,yml,yaml,ts}\" \".vscode/*.json\" \"{rspack,rsbuild,rspress,rsdoctor,rslib,rstest}/**/*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}\"", "prepare": "husky", "sort-package-json": "npx sort-package-json \"rspack/*/package.json\" \"rsbuild/*/package.json\" \"rspress/*/package.json\" \"rsdoctor/*/package.json\" \"rslib/*/package.json\" \"rstest/*/package.json\"", "test:rspack": "pnpm --filter \"@rspack-example/*\" --stream test", "test:rstest": "pnpm --filter \"@rstest-example/*\" --stream test" }, "lint-staged": { - "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}": [ - "npx @biomejs/biome check --write --no-errors-on-unmatched" + "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx}": [ + "rslint --fix", + "prettier --write" + ], + "*.{json,jsonc,md,mdx,yml,yaml,css,scss,less,html,vue}": [ + "prettier --write" ] }, "devDependencies": { - "@biomejs/biome": "^2.4.13", + "@rslint/core": "^0.5.0", "cross-env": "10.1.0", "husky": "9.1.7", "lint-staged": "16.4.0", + "prettier": "^3.8.3", "taze": "^19.11.0" }, "packageManager": "pnpm@10.33.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84a015e53..ddb5957dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,9 +9,9 @@ importers: .: devDependencies: - '@biomejs/biome': - specifier: ^2.4.13 - version: 2.4.13 + '@rslint/core': + specifier: ^0.5.0 + version: 0.5.1(jiti@2.6.1) cross-env: specifier: 10.1.0 version: 10.1.0 @@ -21,6 +21,9 @@ importers: lint-staged: specifier: 16.4.0 version: 16.4.0 + prettier: + specifier: ^3.8.3 + version: 3.8.3 taze: specifier: ^19.11.0 version: 19.11.0 @@ -1056,7 +1059,7 @@ importers: version: 19.2.5(react@19.2.5) storybook: specifier: ^10.3.5 - version: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + version: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) storybook-addon-rslib: specifier: ^3.3.3 version: 3.3.3(@rsbuild/core@2.0.1)(@rslib/core@0.21.3)(storybook-builder-rsbuild@3.3.3)(typescript@5.9.3) @@ -1299,7 +1302,7 @@ importers: version: 19.2.5(react@19.2.5) storybook: specifier: ^10.3.5 - version: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + version: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) storybook-addon-rslib: specifier: ^3.3.3 version: 3.3.3(@rsbuild/core@1.7.5)(@rslib/core@0.21.3)(storybook-builder-rsbuild@3.3.3)(typescript@5.9.3) @@ -1481,7 +1484,7 @@ importers: version: 10.3.5(storybook@10.3.5)(vue@3.5.33) storybook: specifier: ^10.3.5 - version: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + version: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) storybook-addon-rslib: specifier: ^3.3.3 version: 3.3.3(@rsbuild/core@1.7.5)(@rslib/core@0.21.3)(storybook-builder-rsbuild@3.3.3)(typescript@5.9.3) @@ -4968,63 +4971,6 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@biomejs/biome@2.4.13': - resolution: {integrity: sha512-gLXOwkOBBg0tr7bDsqlkIh4uFeKuMjxvqsrb1Tukww1iDmHcfr4Uu8MoQxp0Rcte+69+osRNWXwHsu/zxT6XqA==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@2.4.13': - resolution: {integrity: sha512-2KImO1jhNFBa2oWConyr0x6flxbQpGKv6902uGXpYM62Xyem8U80j441SyUJ8KyngsmKbQjeIv1q2CQfDkNnYg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@2.4.13': - resolution: {integrity: sha512-BKrJklbaFN4p1Ts4kPBczo+PkbsHQg57kmJ+vON9u2t6uN5okYHaSr7h/MutPCWQgg2lglaWoSmm+zhYW+oOkg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@2.4.13': - resolution: {integrity: sha512-U5MsuBQW25dXaYtqWWSPM3P96H6Y+fHuja3TQpMNnylocHW0tEbtFTDlUj6oM+YJLntvEkQy4grBvQNUD4+RCg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@biomejs/cli-linux-arm64@2.4.13': - resolution: {integrity: sha512-NzkUDSqfvMBrPplKgVr3aXLHZ2NEELvvF4vZxXulEylKWIGqlvNEcwUcj9OLrn75TD3lJ/GIqCVlBwd1MZCuYQ==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@biomejs/cli-linux-x64-musl@2.4.13': - resolution: {integrity: sha512-Z601MienRgTBDza/+u2CH3RSrWoXo9rtr8NK6A4KJzqGgfxx+H3VlyLgTJ4sRo40T3pIsqpTmiOQEvYzQvBRvQ==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@biomejs/cli-linux-x64@2.4.13': - resolution: {integrity: sha512-Az3ZZedYRBo9EQzNnD9SxFcR1G5QsGo6VEc2hIyVPZ1rdKwee/7E9oeBBZFpE8Z44ekxsDQBqbiWGW5ShOhUSQ==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@biomejs/cli-win32-arm64@2.4.13': - resolution: {integrity: sha512-Px9PS2B5/Q183bUwy/5VHqp3J2lzdOCeVGzMpphYfl8oSa7VDCqenBdqWpy6DCy/en4Rbf/Y1RieZF6dJPcc9A==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@2.4.13': - resolution: {integrity: sha512-tTcMkXyBrmHi9BfrD2VNHs/5rYIUKETqsBlYOvSAABwBkJhSDVb5e7wPukftsQbO3WzQkXe6kaztC6WtUOXSoQ==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - '@bufbuild/protobuf@2.9.0': resolution: {integrity: sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==} @@ -7172,6 +7118,45 @@ packages: typescript: optional: true + '@rslint/core@0.5.1': + resolution: {integrity: sha512-UGcalhkpNvm4zN7E2DiQsuwM10LMi3CazOiANVevf5hn+NB7WKEMWYKn3bFySptg7Ll042IKMUlIXaFQjWs9lQ==} + hasBin: true + peerDependencies: + jiti: ^2.0.0 + peerDependenciesMeta: + jiti: + optional: true + + '@rslint/darwin-arm64@0.5.1': + resolution: {integrity: sha512-grbPKhrRv0BTKvdByIIlS5avc4ttF9vylaStJh/TTYS96cTkjCcTv7RAUv/ZI3VSaSZdRBcW4f6wW9pPWpt41w==} + cpu: [arm64] + os: [darwin] + + '@rslint/darwin-x64@0.5.1': + resolution: {integrity: sha512-v7P5AYWzm4Xrly5nl5yXSAyHn6j9pwZyFFUTD9UCOodZMEVmBxW3WxdL9iq8PfnG5n8GXHqTqBSYwWfG1WWD0g==} + cpu: [x64] + os: [darwin] + + '@rslint/linux-arm64@0.5.1': + resolution: {integrity: sha512-czDNVvgea0LpTlqaRvZHulJn8RmmDso2DufIWedxIA9yfK+nEK4H0tANNVQL4NBTHiv/6cqQw8NveP3KD5I93g==} + cpu: [arm64] + os: [linux] + + '@rslint/linux-x64@0.5.1': + resolution: {integrity: sha512-D0isbtok26OSjSQkWDDfTWPLQDqrufbTbiihMFxkDlIRKDGcU9HvnfTlEmgnwzkxt6Jm7CBZZiXdFtyhPgnWEg==} + cpu: [x64] + os: [linux] + + '@rslint/win32-arm64@0.5.1': + resolution: {integrity: sha512-XnU369fuTR9EqFhRMmbg+rHO3T/gwC+VV2AC1HAvZ62/pgNjFQmlK6IEsU293sgXHOUnRIQ6IsC9J0imyrCMXQ==} + cpu: [arm64] + os: [win32] + + '@rslint/win32-x64@0.5.1': + resolution: {integrity: sha512-7++ELodvfVPFDSYEMVWb7OA+BD2JeONXtwXP/vmbrcawBTff7E/6VREB8dGPYCNh/ypBuSQ2WYXUtYAxQxwSiQ==} + cpu: [x64] + os: [win32] + '@rspack/binding-darwin-arm64@1.6.7': resolution: {integrity: sha512-QiIAP8JTAtht0j8/xZZEQTJRB9e+KrOm9c7JJm73CewVg55rDWRrwopiVfBNlTu1coem1ztUHJYdQhg2uXfqww==} cpu: [arm64] @@ -12852,9 +12837,9 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + engines: {node: '>=14'} hasBin: true pretty-bytes@5.6.0: @@ -15374,7 +15359,7 @@ snapshots: fzf: 0.5.2 package-manager-detector: 1.6.0 tinyexec: 1.1.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 '@apideck/better-ajv-errors@0.3.6(ajv@8.12.0)': dependencies: @@ -17106,41 +17091,6 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@biomejs/biome@2.4.13': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.4.13 - '@biomejs/cli-darwin-x64': 2.4.13 - '@biomejs/cli-linux-arm64': 2.4.13 - '@biomejs/cli-linux-arm64-musl': 2.4.13 - '@biomejs/cli-linux-x64': 2.4.13 - '@biomejs/cli-linux-x64-musl': 2.4.13 - '@biomejs/cli-win32-arm64': 2.4.13 - '@biomejs/cli-win32-x64': 2.4.13 - - '@biomejs/cli-darwin-arm64@2.4.13': - optional: true - - '@biomejs/cli-darwin-x64@2.4.13': - optional: true - - '@biomejs/cli-linux-arm64-musl@2.4.13': - optional: true - - '@biomejs/cli-linux-arm64@2.4.13': - optional: true - - '@biomejs/cli-linux-x64-musl@2.4.13': - optional: true - - '@biomejs/cli-linux-x64@2.4.13': - optional: true - - '@biomejs/cli-win32-arm64@2.4.13': - optional: true - - '@biomejs/cli-win32-x64@2.4.13': - optional: true - '@bufbuild/protobuf@2.9.0': {} '@csstools/color-helpers@6.0.2': {} @@ -18349,7 +18299,7 @@ snapshots: optionalDependencies: '@module-federation/sdk': 2.3.3(node-fetch@2.7.0) '@rsbuild/core': 2.0.1(@module-federation/runtime-tools@2.3.3)(core-js@3.49.0) - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) webpack: 5.102.1 webpack-virtual-modules: 0.6.2 transitivePeerDependencies: @@ -18778,7 +18728,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 2.80.0 @@ -18786,7 +18736,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.46.2 @@ -19210,6 +19160,37 @@ snapshots: - '@typescript/native-preview' - core-js + '@rslint/core@0.5.1(jiti@2.6.1)': + dependencies: + picomatch: 4.0.4 + tinyglobby: 0.2.15 + optionalDependencies: + '@rslint/darwin-arm64': 0.5.1 + '@rslint/darwin-x64': 0.5.1 + '@rslint/linux-arm64': 0.5.1 + '@rslint/linux-x64': 0.5.1 + '@rslint/win32-arm64': 0.5.1 + '@rslint/win32-x64': 0.5.1 + jiti: 2.6.1 + + '@rslint/darwin-arm64@0.5.1': + optional: true + + '@rslint/darwin-x64@0.5.1': + optional: true + + '@rslint/linux-arm64@0.5.1': + optional: true + + '@rslint/linux-x64@0.5.1': + optional: true + + '@rslint/win32-arm64@0.5.1': + optional: true + + '@rslint/win32-x64@0.5.1': + optional: true + '@rspack/binding-darwin-arm64@1.6.7': optional: true @@ -19814,7 +19795,7 @@ snapshots: '@storybook/react-dom-shim': 10.3.5(react-dom@19.2.5)(react@19.2.5)(storybook@10.3.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -19825,11 +19806,11 @@ snapshots: '@storybook/addon-onboarding@10.3.5(storybook@10.3.5)': dependencies: - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.46.2)(storybook@10.3.5)(vite@7.1.1)(webpack@5.102.1)': dependencies: - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) unplugin: 2.3.10 optionalDependencies: esbuild: 0.28.0 @@ -19862,7 +19843,7 @@ snapshots: dependencies: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) '@storybook/react@10.3.5(react-dom@19.2.5)(react@19.2.5)(storybook@10.3.5)(typescript@5.9.3)': dependencies: @@ -19872,7 +19853,7 @@ snapshots: react-docgen: 8.0.3 react-docgen-typescript: 2.4.0(typescript@5.9.3) react-dom: 19.2.5(react@19.2.5) - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -19881,7 +19862,7 @@ snapshots: '@storybook/vue3@10.3.5(storybook@10.3.5)(vue@3.5.33)': dependencies: '@storybook/global': 5.0.0 - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) type-fest: 2.19.0 vue: 3.5.33(typescript@5.9.3) vue-component-type-helpers: 3.2.7 @@ -22969,10 +22950,6 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -26159,8 +26136,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@2.8.8: - optional: true + prettier@3.8.3: {} pretty-bytes@5.6.0: {} @@ -27474,7 +27450,7 @@ snapshots: process: 0.11.10 rsbuild-plugin-html-minifier-terser: 1.1.3(@rsbuild/core@1.7.5) sirv: 2.0.4 - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 @@ -27506,7 +27482,7 @@ snapshots: process: 0.11.10 rsbuild-plugin-html-minifier-terser: 1.1.3(@rsbuild/core@2.0.1) sirv: 2.0.4 - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 @@ -27534,7 +27510,7 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.9.3) react-dom: 19.2.5(react@19.2.5) resolve: 1.22.11 - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) storybook-builder-rsbuild: 3.3.3(@rsbuild/core@1.7.5)(@rspack/core@2.0.0)(react-dom@19.2.5)(react@19.2.5)(storybook@10.3.5)(typescript@5.9.3)(vite@7.1.1) tsconfig-paths: 4.2.0 optionalDependencies: @@ -27561,7 +27537,7 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.9.3) react-dom: 19.2.5(react@19.2.5) resolve: 1.22.11 - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) storybook-builder-rsbuild: 3.3.3(@rsbuild/core@2.0.1)(@rspack/core@2.0.0)(react-dom@19.2.5)(react@19.2.5)(storybook@10.3.5)(typescript@5.9.3)(vite@7.1.1) tsconfig-paths: 4.2.0 optionalDependencies: @@ -27579,7 +27555,7 @@ snapshots: dependencies: '@rsbuild/core': 1.7.5 '@storybook/vue3': 10.3.5(storybook@10.3.5)(vue@3.5.33) - storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5) storybook-builder-rsbuild: 3.3.3(@rsbuild/core@1.7.5)(@rspack/core@2.0.0)(react-dom@19.2.5)(react@19.2.5)(storybook@10.3.5)(typescript@5.9.3)(vite@7.1.1) vue: 3.5.33(typescript@5.9.3) vue-docgen-api: 4.79.2(vue@3.5.33) @@ -27596,7 +27572,7 @@ snapshots: - vite - webpack - storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.5)(react@19.2.5): + storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5)(react@19.2.5): dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.1(react-dom@19.2.5)(react@19.2.5) @@ -27612,7 +27588,7 @@ snapshots: use-sync-external-store: 1.6.0(react@19.2.5) ws: 8.20.0 optionalDependencies: - prettier: 2.8.8 + prettier: 3.8.3 transitivePeerDependencies: - '@testing-library/dom' - bufferutil @@ -28097,8 +28073,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinyglobby@0.2.16: dependencies: @@ -28366,11 +28342,11 @@ snapshots: magic-string: 0.30.21 mlly: 1.8.0 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 pkg-types: 2.3.0 scule: 1.3.0 strip-literal: 3.1.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unplugin: 2.3.11 unplugin-utils: 0.3.1 @@ -28491,7 +28467,7 @@ snapshots: unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 unplugin-vue-components@31.1.0(vue@3.5.33): dependencies: @@ -28517,20 +28493,20 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 unplugin@3.0.0: dependencies: '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 unraw@3.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8ce9505bd..10d6ebd08 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,10 +1,10 @@ packages: - - "rspack/**" - - "rsbuild/**" - - "rslib/**" - - "rspress/**" - - "rsdoctor/**" - - "rstest/**" - - "!**/dist" + - 'rspack/**' + - 'rsbuild/**' + - 'rslib/**' + - 'rspress/**' + - 'rsdoctor/**' + - 'rstest/**' + - '!**/dist' dedupePeers: true diff --git a/rsbuild/express/server.mjs b/rsbuild/express/server.mjs index aa784e78f..5e4eac4b4 100644 --- a/rsbuild/express/server.mjs +++ b/rsbuild/express/server.mjs @@ -1,5 +1,5 @@ -import express from "express"; -import { createRsbuild, loadConfig } from "@rsbuild/core"; +import express from 'express'; +import { createRsbuild, loadConfig } from '@rsbuild/core'; export async function startDevServer() { const { content } = await loadConfig({}); diff --git a/rsbuild/fastify/server.mjs b/rsbuild/fastify/server.mjs index f011e23cc..fe032fae2 100644 --- a/rsbuild/fastify/server.mjs +++ b/rsbuild/fastify/server.mjs @@ -1,5 +1,5 @@ -import Fastify from "fastify"; -import { createRsbuild, loadConfig } from "@rsbuild/core"; +import Fastify from 'fastify'; +import { createRsbuild, loadConfig } from '@rsbuild/core'; export async function startDevServer() { const { content } = await loadConfig({}); @@ -11,7 +11,7 @@ export async function startDevServer() { const fastify = Fastify(); - const middie = await import("@fastify/middie"); + const middie = await import('@fastify/middie'); await fastify.register(middie); diff --git a/rsbuild/react-eslint/.eslintrc.cjs b/rsbuild/react-eslint/.eslintrc.cjs index 81b959450..3d50001d3 100644 --- a/rsbuild/react-eslint/.eslintrc.cjs +++ b/rsbuild/react-eslint/.eslintrc.cjs @@ -2,10 +2,10 @@ module.exports = { root: true, env: { browser: true, es2021: true }, extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react-hooks/recommended", + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', ], - ignorePatterns: ["dist", ".eslintrc.cjs"], - parser: "@typescript-eslint/parser", + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', }; diff --git a/rsbuild/shadcn-ui/src/components/ui/button.tsx b/rsbuild/shadcn-ui/src/components/ui/button.tsx index 0ecf8afbe..0390bf6a8 100644 --- a/rsbuild/shadcn-ui/src/components/ui/button.tsx +++ b/rsbuild/shadcn-ui/src/components/ui/button.tsx @@ -31,8 +31,7 @@ const buttonVariants = cva( ); export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { + extends React.ButtonHTMLAttributes, VariantProps { asChild?: boolean; } diff --git a/rsbuild/ssr-express-with-manifest/prod-server.mjs b/rsbuild/ssr-express-with-manifest/prod-server.mjs index dab16f36f..ae2998a12 100644 --- a/rsbuild/ssr-express-with-manifest/prod-server.mjs +++ b/rsbuild/ssr-express-with-manifest/prod-server.mjs @@ -1,7 +1,7 @@ -import express from "express"; -import { createRequire } from "node:module"; -import fs from "node:fs"; -import path from "node:path"; +import express from 'express'; +import { createRequire } from 'node:module'; +import fs from 'node:fs'; +import path from 'node:path'; const require = createRequire(import.meta.url); @@ -18,12 +18,14 @@ const serverRender = (_req, res) => { const { js, css } = entries['index'].initial; - const scriptTags = js.map(file => ``).join('\n'); - const styleTags = css.map(file => ``).join('\n'); + const scriptTags = js.map((file) => ``).join('\n'); + const styleTags = css.map((file) => ``).join('\n'); - const html = templateHtml.replace("", markup).replace('', `${scriptTags}\n${styleTags}`); + const html = templateHtml + .replace('', markup) + .replace('', `${scriptTags}\n${styleTags}`); - res.status(200).set({ "Content-Type": "text/html" }).send(html); + res.status(200).set({ 'Content-Type': 'text/html' }).send(html); }; const port = process.env.PORT || 3000; @@ -31,16 +33,16 @@ const port = process.env.PORT || 3000; export async function preview() { const app = express(); - app.get("/", (req, res, next) => { + app.get('/', (req, res, next) => { try { serverRender(req, res, next); } catch (err) { - console.error("SSR render error, downgrade to CSR...\n", err); + console.error('SSR render error, downgrade to CSR...\n', err); next(); } }); - app.use(express.static("dist")); + app.use(express.static('dist')); app.listen(port, () => { console.log(`Server started at http://localhost:${port}`); diff --git a/rsbuild/ssr-express/prod-server.mjs b/rsbuild/ssr-express/prod-server.mjs index e854fca3f..5b5392f46 100644 --- a/rsbuild/ssr-express/prod-server.mjs +++ b/rsbuild/ssr-express/prod-server.mjs @@ -1,7 +1,7 @@ -import express from "express"; -import { createRequire } from "node:module"; -import fs from "node:fs"; -import path from "node:path"; +import express from 'express'; +import { createRequire } from 'node:module'; +import fs from 'node:fs'; +import path from 'node:path'; const require = createRequire(import.meta.url); @@ -12,11 +12,11 @@ const serverRender = (_req, res) => { const markup = importedApp.render(); - const template = fs.readFileSync(`${process.cwd()}/dist/index.html`, "utf-8"); + const template = fs.readFileSync(`${process.cwd()}/dist/index.html`, 'utf-8'); const html = template.replace(``, markup); - res.status(200).set({ "Content-Type": "text/html" }).send(html); + res.status(200).set({ 'Content-Type': 'text/html' }).send(html); }; const port = process.env.PORT || 3000; @@ -24,16 +24,16 @@ const port = process.env.PORT || 3000; export async function preview() { const app = express(); - app.get("/", (req, res, next) => { + app.get('/', (req, res, next) => { try { serverRender(req, res, next); } catch (err) { - console.error("SSR render error, downgrade to CSR...\n", err); + console.error('SSR render error, downgrade to CSR...\n', err); next(); } }); - app.use(express.static("dist")); + app.use(express.static('dist')); app.listen(port, () => { console.log(`Server started at http://localhost:${port}`); diff --git a/rslib/iife/src/index.ts b/rslib/iife/src/index.ts index 50b9a39bc..95d7a9530 100644 --- a/rslib/iife/src/index.ts +++ b/rslib/iife/src/index.ts @@ -3,15 +3,15 @@ declare global { } class Calculator { - add(a: number, b: number): number { - return a + b; - } + add(a: number, b: number): number { + return a + b; + } - subtract(a: number, b: number): number { - return a - b; - } + subtract(a: number, b: number): number { + return a - b; + } } globalThis.calculator = new Calculator(); -export default Calculator; \ No newline at end of file +export default Calculator; diff --git a/rslib/module-doc/rslib.config.ts b/rslib/module-doc/rslib.config.ts index 6ccb9bb58..89410a343 100644 --- a/rslib/module-doc/rslib.config.ts +++ b/rslib/module-doc/rslib.config.ts @@ -1,19 +1,19 @@ -import { pluginReact } from "@rsbuild/plugin-react"; -import { defineConfig } from "@rslib/core"; +import { pluginReact } from '@rsbuild/plugin-react'; +import { defineConfig } from '@rslib/core'; export default defineConfig({ lib: [ { bundle: false, dts: true, - format: "esm", + format: 'esm', }, ], output: { - target: "web", + target: 'web', }, source: { - tsconfigPath: "tsconfig.build.json", + tsconfigPath: 'tsconfig.build.json', }, plugins: [pluginReact()], }); diff --git a/rslib/module-doc/rspress.config.ts b/rslib/module-doc/rspress.config.ts index 315e52ebf..9e721dce3 100644 --- a/rslib/module-doc/rspress.config.ts +++ b/rslib/module-doc/rspress.config.ts @@ -1,28 +1,28 @@ -import * as path from "node:path"; -import { defineConfig } from "@rspress/core"; -import { pluginPreview } from "@rspress/plugin-preview"; -import { pluginApiDocgen } from "@rspress/plugin-api-docgen"; +import * as path from 'node:path'; +import { defineConfig } from '@rspress/core'; +import { pluginPreview } from '@rspress/plugin-preview'; +import { pluginApiDocgen } from '@rspress/plugin-api-docgen'; export default defineConfig({ - root: path.join(__dirname, "docs"), - title: "Rslib Module Doc", - lang: "en", + root: path.join(__dirname, 'docs'), + title: 'Rslib Module Doc', + lang: 'en', locales: [ { - lang: "en", - label: "English", + lang: 'en', + label: 'English', }, { - lang: "zh", - label: "简体中文", + lang: 'zh', + label: '简体中文', }, ], plugins: [ pluginApiDocgen({ entries: { - Button: "./src/button.tsx", + Button: './src/button.tsx', }, - apiParseTool: "react-docgen-typescript", + apiParseTool: 'react-docgen-typescript', }), pluginPreview(), ], diff --git a/rslib/module-doc/src/Button.tsx b/rslib/module-doc/src/Button.tsx index 56b022d05..81a9a56df 100644 --- a/rslib/module-doc/src/Button.tsx +++ b/rslib/module-doc/src/Button.tsx @@ -1,4 +1,4 @@ -import "./button.css"; +import './button.css'; export interface ButtonProps { /** @@ -14,7 +14,7 @@ export interface ButtonProps { * Size of Button * @default 'large' */ - size?: "small" | "medium" | "large"; + size?: 'small' | 'medium' | 'large'; /** * Label of the button */ @@ -23,16 +23,16 @@ export interface ButtonProps { export const Button = ({ primary = true, - size = "large", + size = 'large', backgroundColor, label, ...props }: ButtonProps) => { - const mode = primary ? "demo-button--primary" : "demo-button--secondary"; + const mode = primary ? 'demo-button--primary' : 'demo-button--secondary'; return ( diff --git a/rslib/node-basic/src/add.ts b/rslib/node-basic/src/add.ts index 946a4b829..8d9b8a22a 100644 --- a/rslib/node-basic/src/add.ts +++ b/rslib/node-basic/src/add.ts @@ -1,3 +1,3 @@ export function add(a: number, b: number): number { return a + b; -} \ No newline at end of file +} diff --git a/rslib/node-basic/src/divide.ts b/rslib/node-basic/src/divide.ts index 2e7b16960..a3a882e57 100644 --- a/rslib/node-basic/src/divide.ts +++ b/rslib/node-basic/src/divide.ts @@ -3,4 +3,4 @@ export function divide(a: number, b: number): number { throw new Error('Division by zero is not allowed'); } return a / b; -} \ No newline at end of file +} diff --git a/rslib/node-basic/src/index.ts b/rslib/node-basic/src/index.ts index e0fd4a4dc..dcc7dc31d 100644 --- a/rslib/node-basic/src/index.ts +++ b/rslib/node-basic/src/index.ts @@ -1,4 +1,4 @@ export * from './add'; export * from './subtract'; export * from './multiply'; -export * from './divide'; \ No newline at end of file +export * from './divide'; diff --git a/rslib/node-basic/src/multiply.ts b/rslib/node-basic/src/multiply.ts index ce87b38fc..14289fe2e 100644 --- a/rslib/node-basic/src/multiply.ts +++ b/rslib/node-basic/src/multiply.ts @@ -1,3 +1,3 @@ export function multiply(a: number, b: number): number { return a * b; -} \ No newline at end of file +} diff --git a/rslib/node-basic/src/subtract.ts b/rslib/node-basic/src/subtract.ts index ccd15d4fa..b5bd2dfcf 100644 --- a/rslib/node-basic/src/subtract.ts +++ b/rslib/node-basic/src/subtract.ts @@ -1,3 +1,3 @@ export function subtract(a: number, b: number): number { return a - b; -} \ No newline at end of file +} diff --git a/rslib/preact/src/Button.tsx b/rslib/preact/src/Button.tsx index 1aba25382..88c50df2e 100644 --- a/rslib/preact/src/Button.tsx +++ b/rslib/preact/src/Button.tsx @@ -1,26 +1,26 @@ -import type { FunctionComponent } from "preact"; -import "./button.css"; +import type { FunctionComponent } from 'preact'; +import './button.css'; interface ButtonProps { primary?: boolean; backgroundColor?: string; - size?: "small" | "medium" | "large"; + size?: 'small' | 'medium' | 'large'; label: string; onClick?: () => void; } export const Button: FunctionComponent = ({ primary = false, - size = "medium", + size = 'medium', backgroundColor, label, ...props }) => { - const mode = primary ? "demo-button--primary" : "demo-button--secondary"; + const mode = primary ? 'demo-button--primary' : 'demo-button--secondary'; return ( ); diff --git a/rslib/react-css-module/src/index.tsx b/rslib/react-css-module/src/index.tsx index b9b10c6db..b075827d7 100644 --- a/rslib/react-css-module/src/index.tsx +++ b/rslib/react-css-module/src/index.tsx @@ -1,6 +1,6 @@ -import type React from "react"; -import { CounterButton } from "./components/CounterButton"; -import { useCounter } from "./useCounter"; +import type React from 'react'; +import { CounterButton } from './components/CounterButton'; +import { useCounter } from './useCounter'; export const Counter: React.FC = () => { const { increment, decrement } = useCounter(); diff --git a/rslib/react-css-module/src/useCounter.tsx b/rslib/react-css-module/src/useCounter.tsx index c3a6bbf30..885dbdfe0 100644 --- a/rslib/react-css-module/src/useCounter.tsx +++ b/rslib/react-css-module/src/useCounter.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState } from 'react'; export const useCounter = (initialValue = 0) => { const [count, setCount] = useState(initialValue); diff --git a/rslib/react-less/rslib.config.ts b/rslib/react-less/rslib.config.ts index ec8f2bd71..0c69d9f79 100644 --- a/rslib/react-less/rslib.config.ts +++ b/rslib/react-less/rslib.config.ts @@ -1,17 +1,17 @@ -import { pluginReact } from "@rsbuild/plugin-react"; -import { pluginLess } from "@rsbuild/plugin-less"; -import { defineConfig } from "@rslib/core"; +import { pluginReact } from '@rsbuild/plugin-react'; +import { pluginLess } from '@rsbuild/plugin-less'; +import { defineConfig } from '@rslib/core'; export default defineConfig({ lib: [ { bundle: false, dts: true, - format: "esm", + format: 'esm', }, ], output: { - target: "web", + target: 'web', }, plugins: [ pluginReact(), diff --git a/rslib/react-less/src/index.tsx b/rslib/react-less/src/index.tsx index 5f3e59d56..037d79acf 100644 --- a/rslib/react-less/src/index.tsx +++ b/rslib/react-less/src/index.tsx @@ -1,6 +1,6 @@ -import type React from "react"; -import { useCounter } from "./useCounter"; -import "./index.less"; +import type React from 'react'; +import { useCounter } from './useCounter'; +import './index.less'; export const Counter: React.FC = () => { const { count } = useCounter(); diff --git a/rslib/react-less/src/useCounter.tsx b/rslib/react-less/src/useCounter.tsx index c3a6bbf30..885dbdfe0 100644 --- a/rslib/react-less/src/useCounter.tsx +++ b/rslib/react-less/src/useCounter.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState } from 'react'; export const useCounter = (initialValue = 0) => { const [count, setCount] = useState(initialValue); diff --git a/rslib/react-sass/src/index.tsx b/rslib/react-sass/src/index.tsx index c2ffb0343..bcca9d295 100644 --- a/rslib/react-sass/src/index.tsx +++ b/rslib/react-sass/src/index.tsx @@ -1,6 +1,6 @@ -import type React from "react"; -import { useCounter } from "./useCounter"; -import "./index.scss"; +import type React from 'react'; +import { useCounter } from './useCounter'; +import './index.scss'; export const Counter: React.FC = () => { const { count } = useCounter(); diff --git a/rslib/react-sass/src/useCounter.tsx b/rslib/react-sass/src/useCounter.tsx index c3a6bbf30..885dbdfe0 100644 --- a/rslib/react-sass/src/useCounter.tsx +++ b/rslib/react-sass/src/useCounter.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState } from 'react'; export const useCounter = (initialValue = 0) => { const [count, setCount] = useState(initialValue); diff --git a/rslib/react-tailwindcss-v3/src/index.tsx b/rslib/react-tailwindcss-v3/src/index.tsx index c24259c8a..7db54c00b 100644 --- a/rslib/react-tailwindcss-v3/src/index.tsx +++ b/rslib/react-tailwindcss-v3/src/index.tsx @@ -1,34 +1,32 @@ -import "./index.css"; +import './index.css'; interface ButtonProps { primary?: boolean; backgroundColor?: string; - size?: "small" | "medium" | "large"; + size?: 'small' | 'medium' | 'large'; label: string; onClick?: () => void; } export const Button = ({ primary = false, - size = "medium", + size = 'medium', backgroundColor, label, onClick, ...props }: ButtonProps) => { - const mode = primary - ? "bg-blue-500 hover:bg-blue-600" - : "bg-gray-500 hover:bg-gray-600"; + const mode = primary ? 'bg-blue-500 hover:bg-blue-600' : 'bg-gray-500 hover:bg-gray-600'; const sizeClasses = { - small: "px-2 py-1 text-sm", - medium: "px-4 py-2 text-base", - large: "px-6 py-3 text-lg", + small: 'px-2 py-1 text-sm', + medium: 'px-4 py-2 text-base', + large: 'px-6 py-3 text-lg', }; const buttonStyle = `rounded ${mode} ${ sizeClasses[size] - } text-white font-medium ${backgroundColor ? `bg-${backgroundColor}` : ""}`; + } text-white font-medium ${backgroundColor ? `bg-${backgroundColor}` : ''}`; return ( diff --git a/rslib/web-worker/src/index.ts b/rslib/web-worker/src/index.ts index 9474ade4c..b368508e4 100644 --- a/rslib/web-worker/src/index.ts +++ b/rslib/web-worker/src/index.ts @@ -4,4 +4,4 @@ worker.onmessage = (event) => { console.log('The results from Workers:', event.data); }; -worker.postMessage(10); \ No newline at end of file +worker.postMessage(10); diff --git a/rslib/web-worker/src/worker.ts b/rslib/web-worker/src/worker.ts index 818944b6c..13e8404ea 100644 --- a/rslib/web-worker/src/worker.ts +++ b/rslib/web-worker/src/worker.ts @@ -1,4 +1,4 @@ self.onmessage = (event) => { const result = event.data * 2; self.postMessage(result); -}; \ No newline at end of file +}; diff --git a/rslib/web-worker/tsconfig.json b/rslib/web-worker/tsconfig.json index 4c49a57f3..04f777405 100644 --- a/rslib/web-worker/tsconfig.json +++ b/rslib/web-worker/tsconfig.json @@ -12,4 +12,4 @@ "allowImportingTsExtensions": true }, "include": ["src"] -} \ No newline at end of file +} diff --git a/rslint.config.ts b/rslint.config.ts new file mode 100644 index 000000000..12e4fce84 --- /dev/null +++ b/rslint.config.ts @@ -0,0 +1,23 @@ +import { defineConfig, ts } from '@rslint/core'; + +export default defineConfig([ + { + ignores: ['**/dist-*/**', '**/auto-imports.d.ts', '**/components.d.ts', '**/__snapshots__/**'], + }, + ts.configs.recommended, + { + rules: { + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', + 'prefer-const': 'off', + 'prefer-spread': 'off', + }, + }, + { + files: ['**/worker.ts', '**/*-worker.ts'], + rules: { + 'no-global-assign': 'off', + }, + }, +]); diff --git a/rspack/basic/rspack.config.mjs b/rspack/basic/rspack.config.mjs index c0977ab2f..91b5bf2bb 100644 --- a/rspack/basic/rspack.config.mjs +++ b/rspack/basic/rspack.config.mjs @@ -1,12 +1,12 @@ // @ts-check -import { rspack } from "@rspack/core"; -import { defineConfig } from "@rspack/cli"; +import { rspack } from '@rspack/core'; +import { defineConfig } from '@rspack/cli'; export default defineConfig({ - entry: "./src/index.js", + entry: './src/index.js', plugins: [ new rspack.HtmlRspackPlugin({ - template: "./index.html", + template: './index.html', }), ], }); diff --git a/rspack/bundle-splitting/rspack.config.mjs b/rspack/bundle-splitting/rspack.config.mjs index e73821f3d..4bb56e5d5 100644 --- a/rspack/bundle-splitting/rspack.config.mjs +++ b/rspack/bundle-splitting/rspack.config.mjs @@ -1,10 +1,10 @@ // @ts-check -import { rspack } from "@rspack/core"; -import { defineConfig } from "@rspack/cli"; +import { rspack } from '@rspack/core'; +import { defineConfig } from '@rspack/cli'; export default defineConfig({ entry: { - main: "./index.js", + main: './index.js', }, module: { parser: { @@ -19,8 +19,8 @@ export default defineConfig({ splitChunks: { cacheGroups: { vendor: { - chunks: "all", - name: "vendor", + chunks: 'all', + name: 'vendor', test: /common/, }, }, diff --git a/rspack/case-sensitive-paths-webpack-plugin/rspack.config.mjs b/rspack/case-sensitive-paths-webpack-plugin/rspack.config.mjs index e7043b4a7..654836090 100644 --- a/rspack/case-sensitive-paths-webpack-plugin/rspack.config.mjs +++ b/rspack/case-sensitive-paths-webpack-plugin/rspack.config.mjs @@ -1,6 +1,6 @@ // @ts-check -import { defineConfig } from "@rspack/cli"; -import CaseSensitivePlugin from "case-sensitive-paths-webpack-plugin"; +import { defineConfig } from '@rspack/cli'; +import CaseSensitivePlugin from 'case-sensitive-paths-webpack-plugin'; export default defineConfig({ plugins: [new CaseSensitivePlugin()], diff --git a/rspack/code-splitting/rspack.config.mjs b/rspack/code-splitting/rspack.config.mjs index 9d01c1473..56d9d6c31 100644 --- a/rspack/code-splitting/rspack.config.mjs +++ b/rspack/code-splitting/rspack.config.mjs @@ -1,14 +1,14 @@ // @ts-check -import { rspack } from "@rspack/core"; -import { defineConfig } from "@rspack/cli"; +import { rspack } from '@rspack/core'; +import { defineConfig } from '@rspack/cli'; export default defineConfig({ entry: { - main: "./index.js", + main: './index.js', }, plugins: [ new rspack.HtmlRspackPlugin({ - template: "index.html", + template: 'index.html', }), ], }); diff --git a/rspack/css-chunking-plugin/src/index.js b/rspack/css-chunking-plugin/src/index.js index aadbe1c53..9ed7facad 100644 --- a/rspack/css-chunking-plugin/src/index.js +++ b/rspack/css-chunking-plugin/src/index.js @@ -1 +1 @@ -import("./page"); +import('./page'); diff --git a/rspack/css-chunking-plugin/src/page.js b/rspack/css-chunking-plugin/src/page.js index 1f5be84b3..b755b8881 100644 --- a/rspack/css-chunking-plugin/src/page.js +++ b/rspack/css-chunking-plugin/src/page.js @@ -1,8 +1,8 @@ -import "./styles/global.css"; -import "./styles/theme.css"; -import "./styles/component.css"; +import './styles/global.css'; +import './styles/theme.css'; +import './styles/component.css'; -document.addEventListener +document.addEventListener; const button = document.createElement('button'); button.className = 'btn'; button.style.width = '200px'; diff --git a/rspack/dll-reference/index.js b/rspack/dll-reference/index.js index 7d73ead58..7b4f638e8 100644 --- a/rspack/dll-reference/index.js +++ b/rspack/dll-reference/index.js @@ -1,14 +1,13 @@ import a from '../dll/a'; import alpha from '../dll/alpha'; -import beta from 'beta/beta' -import b from 'beta/b' -import c from 'beta/c' +import beta from 'beta/beta'; +import b from 'beta/b'; +import c from 'beta/c'; import _ from 'lodash'; - -console.log(a) -console.log(alpha) -console.log(beta) -console.log(b) -console.log(c) -console.log(_.sum([1, 2])) \ No newline at end of file +console.log(a); +console.log(alpha); +console.log(beta); +console.log(b); +console.log(c); +console.log(_.sum([1, 2])); diff --git a/rspack/dll/a.ts b/rspack/dll/a.ts index 75d7f0138..0ed5c3008 100644 --- a/rspack/dll/a.ts +++ b/rspack/dll/a.ts @@ -1 +1 @@ -export default "a"; \ No newline at end of file +export default 'a'; diff --git a/rspack/dll/alpha.ts b/rspack/dll/alpha.ts index ff18199df..f8a393e44 100644 --- a/rspack/dll/alpha.ts +++ b/rspack/dll/alpha.ts @@ -1 +1 @@ -export default "alpha"; \ No newline at end of file +export default 'alpha'; diff --git a/rspack/dll/b.ts b/rspack/dll/b.ts index 269116361..a68ac2819 100644 --- a/rspack/dll/b.ts +++ b/rspack/dll/b.ts @@ -1 +1 @@ -export default "b"; \ No newline at end of file +export default 'b'; diff --git a/rspack/dll/beta.ts b/rspack/dll/beta.ts index e8d73c23c..128ca615d 100644 --- a/rspack/dll/beta.ts +++ b/rspack/dll/beta.ts @@ -1 +1 @@ -export default "beta" \ No newline at end of file +export default 'beta'; diff --git a/rspack/dll/c.tsx b/rspack/dll/c.tsx index 22bbfcf91..58676847e 100644 --- a/rspack/dll/c.tsx +++ b/rspack/dll/c.tsx @@ -1 +1 @@ -export default "c.tsx"; +export default 'c.tsx'; diff --git a/rspack/emotion/src/index.jsx b/rspack/emotion/src/index.jsx index 8480579fb..9c4416a82 100644 --- a/rspack/emotion/src/index.jsx +++ b/rspack/emotion/src/index.jsx @@ -7,8 +7,8 @@ const App = () => { rspack
loves
@@ -26,8 +26,8 @@ const App = () => { className={cx( 'some-class', css` - color: yellow; - `, + color: yellow; + `, )} > emotion diff --git a/rspack/http-import/rspack.config.mjs b/rspack/http-import/rspack.config.mjs index 7e642bc27..9f4f61ed0 100644 --- a/rspack/http-import/rspack.config.mjs +++ b/rspack/http-import/rspack.config.mjs @@ -1,18 +1,18 @@ // @ts-check -import { rspack } from "@rspack/core"; -import { defineConfig } from "@rspack/cli"; +import { rspack } from '@rspack/core'; +import { defineConfig } from '@rspack/cli'; export default defineConfig({ - entry: "./src/index.js", + entry: './src/index.js', experiments: { - buildHttp:{ + buildHttp: { allowedUris: ['https://www.unpkg.com'], lockfileLocation: 'http-import.lock', - } + }, }, plugins: [ new rspack.HtmlRspackPlugin({ - template: "./index.html", + template: './index.html', }), ], }); diff --git a/rspack/javascript-api/src/index.ts b/rspack/javascript-api/src/index.ts index d587bb8c7..51418475a 100644 --- a/rspack/javascript-api/src/index.ts +++ b/rspack/javascript-api/src/index.ts @@ -1,8 +1,8 @@ import { rspack, RspackOptions, Stats } from '@rspack/core'; export default function build( - options: RspackOptions, - callback: (err: Error | null, stats: Stats) => void + options: RspackOptions, + callback: (err: Error | null, stats: Stats) => void, ): void { - rspack(options, callback); + rspack(options, callback); } diff --git a/rspack/react-ssr-esm/client/client.tsx b/rspack/react-ssr-esm/client/client.tsx index 266708695..9740c33aa 100644 --- a/rspack/react-ssr-esm/client/client.tsx +++ b/rspack/react-ssr-esm/client/client.tsx @@ -1,5 +1,5 @@ -import React from "react"; -import ReactDOM from "react-dom"; -import { App } from "./components/app"; +import React from 'react'; +import ReactDOM from 'react-dom'; +import { App } from './components/app'; -ReactDOM.hydrate(, document.getElementById("root")); +ReactDOM.hydrate(, document.getElementById('root')); diff --git a/rspack/react-ssr-esm/client/components/app.tsx b/rspack/react-ssr-esm/client/components/app.tsx index 92ee0f3c8..e932b2b4e 100644 --- a/rspack/react-ssr-esm/client/components/app.tsx +++ b/rspack/react-ssr-esm/client/components/app.tsx @@ -1,3 +1,3 @@ -import React from "react"; +import React from 'react'; export const App: React.FC = () =>

Rspack + React + SSR + ESM

; diff --git a/rspack/worker-inline/rspack.config.mjs b/rspack/worker-inline/rspack.config.mjs index 0b7830d9b..18225c1b2 100644 --- a/rspack/worker-inline/rspack.config.mjs +++ b/rspack/worker-inline/rspack.config.mjs @@ -1,21 +1,21 @@ // @ts-check -import { rspack } from "@rspack/core"; -import { defineConfig } from "@rspack/cli"; +import { rspack } from '@rspack/core'; +import { defineConfig } from '@rspack/cli'; export default defineConfig({ - entry: "./src/index.js", + entry: './src/index.js', plugins: [ new rspack.HtmlRspackPlugin({ - template: "./index.html", + template: './index.html', }), ], module: { rules: [ { test: /worker\.js$/, - loader: "worker-rspack-loader", + loader: 'worker-rspack-loader', options: { - inline: "no-fallback", + inline: 'no-fallback', }, }, ],