New Node Creation Tool

New Node Creation Tool

We’ve released a new node creation tool to make it easier to build and publish your own n8n nodes.

Quick start

To get started run npm create @n8n/node
This will guide you through a few setup questions and create a ready-to-use project to help you get started quickly.

Features

  • Supports hot reload while developing the node with npm run dev
  • Includes a commmand to help with releasing to NPM with npm run release
  • Updated linting rules with npm run lint
  • Provides both declarative and programmatic node examples

Documentation

You can find more documentation here: node-cli Documentation

There will be more added to the docs site soon

Feedback and Next Steps

We’re still working on improving this tool and would love your ideas on how to make it better.
One of the areas we’re already exploring is adding OpenAPI / Swagger support to automate more of the process.

If you use this tool and run into any issues, or have suggestions, please send an email to [email protected].

48 Likes

Good Morning,

that’s a good news.
I didn’t know about the npm run dev command. How do I connect my development folder to the correct n8n container? do I have to mount the folder into the docker’s `node_modules`?

If you were to use a container you would need to mount the folder to /home/node/.n8n/nodes or /home/node/.n8n/custom

Hey there,

first of all, thank you for this new tool, I think thats a real good step in the right direction!

This might be a stupid question, however what is the preferred package manager here? Your announcement uses npm while the docs use pnpm. At least on my end, using it with pnpmdoesn’t work, it just exits with a non-zero exit code

➜  NodeProjects nvm use --lts
Now using node v22.13.1 (npm v10.9.2)
➜  NodeProjects pnpm create @n8n/node
➜  NodeProjects echo $?
1

Doing the exact same thing using npm works fine:

➜  NodeProjects npm create @n8n/node 

> npx
> create-n8n-node

┌   npm create @n8n/node 
│
◆  What is your node called?
│  n8n-nodes-example
└
...

Also, another suggestion - I used the programmatic node example, the template does not include a .gitignore. May I suggest adding a .gitignore, for example based on this community maintained repository?

And, third and last feedback: It would probably make sense to add the watcher package to devDependencies:

[n8n] Cannot find module '@parcel/watcher'
[n8n] Require stack:
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/load-nodes-and-credentials.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/node-types.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/workflows/workflow-execution.service.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/execution-lifecycle/execute-error-workflow.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/execution-lifecycle/execution-lifecycle-hooks.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/executions/execution-recovery.service.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/eventbus/message-event-bus/message-event-bus.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/commands/base-command.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/commands/start.js
[n8n] - /Users/.../.npm/_npx/a8a7eec953f1f314/node_modules/n8n/dist/command-registry.js
[n8n] Editor is now accessible via:
[n8n] http://localhost:5678
2 Likes

Hey @Wazaari thanks for trying out the CLI and providing feedback!

The tool is supposed to work with any package manager. While we use pnpm internally, you can use whichever one you prefer. Fair point on mixing pnpm and npm in our docs, I’ll align them.

Could you try running this command to make sure you’re using the latest version of the CLI?

pnpm create @n8n/node@latest

If it still doesn’t work, could you share your OS, shell and pnpm versions? thanks :folded_hands:

In the latest version (0.4.0) there should be a .gitignorein all the templates, running with @latest should help here.

The last problem with @parcel/watcher was a bug in n8n itself, and is fixed in 1.111.0 which is currently beta, and will become latest next week.

2 Likes

Good job! What I’m missing is a default gh action to auto publish my package. I like that one has been included to check lint and build, but given that the whole publish flow is now covered by the new tool, why not extend the Gh Action until the release end?

I want my packages to get the signed and verified “provenance” in NPM.

Another issue: the build and publish are too eager and end up pushing way more files than they should.

Here is a new 50kb npm package turned into 500kb as result of that: n8n-nodes-smartcache - npm

Also, the tagging system can’t be used in monorepos.
A better solution would be to name each version prefixed by the pkg name: n8n-nodes-my-pkg-v1.0.0 rather than just v1.0.0.

One can’t simply expect an n8n node to be the only pkg in existence.

1 Like

Hi @elsmr!
First, thanks a lot for creating this package! :clap:

I am currently testing this as well and ran into similar problems as @Wazaari.

  • Running pnpm create @n8n/node@latest also simply exits with error code 1.
  • Despite the .gitignore-file existing in the repository, it also does not show up when running npm create @n8n/node@latest (which uses v0.4.0).

I am currently running:

  • MacOS 15.6.1
  • zsh 5.9 (arm64-apple-darwin24.0)
  • node v24.7.0
  • npm 11.5.1
  • pnpm 10.15.0

that’s amazing!

Are there any plans to also create a UI interface for this?