n8n Guide de Référence Rapide
📚 Documentation Complète:
- Général:
/AGENTS.md- Architecture, commandes, workflows - Frontend:
/packages/frontend/AGENTS.md- Variables CSS, timing
Utilisez cette skill quand vous avez besoin de rappels rapides sur les motifs critiques.
Règles Critiques (À Respecter)
TypeScript:
- Ne jamais
any→ utiliserunknown - Préférer
satisfiesàas(sauf tests) - Types partagés dans
@n8n/api-types
Gestion des Erreurs:
import { UnexpectedError } from 'n8n-workflow';
throw new UnexpectedError('message', { extra: { context } });
// N'UTILISEZ PAS ApplicationError (deprecated)
Frontend:
- Vue 3 Composition API (
<script setup lang="ts">) - Variables CSS (jamais hardcoder px) - voir
/packages/frontend/AGENTS.md - Tout texte via i18n (
$t('key')) data-testidpour E2E (une seule valeur, pas d'espaces)
Backend:
- Controller → Service → Repository
- Injection de dépendances via
@n8n/di - Config via
@n8n/config - Schémas Zod pour validation
Tests:
- Vitest (unitaires), Playwright (E2E)
- Mocker les dépendances externes
- Travailler depuis le répertoire package:
pushd packages/cli && pnpm test
Base de Données:
- SQLite/PostgreSQL uniquement (DB app)
- Exception: Nœuds DB (MySQL Node, etc.) peuvent utiliser des fonctionnalités spécifiques à la DB
Commandes:
pnpm build > build.log 2>&1 # Toujours rediriger
pnpm typecheck # Avant commit
pnpm lint # Avant commit
Packages Clés
| Package | Objectif |
|---|---|
packages/cli |
API Backend |
packages/frontend/editor-ui |
Frontend Vue 3 |
packages/@n8n/api-types |
Types partagés |
packages/@n8n/db |
Entités TypeORM |
packages/workflow |
Interfaces cœur |
Motifs Courants
Store Pinia:
import { STORES } from '@n8n/stores';
export const useMyStore = defineStore(STORES.MY_STORE, () => {
const state = shallowRef([]);
return { state };
});
Composant Vue:
<script setup lang="ts">
type Props = { title: string };
const props = defineProps<Props>();
</script>
Service:
import { Service } from '@n8n/di';
import { Config } from '@n8n/config';
@Service()
export class MyService {
constructor(private readonly config: Config) {}
}
📖 Besoin de plus de détails? Lisez /AGENTS.md et /packages/frontend/AGENTS.md