mirror of
https://github.com/hansjone/netx.git
synced 2026-10-15 01:00:53 +08:00
Structure
- pages/ -> features/<domain>/{Page, components, hooks, lib}; 95 files moved,
333 imports rewritten, verified with tsc.
- services/api.ts -> services/api/<domain>.ts (250 exports preserved),
types.ts -> types/<domain>.ts, i18n zh/en -> locales/<lang>/<namespace>.ts
(2696 messages deep-equal before/after).
- ESLint rule: shared layers must not import features/.
Styles
- index.css (16k lines) split losslessly into styles/{base,layout,components,
pages,legacy,theme}; compiled CSS was byte-identical before tokenizing.
- ~930 hard-coded colors replaced by --nx-* tokens (theme/tokens.css); WebCRT
off-palette colors unified; fixed dark-on-dark text introduced by mapping.
- theme/theme.css: modern blue design language (rounded shapes, gradients,
unified buttons/fields/tables/modals), form-grid alignment fix, flat nav list
without tree indent, soft selected state instead of left accent bar.
Docs: WEB.md documents code structure and style rules.
Not touched: the large Biz*/Webcrt/Topology page components (to be split later).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
import js from '@eslint/js'
|
||
import globals from 'globals'
|
||
import reactHooks from 'eslint-plugin-react-hooks'
|
||
import reactRefresh from 'eslint-plugin-react-refresh'
|
||
import tseslint from 'typescript-eslint'
|
||
import { defineConfig, globalIgnores } from 'eslint/config'
|
||
|
||
export default defineConfig([
|
||
globalIgnores(['dist']),
|
||
{
|
||
files: ['**/*.{ts,tsx}'],
|
||
extends: [
|
||
js.configs.recommended,
|
||
tseslint.configs.recommended,
|
||
reactHooks.configs.flat.recommended,
|
||
reactRefresh.configs.vite,
|
||
],
|
||
languageOptions: {
|
||
globals: globals.browser,
|
||
},
|
||
},
|
||
{
|
||
// Dependency direction: features -> shared, never the reverse (see WEB.md "代码结构").
|
||
files: ['src/{components,hooks,utils,services,i18n,types,constants}/**/*.{ts,tsx}'],
|
||
rules: {
|
||
'no-restricted-imports': [
|
||
'error',
|
||
{
|
||
patterns: [
|
||
{
|
||
group: ['**/features/**'],
|
||
message: '共享层不得依赖 features/(依赖方向:features → 共享层)。把共用部分下沉到共享层。',
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
},
|
||
])
|