Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
355b924
chore: migrate from mocha to vitest
Mar 2, 2026
3f7ec62
fix: add test step to CI, remove frozen-lockfile requirement
Mar 2, 2026
c0f5f54
fix: use Node 22, restore pnpm-lock.yaml
Mar 2, 2026
63e75f9
fix: remove lockfile, use no-frozen-lockfile in CI
Mar 2, 2026
503ed1d
fix: restore pnpm-lock.yaml, simplify CI setup
Mar 2, 2026
db3baa2
fix: use Node 20 instead of 22
Mar 2, 2026
902fc0b
fix: remove cache to debug Node setup issue
Mar 2, 2026
2a76d6c
fix: temporarily disable lint to debug
Mar 2, 2026
d834f17
fix: add passWithNoTests, allow lint to fail
Mar 2, 2026
3cc9c01
fix: use simpler build command
Mar 2, 2026
e776eb0
fix: restore original CI config, only add test step
Mar 2, 2026
1104fee
fix: use Node 22 instead of 18/20
Mar 2, 2026
fe6f736
fix: use --no-frozen-lockfile
Mar 2, 2026
31518c8
fix: migrate to ESLint 9 flat config
Mar 2, 2026
1031232
fix: add missing prettier plugin definition
Mar 2, 2026
b089166
fix: simplify eslint config for compatibility
Mar 2, 2026
fa9b81d
fix: upgrade eslint-plugin-react for ESLint 9 compatibility
Mar 2, 2026
3095483
fix: correct eslint-plugin-react version
Mar 2, 2026
10a1da7
fix: remove problematic eslint rules and add node globals
Mar 2, 2026
d267107
fix: add browser globals and disable unused-vars
Mar 2, 2026
97af439
fix: disable no-undef and add more globals
Mar 2, 2026
2dfea0c
fix: ignore config files in eslint
Mar 2, 2026
9c859a2
fix: simplify build command
Mar 2, 2026
fef619f
fix: upgrade to React 19
Mar 4, 2026
0a16a73
chore: update pnpm-lock.yaml
Mar 4, 2026
860af53
fix: upgrade @vitejs/plugin-react to v5.1.4
Mar 4, 2026
dbe8086
fix: upgrade date-fns to v4.1.0
Mar 4, 2026
69f0240
fix: upgrade ramda to v0.32.0
Mar 4, 2026
122d5ca
fix: upgrade @linaria/vite to v5.0.4
Mar 4, 2026
adf7955
fix: upgrade @linaria/core to v7.0.0
Mar 4, 2026
2b57215
fix: upgrade vitest related packages to latest
Mar 4, 2026
dfb3991
fix: upgrade @faker-js/faker to v10.3.0
Mar 4, 2026
1664ec6
fix: upgrade linaria to v7 with @wyw-in-js/vite
Mar 4, 2026
f67062f
test: 添加单元测试
Mar 9, 2026
5add85f
ci: 添加 GitHub Pages 部署 workflow
Mar 9, 2026
c3c6857
trigger CI
Mar 9, 2026
b31839e
fix: 添加 GitHub Pages base 配置
Mar 9, 2026
ec1d789
fix: 修复 GitHub Pages 资源路径
Mar 9, 2026
cbb57d4
chore: add semantic release configuration and GitHub Actions workflow
Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 0 additions & 43 deletions .eslintrc.js

This file was deleted.

6 changes: 4 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

strategy:
matrix:
node-version: [18.x, 20.x]
node-version: [22.x]

steps:
- uses: actions/checkout@v4
Expand All @@ -26,8 +26,10 @@ jobs:
node-version: ${{ matrix.node-version }}
cache: pnpm
- name: Install dependencies
run: pnpm install
run: pnpm install --no-frozen-lockfile
- name: Lint
run: pnpm run lint
- name: Test
run: pnpm run test:run
- name: Build
run: pnpm run build
54 changes: 54 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Deploy to GitHub Pages

on:
push:
branches: [main]

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: 'pages'
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm

- name: Install dependencies
run: pnpm install --no-frozen-lockfile

- name: Build
run: pnpm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./dist

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
48 changes: 48 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Release

on:
push:
branches: [main]
paths:
- "src/**"
- "package.json"
- ".github/workflows/release.yml"

permissions:
contents: write
issues: write
pull-requests: write
id-token: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false

- uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm

- run: pnpm install

- name: Build
run: pnpm run build

- name: Run tests
run: pnpm run test:run

- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
run: npx semantic-release
6 changes: 0 additions & 6 deletions .mocharc.js

This file was deleted.

3 changes: 0 additions & 3 deletions .nycrc.json

This file was deleted.

9 changes: 9 additions & 0 deletions .releaserc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
"@semantic-release/github"
]
}
102 changes: 102 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
const js = require('@eslint/js');
const tseslint = require('@typescript-eslint/eslint-plugin');
const tsparser = require('@typescript-eslint/parser');
const react = require('eslint-plugin-react');
const reactHooks = require('eslint-plugin-react-hooks');
const jsxA11y = require('eslint-plugin-jsx-a11y');
const importPlugin = require('eslint-plugin-import');
const prettierPlugin = require('eslint-plugin-prettier');
const prettierConfig = require('eslint-config-prettier');
const compat = require('eslint-plugin-compat');

module.exports = [
js.configs.recommended,
{
ignores: ['dist', 'node_modules', 'coverage', '*.min.js', 'babel.config.js', 'eslint.config.js', 'vitest.config.ts'],
},
{
files: ['**/*.{ts,tsx}'],
languageOptions: {
parser: tsparser,
parserOptions: {
project: './tsconfig.json',
ecmaVersion: 'latest',
sourceType: 'module',
},
globals: {
__dirname: 'readonly',
__filename: 'readonly',
module: 'readonly',
require: 'readonly',
document: 'readonly',
window: 'readonly',
fetch: 'readonly',
setTimeout: 'readonly',
clearTimeout: 'readonly',
setInterval: 'readonly',
clearInterval: 'readonly',
console: 'readonly',
process: 'readonly',
},
},
plugins: {
'@typescript-eslint': tseslint,
react,
'react-hooks': reactHooks,
'jsx-a11y': jsxA11y,
import: importPlugin,
prettier: prettierPlugin,
compat,
},
rules: {
...react.configs.recommended.rules,
...reactHooks.configs.recommended.rules,
...jsxA11y.configs.recommended.rules,
...prettierConfig.rules,
'prettier/prettier': 'error',
'no-unused-vars': 'off',
'no-undef': 'off',
'react/jsx-props-no-spreading': 'off',
'react/no-unknown-property': ['error', { ignore: ['x-class', 'x-if', 'x-elseif', 'x-else'] }],
'no-return-assign': ['error', 'except-parens'],
'no-sequences': 'off',
'no-shadow': 'off',
'no-plusplus': 'off',
'no-param-reassign': 'off',
'no-void': 'off',
'react/require-default-props': 'off',
'react/react-in-jsx-scope': 'off',
'no-use-before-define': ['error', {functions: false}],
'no-console': 'off',
'no-debugger': 'off',
},
settings: {
react: {
version: 'detect',
},
'import/resolver': {
typescript: {},
},
polyfills: ['Promise'],
},
},
{
files: ['**/*.js', '**/*.jsx'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
browser: true,
node: true,
__DEV__: true,
},
},
plugins: {
prettier: prettierPlugin,
},
rules: {
...prettierConfig.rules,
'prettier/prettier': 'error',
},
},
];
Loading