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
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].
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`?
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:
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
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.
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.
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.