{ "globalEnv": ["CI", "BUILD_WITH_COVERAGE"], "globalPassThroughEnv": ["CODECOV_TOKEN", "COVERAGE_ENABLED", "SENTRY_AUTH_TOKEN"], "boundaries": { // `~icons/*` is a vite virtual module injected by unplugin-icons (design-system // icon barrel), not a real package — declare it so boundaries doesn't flag it. "implicitDependencies": ["~icons"] }, "tasks": { "clean": { "cache": false }, "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] }, "build:unchecked": { "dependsOn": ["^build:unchecked"], "outputs": ["dist/**"] }, "n8n-editor-ui#build": { "dependsOn": ["^build"], "outputs": ["dist/**"], "env": ["RELEASE"] }, "n8n-editor-ui#build:unchecked": { "dependsOn": ["^build:unchecked"], "outputs": ["dist/**"], "env": ["RELEASE"] }, // Both emit declarations only under `RELEASE`, so `RELEASE` has to be part of the cache // key. Without it a cached non-release `dist`, which has no `.d.ts`, would be restored // onto a release build and ship a package with no types. "@n8n/design-system#build": { "dependsOn": ["^build"], "outputs": ["dist/**"], "env": ["RELEASE"] }, "@n8n/design-system#build:unchecked": { "dependsOn": ["^build:unchecked"], "outputs": ["dist/**"], "env": ["RELEASE"] }, "@n8n/chat#build": { "dependsOn": ["^build"], "outputs": ["dist/**"], "env": ["RELEASE"] }, "@n8n/chat#build:unchecked": { "dependsOn": ["^build:unchecked"], "outputs": ["dist/**"], "env": ["RELEASE"] }, "typecheck": { "dependsOn": ["^build"] }, "format": {}, "format:check": {}, "lint": { "dependsOn": ["^build", "@n8n/eslint-config#build"] }, // Oxlint packages run Oxlint instead of ESLint, so // they need the oxlint layer built, not the ESLint one. "@n8n/ai-node-sdk#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/agents#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/ai-utilities#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/ai-workflow-builder#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/api-types#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/backend-common#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/backend-network#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/backend-services#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/backend-test-utils#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/blob-storage#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/chat-hub#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/cli#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/code-health#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/client-oauth2#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/codemirror-lang#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/codemirror-lang-sql#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/computer-use#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/config#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/constants#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/crdt#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/db#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/decorators#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/di#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/engine#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/extension-sdk#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/errors#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/imap#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/inbound-auth#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/instance-ai#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/json-schema-to-zod#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/local-gateway#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/mcp-browser#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/mcp-browser-extension#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/node-cli#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/node-engine-compatibility#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/n8n-extension-insights#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/n8n-benchmark#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/playwright-janitor#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/permissions#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/rules-engine#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/scheduler#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/syslog-client#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/task-runner#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/tournament#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/telemetry#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/test-impact#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/utils#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/workflow-sdk#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "n8n-core#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "n8n-containers#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "n8n-playwright#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "n8n-workflow#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "n8n#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, // The n8n-nodes-base lint script also validates load-options methods // against dist/methods/*.json, which only its own build emits. "n8n-nodes-base#lint": { "dependsOn": ["^build", "build", "@n8n/eslint-config#build"] }, "lint:fix": {}, "lint:styles": { "dependsOn": ["@n8n/stylelint-config#build"] }, "lint:styles:fix": { "dependsOn": ["@n8n/stylelint-config#build"] }, "test": { "dependsOn": ["^build", "build"], "outputs": ["coverage/**", "*.xml"], "env": ["COVERAGE_ENABLED", "COVERAGE_SCOPE"], "passThroughEnv": ["CHANGED_FILES"] }, "test:changed": { "dependsOn": ["^build", "build"], "outputs": ["coverage/**", "*.xml"], "env": ["COVERAGE_ENABLED", "CHANGED_FILES"], "cache": false }, "test:unit": { "dependsOn": ["^build", "build"], "outputs": ["coverage/**", "*.xml"], "env": ["COVERAGE_ENABLED", "COVERAGE_SCOPE"], "passThroughEnv": ["CHANGED_FILES"] }, "test:unit:changed": { "dependsOn": ["^build", "build"], "outputs": ["coverage/**", "*.xml"], "env": ["COVERAGE_ENABLED", "CHANGED_FILES"], "cache": false }, "test:integration": { "dependsOn": ["^build", "build"], "outputs": ["coverage/**", "*.xml"], "env": ["COVERAGE_ENABLED", "COVERAGE_SCOPE"], "passThroughEnv": ["CHANGED_FILES"] }, "test:integration:changed": { "dependsOn": ["^build", "build"], "outputs": ["coverage/**", "*.xml"], "env": ["COVERAGE_ENABLED", "CHANGED_FILES"], "cache": false }, "watch": { "cache": false, "persistent": true }, "dev": { "cache": false, "persistent": true }, "install-browsers": { "cache": true, "inputs": [".playwright-version"], "outputs": [".playwright-browsers/**"] }, "test:container:standard": { "env": ["E2E_TESTS"], "cache": false } } }