feat: enforce @/ alias for imports and fix all relative parent imports (#16787)
## Summary This PR enforces the use of `@/` alias for imports instead of relative parent imports (`../`). ## Changes ### ESLint Configuration - Added `no-restricted-imports` pattern in `eslint.config.react.mjs` to block `../*` imports with the message "Relative parent imports are not allowed. Use @/ alias instead." - Removed the non-working `import/no-relative-parent-imports` rule (doesn't work properly in ESLint flat config) ### VS Code Settings - Added `javascript.preferences.importModuleSpecifier: non-relative` to `.vscode/settings.json` (TypeScript setting was already there) ### Code Fixes - Fixed **941 relative parent imports** across **706 files** in `packages/twenty-front` - All `../` imports converted to use `@/` alias ## Why - Consistent import style across the codebase - Easier to move files without breaking imports - Better IDE support for auto-imports - Clearer understanding of where imports come from
This commit is contained in:
@@ -12,7 +12,7 @@ import {
|
||||
isRouteParams,
|
||||
} from '~/testing/decorators/PageDecorator';
|
||||
|
||||
import { ComponentStorybookLayout } from '../ComponentStorybookLayout';
|
||||
import { ComponentStorybookLayout } from '~/testing/ComponentStorybookLayout';
|
||||
|
||||
interface StrictArgs {
|
||||
[name: string]: unknown;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { i18n } from '@lingui/core';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import { type Decorator } from '@storybook/react';
|
||||
import { messages as enMessages } from '../../locales/generated/en';
|
||||
import { messages as enMessages } from '~/locales/generated/en';
|
||||
import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
||||
|
||||
i18n.load({
|
||||
|
||||
@@ -33,7 +33,7 @@ import { I18nProvider } from '@lingui/react';
|
||||
import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
||||
import { IconsProvider } from 'twenty-ui/display';
|
||||
import { dynamicActivate } from '~/utils/i18n/dynamicActivate';
|
||||
import { FullHeightStorybookLayout } from '../FullHeightStorybookLayout';
|
||||
import { FullHeightStorybookLayout } from '~/testing/FullHeightStorybookLayout';
|
||||
|
||||
export type PageDecoratorArgs = {
|
||||
routePath: string;
|
||||
|
||||
@@ -4,7 +4,7 @@ import { RecoilRoot } from 'recoil';
|
||||
|
||||
import { ApolloCoreClientMockedProvider } from '@/object-metadata/hooks/__mocks__/ApolloCoreClientMockedProvider';
|
||||
|
||||
import { mockedApolloClient } from '../mockedApolloClient';
|
||||
import { mockedApolloClient } from '~/testing/mockedApolloClient';
|
||||
|
||||
export const RootDecorator: Decorator = (Story, context) => {
|
||||
const { parameters } = context;
|
||||
|
||||
Reference in New Issue
Block a user