Back to N8n

@n8n/eslint-plugin-community-nodes

packages/@n8n/eslint-plugin-community-nodes/README.md

1.37.25.1 KB
Original Source

@n8n/eslint-plugin-community-nodes

ESLint plugin for linting n8n community node packages to ensure consistency and best practices.

Install

sh
npm install --save-dev eslint @n8n/eslint-plugin-community-nodes

**Requires ESLint >=9 and flat config

Usage

See the ESLint docs for more information about extending config files.

This plugin exports a recommended config that enforces good practices.

js
import { n8nCommunityNodesPlugin } from '@n8n/eslint-plugin-community-nodes';

export default [
		// …
		n8nCommunityNodesPlugin.configs.recommended,
		{
			rules: {
				'@n8n/community-nodes/node-usable-as-tool': 'warn',
			},
		},
];

Rules

<!-- begin auto-generated rules list -->

💼 Configurations enabled in.
⚠️ Configurations set to warn in.
✅ Set in the recommended configuration.
☑️ Set in the recommendedWithoutN8nCloudSupport configuration.
🔧 Automatically fixable by the --fix CLI option.
💡 Manually fixable by editor suggestions.

Name                            Description💼⚠️🔧💡
ai-node-package-jsonEnforce consistency between n8n.aiNodeSdkVersion and ai-node-sdk peer dependency in community node packages✅ ☑️
credential-documentation-urlEnforce valid credential documentationUrl format (URL or lowercase alphanumeric slug)✅ ☑️🔧
credential-password-fieldEnsure credential fields with sensitive names have typeOptions.password = true✅ ☑️🔧
credential-test-requiredEnsure credentials have a credential test✅ ☑️💡
icon-validationValidate node and credential icon files exist, are SVG format, and light/dark icons are different✅ ☑️💡
no-credential-reusePrevent credential re-use security issues by ensuring nodes only reference credentials from the same package✅ ☑️💡
no-deprecated-workflow-functionsDisallow usage of deprecated functions and types from n8n-workflow package✅ ☑️💡
no-http-request-with-manual-authDisallow this.helpers.httpRequest() in functions that call this.getCredentials(). Use this.helpers.httpRequestWithAuthentication() instead.✅ ☑️
no-restricted-globalsDisallow usage of restricted global variables in community nodes.
no-restricted-importsDisallow usage of restricted imports in community nodes.
node-usable-as-toolEnsure node classes have usableAsTool property✅ ☑️🔧
package-name-conventionEnforce correct package naming convention for n8n community nodes✅ ☑️💡
resource-operation-patternEnforce proper resource/operation pattern for better UX in n8n nodes✅ ☑️
<!-- end auto-generated rules list -->