eslint.config.mjs (48 lines of code) (raw):
import tseslint from 'typescript-eslint';
import eslintJs from '@eslint/js';
import { n8nCommunityNodesPlugin } from '@n8n/eslint-plugin-community-nodes';
import n8nNodesBase from 'eslint-plugin-n8n-nodes-base';
export default tseslint.config(
{ ignores: ['dist', 'node_modules'] },
// Base TypeScript rules
{
files: ['**/*.ts'],
extends: [
eslintJs.configs.recommended,
...tseslint.configs.recommended,
],
rules: {
'prefer-spread': 'off',
'no-console': 'error',
},
},
// n8n Cloud compatibility rules (strict mode)
{
files: ['**/*.ts'],
...n8nCommunityNodesPlugin.configs.recommended,
},
// n8n credential rules
{
files: ['credentials/**/*.ts'],
plugins: { 'n8n-nodes-base': n8nNodesBase },
rules: {
...n8nNodesBase.configs.credentials.rules,
},
},
// n8n node rules
{
files: ['nodes/**/*.ts'],
plugins: { 'n8n-nodes-base': n8nNodesBase },
rules: {
...n8nNodesBase.configs.nodes.rules,
},
},
// Test files - disable Cloud restrictions
{
files: ['__tests__/**/*.ts', '**/*.test.ts', '**/*.spec.ts'],
rules: {
'@n8n/community-nodes/no-restricted-imports': 'off',
'@n8n/community-nodes/no-restricted-globals': 'off',
},
},
);