diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 0848e636..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,22 +0,0 @@ -const base = require('@umijs/fabric/dist/eslint'); - -module.exports = { - ...base, - rules: { - ...base.rules, - 'arrow-parens': 0, - 'react/no-array-index-key': 0, - 'react/sort-comp': 0, - '@typescript-eslint/no-explicit-any': 1, - '@typescript-eslint/no-empty-interface': 1, - '@typescript-eslint/no-inferrable-types': 0, - 'react/no-find-dom-node': 1, - 'react/require-default-props': 0, - 'no-confusing-arrow': 0, - 'import/no-named-as-default-member': 0, - 'jsx-a11y/label-has-for': 0, - 'jsx-a11y/label-has-associated-control': 0, - 'jsx-a11y/control-has-associated-label': 0, - 'jsx-a11y/alt-text': 0, - }, -}; diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3b730ef9..5e6c7faa 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,6 +8,10 @@ updates: time: '21:00' timezone: Asia/Shanghai open-pull-requests-limit: 10 + groups: + npm-dependencies: + patterns: + - '*' - package-ecosystem: github-actions directory: '/' @@ -17,3 +21,7 @@ updates: time: '21:00' timezone: Asia/Shanghai open-pull-requests-limit: 10 + groups: + github-actions: + patterns: + - '*' diff --git a/README.md b/README.md index 2a2cde2f..add7d03c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
Part of the Ant Design ecosystem.
Part of the Ant Design ecosystem.
🖼️ Image display, fallback, and preview tooling for React.
diff --git a/README.zh-CN.md b/README.zh-CN.md index e512d438..12cfa841 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,6 +1,6 @@
Ant Design 生态的一部分。
🖼️ React 图片预览组件,支持预览组、缩放、旋转和自定义工具栏。
@@ -72,15 +72,15 @@ npm start
### Image
-| 参数 | 说明 | 类型 | 默认值 |
-| --- | --- | --- | --- |
-| fallback | 加载失败时使用的图片源 | string | - |
-| placeholder | 图片加载前的占位内容 | boolean \| `React.ReactElement` | - |
-| prefixCls | 组件 className 前缀 | string | `rc-image` |
-| preview | 是否以及如何显示预览 | boolean \| `PreviewConfig` | true |
-| previewPrefixCls | 预览 className 前缀 | string | `rc-image-preview` |
-| src | 图片地址 | string | - |
-| onError | 图片加载失败时的回调 | `(event: Event) => void` | - |
+| 参数 | 说明 | 类型 | 默认值 |
+| ---------------- | ---------------------- | ------------------------------- | ------------------ |
+| fallback | 加载失败时使用的图片源 | string | - |
+| placeholder | 图片加载前的占位内容 | boolean \| `React.ReactElement` | - |
+| prefixCls | 组件 className 前缀 | string | `rc-image` |
+| preview | 是否以及如何显示预览 | boolean \| `PreviewConfig` | true |
+| previewPrefixCls | 预览 className 前缀 | string | `rc-image-preview` |
+| src | 图片地址 | string | - |
+| onError | 图片加载失败时的回调 | `(event: Event) => void` | - |
也支持原生图片属性。
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 00000000..40f08ec9
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,115 @@
+import js from '@eslint/js';
+import { defineConfig } from 'eslint/config';
+import { dirname } from 'node:path';
+import { fileURLToPath } from 'node:url';
+import prettier from 'eslint-config-prettier';
+import jest from 'eslint-plugin-jest';
+import react from 'eslint-plugin-react';
+import reactHooks from 'eslint-plugin-react-hooks';
+import globals from 'globals';
+import tseslint from 'typescript-eslint';
+
+const tsconfigRootDir = dirname(fileURLToPath(import.meta.url));
+
+export default defineConfig([
+ {
+ plugins: {
+ '@typescript-eslint': tseslint.plugin,
+ },
+ },
+ {
+ linterOptions: {
+ reportUnusedDisableDirectives: 'warn',
+ },
+ },
+ {
+ ignores: [
+ 'node_modules/',
+ 'coverage/',
+ 'es/',
+ 'lib/',
+ 'dist/',
+ 'docs-dist/',
+ '.docs-dist/',
+ '.dumi/',
+ '.doc/',
+ '.vercel/',
+ ],
+ },
+ {
+ files: ['**/*.{js,jsx,ts,tsx}'],
+ extends: [
+ js.configs.recommended,
+ react.configs.flat.recommended,
+ react.configs.flat['jsx-runtime'],
+ prettier,
+ ],
+ plugins: {
+ 'react-hooks': reactHooks,
+ },
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ ...globals.node,
+ },
+ },
+ settings: {
+ react: {
+ version: 'detect',
+ },
+ },
+ rules: {
+ 'no-async-promise-executor': 'off',
+ 'no-empty-pattern': 'off',
+ 'no-irregular-whitespace': 'off',
+ 'no-prototype-builtins': 'off',
+ 'no-useless-escape': 'off',
+ 'no-extra-boolean-cast': 'off',
+ 'no-undef': 'off',
+ 'no-unused-vars': 'off',
+ 'react/no-find-dom-node': 'off',
+ 'react/display-name': 'off',
+ 'react/no-unknown-property': 'off',
+ 'react/prop-types': 'off',
+ 'react-hooks/exhaustive-deps': 'warn',
+ 'react-hooks/rules-of-hooks': 'error',
+ },
+ },
+ {
+ files: ['**/*.{ts,tsx}'],
+ extends: [...tseslint.configs.recommended],
+ rules: {
+ '@typescript-eslint/ban-ts-comment': 'off',
+ '@typescript-eslint/no-empty-object-type': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-unsafe-function-type': 'off',
+ '@typescript-eslint/no-unnecessary-type-constraint': 'off',
+ '@typescript-eslint/no-unused-vars': 'off',
+ },
+ },
+ {
+ files: ['src/**/*.{ts,tsx}'],
+ languageOptions: {
+ parserOptions: {
+ projectService: true,
+ tsconfigRootDir,
+ },
+ },
+ },
+ {
+ files: ['tests/**/*.{js,jsx,ts,tsx}', '**/*.{test,spec}.{js,jsx,ts,tsx}'],
+ extends: [jest.configs['flat/recommended']],
+ rules: {
+ 'jest/no-disabled-tests': 'off',
+ 'jest/no-done-callback': 'off',
+ 'jest/no-identical-title': 'off',
+ 'jest/expect-expect': 'off',
+ 'jest/no-alias-methods': 'off',
+ 'jest/no-conditional-expect': 'off',
+ 'jest/no-export': 'off',
+ 'jest/no-standalone-expect': 'off',
+ 'jest/valid-expect': 'off',
+ 'jest/valid-title': 'off',
+ },
+ },
+]);
diff --git a/global.d.ts b/global.d.ts
new file mode 100644
index 00000000..e0bd355c
--- /dev/null
+++ b/global.d.ts
@@ -0,0 +1,11 @@
+///